Autor Thema: text  (Gelesen 9702 mal)

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« am: 13. April 2007, 16:57 »
da ich zum osdev zurückkehren möchte schreibe ich meinen kernel ganz neu. nun bin ich also wieder im RM 80*25 zeichen und will nachdem text in s/w funktioniert auch wieder farbe. nun ist das problem:

0xB8000 ist die stelle links oben. dazu addiert man 80*y + x um eine andere position zu erreichen. wenn ich eins nach rechts will muss ich eins addieren. nur dann landet der buchstabe in der mitte der zeile. wieso?

edit: bzw. bei 0xB8001 ist er garnicht zu sehn, bei 0xB801 ist er in der mitte^^
edit2: nein, nicht in der mitte, an der 9. stelle :D
« Letzte Änderung: 13. April 2007, 17:11 von Coffee »

blitzmaster

  • Beiträge: 77
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 13. April 2007, 17:13 »
wenn du nach rechts willst, musst du doch 2 addieren, da ja ein attribut - byte für jede stelle existiert
als
(80*y+x)*2
A / OS PM - THE operating system of the future

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 13. April 2007, 17:30 »
jetz is der buchstabe anner 17. stelle  :|

blitzmaster

  • Beiträge: 77
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 13. April 2007, 17:58 »
bei welchem offset
bei 0xB8002 ?
A / OS PM - THE operating system of the future

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 13. April 2007, 18:01 »
bei welchem offset
bei 0xB8002 ?
0B802h. bei 0B8002h is nix zu sehn (ich dachte die eine null wäre mein fehler :D )

blitzmaster

  • Beiträge: 77
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 13. April 2007, 18:06 »
dann probier mal
mov ah, 0x07
mov al, [DasZeichenDasDuAusgebenMöchtest]
mov ax, [0xB8002]
dann müsste es an der zweite Stelle grau auf weiß erscheinen.
A / OS PM - THE operating system of the future

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 13. April 2007, 18:14 »
hehe...ich würde das noch vertauschen: mov [0xb8000],ax

Greez

blitzmaster

  • Beiträge: 77
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 13. April 2007, 18:19 »
will er nicht an die zweite stelle?
edit: mov ax [0xB8002] stimmt auch nicht, ich gebs zu ^^
A / OS PM - THE operating system of the future

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 13. April 2007, 18:25 »
geht nich... hab auch schon probiert die werte in ' zu setzen^^ ich benutze übrigens NASM^^

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 13. April 2007, 18:27 »
bisheriger code:

mov bx,0B801h
mov es,bx
 mov byte [es:0],'1'
mov byte [es:1],1Fh
sry for doppelpost^^

blitzmaster

  • Beiträge: 77
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 13. April 2007, 18:38 »
B801h liegt nicht im Graphik - Speicher
B8000h - hier beginnt der Graphik - Speicher
mach aus dem
mov bx, 0B801hein
mov bx, 0B8000hbzw. 0B8002h für die 2. Stelle
edit: sorry, sah erst jetzt, dass du im RM bist. Da stimmt dein 0B00 natürlich.
Ich würde die erste Zeile aber trotzdem voerst mal auf mov bx, 0B800h
« Letzte Änderung: 13. April 2007, 18:45 von blitzmaster »
A / OS PM - THE operating system of the future

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 13. April 2007, 18:58 »
Aber selbstverständlich liegt bei B800:0000 der Grafikspeicher. Und bei B800:0002 das zweite Zeichen. Mit dem bestehenden Code wäre das dann wohl:
mov byte [es:2],'2'
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 13. April 2007, 19:03 »
Aber selbstverständlich liegt bei B800:0000 der Grafikspeicher. Und bei B800:0002 das zweite Zeichen. Mit dem bestehenden Code wäre das dann wohl:
mov byte [es:2],'2'

und dann bei [es:3] '1Fh' geht nicht... da müsste ja wieder die farbe hin.. das wird dann garnet angezeigt^^

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 13. April 2007, 19:04 »
Meinst du das '1Fh' wirklich in Anführungszeichen?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 13. April 2007, 19:13 »
ja?!

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 13. April 2007, 19:20 »
wiso? '1f' in anführungszeichen hat 2 Byte und passt da gar nicht rein.
Wenn du 1f als Farbe meinst, musst du es ohne Hochkommas schreiben, wenn du es als nächstes zeichen meinst, muss es nach Offset 4 + 6.

Gruss
Nooooooooooos

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 13. April 2007, 19:23 »
aso. mhh sorry hatte es ohne. das is mein code:

mov bx,0B800h
mov es,bx
 mov byte [es:0],'1'
mov byte [es:1],1Fh


 mov bx,B8002h
mov es,bx
 mov byte [es:2],'2'
mov byte [es:3],1Fh


 mov bx,B8000h
mov es,bx
 mov byte [es:2],'3'
mov byte [es:3],1Fh



 mov bx,0B8000h
mov es,bx
 mov byte [es:0],'A'
mov byte [es:1],1Fh


 mov bx,B802h
mov es,bx
 mov byte [es:2],'B'
mov byte [es:3],1Fh


 mov bx,B800h
mov es,bx
 mov byte [es:2],'C'
mov byte [es:3],1Fh
die ganzen möglichkeiten die ich probiert hab. keine geht^^
während

mov bx,0B800h
mov es,bx
 mov byte [es:0],'1'
mov byte [es:1],1Fh
funktioniert
« Letzte Änderung: 13. April 2007, 19:30 von Coffee »

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 13. April 2007, 20:22 »
Warum soll da keine gehen? Die erste ist ja identisch mit der der geht + und die letzte gibt einfach ein anderes Zeichen auf der 2. Position aus oder?

Gruss
Noooooooooooos

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 13. April 2007, 20:29 »
mov bx, B800h
mov es, bx

mov byte [es:0],'1'
mov byte [es:1],1Fh

mov byte [es:2],'2'
mov byte [es:3],1Fh
Und vielleicht möchtest du dich nochmal über die Adressierung im RM schlau machen.

Edit: Nur zur Klarstellung, Coffee ist angesprochen, nicht Noos.
« Letzte Änderung: 13. April 2007, 20:39 von taljeth »
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 13. April 2007, 21:06 »
 :mrgreen: jo taljeth. ich hab letzte zeit immer in brainfuck geproggt da vergisst man vieles^^

 

Einloggen