|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
[ASSEMBLER]rilevare rilascio e pressione dei tasti
ciao a tutti dovrei realizzare un programma in assembler che esegua una procedura alla pressione di un tasto e un altra quando lo si rilascia...
non so da dove iniziare... Qualche idea? grazie ![]()
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1661
|
è passato abbastanza tempo dall'esame di architettura degli elaboratori ma da quel che mi ricordo qualcosa del genere dovrebbe andare bene:
Codice:
;Si mette in attesa di un tasto se il tasto premuto è esc salta a fine programma wait4Key: call insChar cmp al,1bh je fine_programma jmp wait4key ;***************************************** ;* PROCEDURA "insChar" ;* Questa procedura legge un carattere da ;* tastiera e lo memorizza nel registro AL ;***************************************** insChar proc near mov ah,07h int 21h ret insChar endp ;***************************************** ;* FINE PROCEDURA "insChar" ;***************************************** opzioni dell'interrupt 21 specifiche proprio per la pressione o per il rilascio non le ricordo, magari esistono. Comunque questo ti può essere d'aiuto come punto di partenza |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
non credo sia bene affidarsi alla int 21h quando si lavora in Windows, se ben ricordo i kernel NT non sono stati progettati con la pretesa di retrocompatibilità con MS-DOS come uno degli scopi primari, percui alcune funzionalità della int 21h potrebbero non esistere più, anche se magari una cosa molto basilare come il controllo della tastiera c'è ancora. la int 21h era un'API specifica di MS-DOS.
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1661
|
per un programma basilare come sembra aver chiesto lui dovrebbe andare bene
![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Quote:
![]() x 71104 Si infatti non ho specificato che sto programmando su un 386 con MS-Dos installato ![]() ![]() x Netskate Quello che mi hai proposto tu si mette in attesa della pressione di un tasto e mette l'ascii in al vero? Come la ah=01h int 21h? cmq il programma che ho intenzione di realizzare e' questo: "Scrivere un programma che modifichi la routine di interruzione relativa alla gestione della tastiera in modo che ogni volta che viene premuto un tasto venga emesso un suono che duri finche' il tasto non viene rilasciato..." Quindi mi servirebbe se e' stato premuto un tasto 'attivo il suono' poi appena viene rilasciato lo 'disattivo' cosa che faccio con due procedure... attiva_suono e disattiva_suono...
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) Ultima modifica di frizzo28 : 13-08-2007 alle 09:57. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
up un aiutino?
![]()
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:03.