Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: FlorianN am 26. October 2012, 14:40

Titel: NASM: invalid combination of opcode and operands
Beitrag von: FlorianN am 26. October 2012, 14:40
Hallo,
ich bin noch ein Anfänger und habe eine einfache Frage welche ich allerdings nicht lösen kann:

Code (Zitat, ich weiß):     
Zitat

      mov ah, 04h    ;die maus ansteuern
      int 0x10          ;jetzt!

      mov  ah, 0Ch    ;ein pixel ansteuern
      mov  al, 0x07   ;farbe 7 (hellgrau)
--> mov  dx, ch       ;Positiom der Maus (hellgrau)   
--> mov  cx, bx       ;Position der Maus
      int  0x10

Das OS befindet sich im RealMode und Grafikmodus (320x200).
http://de.wikibooks.org/wiki/Interrupts_80x86/_INT_10 (http://de.wikibooks.org/wiki/Interrupts_80x86/_INT_10)




Danke im Vorraus, Florian
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: Svenska am 26. October 2012, 15:06
Hallo,

du versuchst, den Inhalt von Register CH (8 Bit) in das Register DX (16 Bit) zu schreiben. Das geht nicht.

Das BIOS kennt übrigens keine Mäuse und bietet dafür keine Treiber an, int 0x10/0x04 funktioniert nicht mehr. Ein Zeigegerät findest du wahrscheinlich am PS/2-Port.

Anmerkung: Es gibt Code-Tags für das Forum.

Gruß,
Svenska
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: Jidder am 26. October 2012, 15:11
Mit Interrupt 0x10, Funktion 0x04 kannst du nicht die Mausposition auslesen. Ein "Lichtstift" ist was anderes: http://de.wikipedia.org/wiki/Lichtgriffel Wie man die Maus anspricht, ist hier erklärt: http://www.lowlevel.eu/wiki/PS/2-Maus

Zu dem Problem: dx ist ein 16-Bit Register und ch ist ein 8-Bit Register. Wenn du einen 16-Bit Register mit einem 8-Bit Wert laden musst, musst du die unteren 8-Bit laden und die oberen 8-Bit auf 0 setzen.

mov dl, ch
mov dh, 0

An der Zeile mov cx, bx ist nichts falsch. Warum hast du die markiert?
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: FlorianN am 26. October 2012, 15:23
Hallo,


An der Zeile mov cx, bx ist nichts falsch. Warum hast du die markiert?
NASM hat einen Fehler in beiden Zeilen gemeldet (der selbe wieder).

Wie man die Maus anspricht, ist hier erklärt: http://www.lowlevel.eu/wiki/PS/2-Maus


Wenn EAh aktivieren möchte wie muss ich dann vorgehen?
mov ??, EAh
int 0x10

Und wie lese ich den IRQ12 aus (Dauerschleife)?


MfG Florian
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: Jidder am 26. October 2012, 15:27
So einfach ist das nicht.

Ein Tutorial gibt es dazu hier. http://www.lowlevel.eu/wiki/PS/2-Maus_Tutorial
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: FlorianN am 26. October 2012, 15:31
ich lese es gleich mal durch...
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: FlorianN am 26. October 2012, 15:35
Also wird IRQ12 aufgerufen und ich bennötige keine Dauerschleife!

Gibt es noch meht Tuorials? Eine Übersichts Seite?
Titel: Re: NASM: invalid combination of opcode and operands
Beitrag von: FlorianN am 26. October 2012, 15:37
gut, habs schon gefunden:

http://www.lowlevel.eu/wiki/Kategorie:Tutorials (http://www.lowlevel.eu/wiki/Kategorie:Tutorials)