Autor Thema: dh/dl nach dx, etc  (Gelesen 6461 mal)

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« 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
thetrue way is my way

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 11. May 2006, 18:08 »
Zitat

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

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #2 am: 11. May 2006, 18:16 »
den Code kann ich Complimieren, doch er functioniert nicht wie er soll ;)

PS:
angebonmen dl=3 und dh=6
dann muss
Zitat
mov dx, 6
mov cx, 3

sein[/code]
thetrue way is my way

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #3 am: 11. May 2006, 19:32 »
xor cx, cx
mov cl, dh
xor dh, dh


sollte eigentlich funktionieren

maumo

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 11. May 2006, 20:50 »
maumo, bei dir ist dx = dl und cx = dh ;)

Mein Vorschlag:

xor cx, cx
mov cl, dl
mov dl, dh
xor dh, dh
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 11. May 2006, 21:18 »
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
In the Future everyone will need OS-64!!!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 11. May 2006, 22:27 »
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 ;)
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #7 am: 12. May 2006, 06:52 »
Zitat von: PorkChicken
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
In the Future everyone will need OS-64!!!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 12. May 2006, 12:13 »
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.
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #9 am: 12. May 2006, 13:57 »
Zitat
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:
In the Future everyone will need OS-64!!!

 

Einloggen