 | La procedura
è parzialmente scritta in linguaggio
Assembly. E' probabile che il lettore, in questo momento, non sia in possesso delle
conoscenze di base della programmazione a basso
livello, per cui questa pagina pụ risultare
incomprensibile; desidero fornirtela comunque, come stimolo per approfondire questa potente tecnica di programmazione
(vedi Sezione
Tutorial Assembly).
 | La funzione verifica la pressione di un tasto
con l’aiuto della Funzione 01H
della libreria
INT 16H [consulta
la
Scheda
dedicata alla Tastiera della Sezione
Dentro il Computer]. |
 | Questa funzione
verifica lo stato della tastiera senza fermarsi, lasciandone lo
stato nella flag
di zero:
 | se nessun tasto
è stato premuto il risultato è Z (zero) e ffZ=1 |
 | se
è stato premuto un tasto il risultato è NZ (non zero) e ffZ=0
e la funzione lascia il codice ASCII in AL e il codice di
scansione in AH |
|
 | Non appena
un tasto è stato premuto i suoi codici devono essere estratti
dal buffer
della tastiera: per questo
viene chiamata la Funzione 00H
della libreria
INT 16H |
Codice Sorgente |
|
 |
 |
 |
FUNCTION ChkKey
(VAR ascii,scans:word):boolean;
VAR test:byte;
BEGIN
ChkKey:=false;
asm
PUSH AX
PUSH DI
MOV test,0
MOV AH,01H
INT 16H
JZ @@1
MOV AH,00H
INT 16H
PUSH AX
XOR AH,AH
LES DI,ascii
STOSW
POP AX
MOV AL,AH
XOR AH,AH
LES DI,scans
STOSW
MOV test,1
@@1:POP DI
POP AX
end;
IF test=1 THEN
ChkKey:=true;
END;
|
|