Autor Thema: NASM: invalid combination of opcode and operands  (Gelesen 4752 mal)

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« 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




Danke im Vorraus, Florian
Woher ich das weiß? Keine Ahnung.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #1 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #2 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?
Dieser Text wird unter jedem Beitrag angezeigt.

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #3 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
Woher ich das weiß? Keine Ahnung.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 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
Dieser Text wird unter jedem Beitrag angezeigt.

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 26. October 2012, 15:31 »
ich lese es gleich mal durch...
Woher ich das weiß? Keine Ahnung.

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 26. October 2012, 15:35 »
Also wird IRQ12 aufgerufen und ich bennötige keine Dauerschleife!

Gibt es noch meht Tuorials? Eine Übersichts Seite?
Woher ich das weiß? Keine Ahnung.

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 26. October 2012, 15:37 »
Woher ich das weiß? Keine Ahnung.

 

Einloggen