communityWir suchen ständig neue Tutorials und Artikel! Habt ihr selbst schonmal einen Artikel verfasst und seid bereit dieses Wissen mit der Community zu teilen? Oder würdet ihr gerne einmal über ein Thema schreiben das euch besonders auf dem Herzen liegt? Dann habt ihr nun die Gelegenheit eure Arbeit zu veröffentlichen und den Ruhm dafür zu ernten. Schreibt uns einfach eine Nachricht mit dem Betreff „Community Articles“ und helft mit das Angebot an guten Artikeln zu vergrößern. Als Autor werdet ihr für den internen Bereich freigeschaltet und könnt dort eurer literarischen Ader freien Lauf lassen.

BIOS-Level Programmierung - Mausprogrammierung Drucken E-Mail
Benutzerbewertung: / 52
SchwachPerfekt 
Geschrieben von: StarShaper   
Donnerstag, den 01. Juni 2006 um 10:30 Uhr
Beitragsseiten
BIOS-Level Programmierung
Die Tastatur
Video Programmierung
Grafik-Modi
Mausprogrammierung
Alle Seiten

Programmieren mit der Maus

Zum 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.

Schluss

Die 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Ü