Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: thetrue am 11. May 2006, 16:29
-
moin
ich versuche gerade mit BIOS in ASM zu coden :)
Ich arbeitet im grafik modus, und will da die Cursirposition mit farbe etc darstellen
setmaus:
mov ah, 03h
mov bh, 0
int 10h
mov ah, 0ch
mov bh, 0
mov dx, dh ; zeile 63
mov cx, dl ; zeile 64
mov al, 7
int 10h
ret
doch NASM meldet error:
test2.asm:63: error: invalid combination of opcode and operands
test2.asm:64: error: invalid combination of opcode and operands
wie kann ich dh nach dx und dl nach cx verschiben?
PS:
so geht auch net:
setmaus:
mov ah, 03h
mov bh, 0
int 10h
mov ah, 0ch
mov bh, 0
mov dx, [dh] ; zeile 63
mov cx, [dl] ; zeile 64
mov al, 7
int 10h
ret
-
setmaus:
mov ah, 03h
mov bh, 0
int 10h
mov ah, 0ch
mov bh, 0
mov dh,0
mov dl, dh
mov ch,0
mov cl, dl
mov al, 7
int 10h
ret
Du kannst ein 16-Bit-Register nicht in ein 8Bit-Register schieben und umgekehrt. Du kannst entweder 8 Bit in ein 8-Bit-Register schieben oder 16-Bit in ein 16-Bit-Register.
Also wenn du DL nach CX willst (beispiel), musst du dich entscheiden, ob die daten von DL nach CL oder nach CH sollen (oder beides). Die andere Hälfte kannst du dann nullen (falls du 16-Bit-Operationen darauf anwenden willst) oder mit deinen Werten füllen.
Mein Beispiel sollte funktionieren. Die "mov reg,0" kannst du auch durch "xor reg,reg" (Bsp: xor dh,dh) ersetzen, das spart einen oder zwei Taktzyklen, wenns wichtig ist.
Gruß,
Svenska
-
den Code kann ich Complimieren, doch er functioniert nicht wie er soll ;)
PS:
angebonmen dl=3 und dh=6
dann muss
mov dx, 6
mov cx, 3
sein[/code]
-
xor cx, cx
mov cl, dh
xor dh, dh
sollte eigentlich funktionieren
maumo
-
maumo, bei dir ist dx = dl und cx = dh ;)
Mein Vorschlag:
xor cx, cx
mov cl, dl
mov dl, dh
xor dh, dh
-
setmaus:
mov ah, 03h
mov bh, 0
int 10h
mov ah, 0ch
mov bh, 0
movzx dx, dh ; zeile 63
movzx cx, dl ; zeile 64
mov al, 7
int 10h
ret
-
wenn, dann
setmaus:
mov ah, 03h
mov bh, 0
int 10h
mov ah, 0ch
mov bh, 0
movzx cx, dl
movzx dx, dh
mov al, 7
int 10h
ret
sonst gibt es das selbe Problem, wie bei Svenska ;)
-
wenn, dann
setmaus:
mov ah, 03h
mov bh, 0
int 10h
mov ah, 0ch
mov bh, 0
movzx cx, dl
movzx dx, dh
mov al, 7
int 10h
ret
sonst gibt es das selbe Problem, wie bei Svenska ;)
Hä? Was ist daran denn anders?
bitmaster
-
lol, zwei 10-zeilige Funktionen sind doch nicht kompliziert zu vergleichen. Vor allem, wenn es nur mit 2 Zeilen Probleme gibt ;)
Ich hab die beiden movzx Zeilen vertauscht, denn du überschreibst mit dem ersten movzx bereits dl, was du aber bei dem zweiten noch brauchst.
-
Ich hab die beiden movzx Zeilen vertauscht, denn du überschreibst mit dem ersten movzx bereits dl, was du aber bei dem zweiten noch brauchst.
Ups :oops: