BIOS-Level Programmierung - Mausprogrammierung |
Geschrieben von: StarShaper | |||||||
Donnerstag, den 01. Juni 2006 um 10:30 Uhr | |||||||
Seite 5 von 5
Programmieren mit der MausZum Ende dieses Tutorials werden wir einen abschließenden Blick auf die Maus werfen. Die Maus übermittelt ihre Bewegung über horizontale und vertikale Längenangaben an den Rechner. Eine Länge entspricht dem 1/200 Teil eines Inch (amerikanische Längeneinheit) und wird als Mickey bezeichnet. Die BIOS Dienste stellen für den Umgang mit der Maus den Interrupt 33h zur Verfügung. Darin enthalten sind verschiedene Funktionen, unter anderem zur Geschwindigkeitsmessung, Positionsangabe und Abfrage des letzten Tastendrucks. Der Mauszeiger selbst lässt sich mithilfe der INT 33h Funktionen auch verbergen und wieder anzeigen. Dazu stehen die Funktionen 01h und 02h zur Verfügung. mov ax, 1 ; Zeige den Mauszeiger int 33h mov ax, 2 ; Verberge den Mauszeiger int 33h Die Funktion 00h gibt Informationen über den Mausstatus zurück. Zudem wird beim Aufruf der Funktion eine vollständiges Reset der Maus durchgeführt. Der Mauszeiger wird auf dem Bildschirm zentriert, alle Einstellungen werden auf die Werkseinstellungen zurückgesetzt und der Zeiger wird unsichtbar. Der folgende Code demonstriert den Vorgang. mov ax, 0 ; Aufruf der Funktion 00h (Maus Reset und Statusabfrage) int 33h cmp ax, 0 ; Falls die Maus nicht verfügbar ist, ist das je MouseNotAvailable ; AX-Register 0. Andernfalls befindet sich dort ; der Wert FFFFh und im BX die Anzahl der Maustasten. Um die Position der Maus zu empfangen und zu setzen kann man die beiden Funktionen 03h und 04h verwenden. Mithilfe der Funktion 03h lässt sich auch überprüfen ob eine Taste gedrückt wird. mov ax, 3 ; Empfange die Position int 33h mov bx, dx ; Speichere die Y-Koordinate cmp cx, 222 ; Überprüfe ob die X-Koordinate des je TrueData ; Mauszeigers auf 222 liegt. mov ax, 3 ; LT (Bit 0), RT (Bit 1), MT (Bit 2) int 33h test bx, 1 ; Teste das erste Bit auf 0 mittels logischen jne Left_Button_Down ; AND (Flags werden beinflußt) test bx, 2 jne Right_Button_Down test bx, 4 ; Dezimal=4, Binär=100 (Bit 2) jne Middle_Button_Down mov ax, 4 ; Positioniere die Maus manuell mov cx, 250 ; X-Koordinate mov dx, 100 ; Y-Koordinate int 33h INT 33h stellt noch einige weitere Funktionen bereit. Eine vollständige Übersicht finden Sie auf der Seite Datasource unter DOS-Interrupt 33h (Mausfunktionen). Dem Dateianhang dieses Tutorials ist selbstverständlich ein ausführliches Beispiel zu INT 33h beigefügt. SchlussDie BIOS Ebene bietet eine große Kontrolle und Flexibilität über die I/O-Geräte des Computers. Sie können direkt mit der Hardware arbeiten und diese direkt nach Ihren eigenen Wünschen und Vorstellungen manipulieren. Darüberhinaus gewährt diese hardwarenahe Systemprogrammierung einen tiefen Einblick in die zugrundeliegende Technik die jeden Computer zu dem macht was er ist, ein multifunktionales Werkzeug. |
|||||||
Zuletzt aktualisiert am Samstag, den 22. Mai 2010 um 17:08 Uhr |
AUSWAHLMENÜ | ||||||||
|