Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

INPUT in Assembler

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 13.10.2005, 17:25    Titel: INPUT in Assembler Antworten mit Zitat

Hallo!

Ich habe eine Frage zur Tastenabfrage in Assembler:
Wie kann ich eine Art INPUT-Befehl von QB erzeugen?
Wie kann ich einzelne Tasten abfragen?

Wäre nett, wenn ihr helfen könntet! lächeln

Greetings,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 13.10.2005, 18:21    Titel: Antworten mit Zitat

Hi,

die Tasten kannst du in ASM per Interrupt 16h abfragen.

1. Beispiel:
Endlosschleife mit Tastenabfrage.

Code:
start:
XOR AX,AX    'AX = 0
INT 16
'Code wenn eine Taste gedrückt wurde.
JMP start


Wenn du den INT16h mit der Unterfunktion 0 aufrufst dann wartet der INT solange bis du eine Taste drückst. Der ASCII-Wert der gedrückten Taste steht in AL bereit. Der Scancode in AH.
In diesem Programm hast du natürlich den Nachteil das das ganze Programm solange hängt bis eine Taste gedrückt wird.

2. Beispiel
Nun wollen wir das das ASM-Prog nicht hängen bleibt bei der Tastaturabfrage sondern die Tastenabfrage quasi "nebenbei" macht.
Dazu rufen wir den INT 16 mit der Unterfunktion 1 auf. Dies fragt ab ob momentan eine Taste gedrückt wurde. Wenn dem so ist wird das ZERO-Flag gelöscht.


Code:
start:
   MOV AH,1
   INT 16
   JNZ tastelesen
   JMP start

tastelesen:
   XOR AX,AX
   INT 16
   'hier wieder Code mit der gedrückten Taste.   
   JMP start


Hier wird nun erst gefragt ob eine Taste gedrückt wurde oder nicht.
Die gedrückten Tasten kann man dann natürlich noch in einen String usw. laden. Das kannste dann z.B. per STOSB machen. Aber danach haste ja nicht gefragt...lächeln

MFG A.K.

PS:
das gleiche findest du auch hier:
http://www.iconsoft.de/index.php?show=tutorial_int
relativ weit unten.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 13.10.2005, 19:22    Titel: Antworten mit Zitat

Dankö! lächeln

//edit: Ihr dürft mich jetzt auslachen, aber - mein 50ter Post!! Yahooo!!!!

Greetings,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz