Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Coffee am 13. April 2007, 16:57

Titel: text
Beitrag von: Coffee 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
Titel: Re: text
Beitrag von: blitzmaster 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
Titel: Re: text
Beitrag von: Coffee am 13. April 2007, 17:30
jetz is der buchstabe anner 17. stelle  :|
Titel: Re: text
Beitrag von: blitzmaster am 13. April 2007, 17:58
bei welchem offset
bei 0xB8002 ?
Titel: Re: text
Beitrag von: Coffee 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 )
Titel: Re: text
Beitrag von: blitzmaster 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.
Titel: Re: text
Beitrag von: nooooooooos am 13. April 2007, 18:14
hehe...ich würde das noch vertauschen: mov [0xb8000],ax

Greez
Titel: Re: text
Beitrag von: blitzmaster am 13. April 2007, 18:19
will er nicht an die zweite stelle?
edit: mov ax [0xB8002] stimmt auch nicht, ich gebs zu ^^
Titel: Re: text
Beitrag von: Coffee am 13. April 2007, 18:25
geht nich... hab auch schon probiert die werte in ' zu setzen^^ ich benutze übrigens NASM^^
Titel: Re: text
Beitrag von: Coffee 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^^
Titel: Re: text
Beitrag von: blitzmaster 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
Titel: Re: text
Beitrag von: kevin 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'
Titel: Re: text
Beitrag von: Coffee 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^^
Titel: Re: text
Beitrag von: kevin am 13. April 2007, 19:04
Meinst du das '1Fh' wirklich in Anführungszeichen?
Titel: Re: text
Beitrag von: Coffee am 13. April 2007, 19:13
ja?!
Titel: Re: text
Beitrag von: nooooooooos 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
Titel: Re: text
Beitrag von: Coffee 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
Titel: Re: text
Beitrag von: nooooooooos 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
Titel: Re: text
Beitrag von: kevin 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.
Titel: Re: text
Beitrag von: Coffee am 13. April 2007, 21:06
 :mrgreen: jo taljeth. ich hab letzte zeit immer in brainfuck geproggt da vergisst man vieles^^
Titel: Re: text
Beitrag von: kevin am 13. April 2007, 21:19
Immerhin eine kreative Ausrede. ;)
Titel: Re: text
Beitrag von: Coffee am 14. April 2007, 10:47
nein is wirklich so. ich hab "nichma mehr" den inhalt aus LL1 drauf... is echt zum kotzen... jetz muss ich ganz von vorne anfangen  :|
Titel: Re: text
Beitrag von: nooooooooos am 14. April 2007, 12:32
OT: Was hast du denn so schönes in Brainfuck gemacht? Kann man da wirklich etwas produktiv machen?

Gruss
Nooooooooooos
Titel: Re: text
Beitrag von: Coffee am 14. April 2007, 12:37
naja nix produktiv. einfach mal so rumgespielt. so sachen wie hello world, dann kleinere rechensachen und so... war für n vortrag^^

man ich bin echt ein totaler noob
wieso geht das schon wieder nich?:

xor cx, cx
mov cl, 79

leiste:
mov al, cl
add al,cl
 mov byte [es:al],'1'
add al,1
mov byte [es:al],1Fh
loop leiste
Titel: Re: text
Beitrag von: blitzmaster am 14. April 2007, 15:22
und ES wurde vorher mit B800h geladen...
Titel: Re: text
Beitrag von: bitmaster am 14. April 2007, 18:42
mov cx,79 ;cl = 79, ch = 0

leiste:
mov bx,cx
add bx,cx ;was das sein soll kA
mov byte [es:bx],"1"
inc bx ;bx = bx + 1
mov byte [es:bx],1Fh
loop leiste

evt. meinst du:

mov cx,80
mov bx,158

leiste:
mov byte [es:bx],"1"
mov byte [es:bx+1],1Fh
add bx,160
loop leiste

bitmaster
Titel: Re: text
Beitrag von: Coffee am 14. April 2007, 18:45
so hab ich das gelöst (die variante die mir taljeth sendete stimmte nich ;( ):

mov cx, 79
mov bx, 0
leiste:

mov byte [es:bx],'1'
inc bx
mov byte [es:bx],1Fh
inc bx
loop leiste
Titel: Re: text
Beitrag von: bitmaster am 14. April 2007, 18:52
Achso, du wolltest das oben haben, ich dachte rechts. ^^

bitmaster
Titel: Re: text
Beitrag von: Coffee am 14. April 2007, 19:18
jo ich woltle sone art"überschrift" machen^^
Titel: Re: text
Beitrag von: Coffee am 15. April 2007, 19:17
mhh... ich spiel grad mit den farben rum... wie kann ich die schrift blinken lassen, ohne dass der hintergrund blau is? wenn ich für die farbe

96h nehme, hab ich bl8inkende schrift auf blauem ghintergrund. ich will aber schwarzen und auch andersfarbigen hintergrund. wie geht das?
Titel: Re: text
Beitrag von: kevin am 15. April 2007, 21:53
Nichtblinkend + 0x80 = Blinkend
Titel: Re: text
Beitrag von: Coffee am 15. April 2007, 23:54
wieso akzepziertz nasm dann A0h nich??  :?
Titel: Re: text
Beitrag von: Jidder am 15. April 2007, 23:57
Weil auch Hexadezimalzahlen mit einer Ziffer anfangen müssen, da sie sonst nur mit einer Glaskugel von Labels unterscheidbar sind. Versuch mal 0xA0 oder 0A0h.