Appunti per Scuola e Università
humanisticheUmanistiche
Appunti e tesine di tutte le materie per gli studenti delle scuole medie riguardanti le materie umanistiche: dall'italiano alla storia riguardanti le materie umanistiche: dall'italiano alla storia 
sceintificheScientifiche
Appunti, analisi, compresione per le scuole medie suddivisi per materie scientifiche, per ognuna troverai appunti, dispense, esercitazioni, tesi e riassunti in download.
tecnicheTecniche
Gli appunti, le tesine e riassunti di tecnica amministrativa, ingegneria tecnico, costruzione. Tutti gli appunti di AppuntiMania.com gratis!
Appunti
informatica
CComputerDatabaseInternetJava
Linux unixReti


AppuntiMania.com » Informatica » Appunti di c » Vuotare il buffer della tastiera

Vuotare il buffer della tastiera




Visite: 1157Gradito:apreciate 5-stela [ Picolo appunti ]
Leggi anche appunti:

Operatore condizionale


Operatore condizionale L'operatore condizionale, detto talvolta operatore ternario

Le variabili


Le variabili E' il momento di ripescare CIAO.C e complicarlo un poco. #include

Interazione tra c e assembler


Interazione tra C e Assembler Il C, pur rientrando tra i linguaggi di alto
immagine di categoria

Scarica gratis Vuotare il buffer della tastiera

Vuotare il buffer della tastiera

Molte applicazioni che richiedono all'utilizzatore l'immissione di dati dalla tastiera necessitano che il buffer della tastiera venga vuotato prima della richiesta di input: si evita in tal modo che tasti battuti, ad esempio, durante durante una fase elaborativa e interpretati al momento sbagliato producano risultati errati o un comportamento imprevedibile del programma. Lo svuotamento del buffer di tastiera può essere effettuato in diversi modi: uno di questi è implementare un ciclo utilizzante il servizio 01h dell'int 16h (vedere pag.  e seguenti) per controllare se nel buffer c'è un tasto 'in attesa'; in caso affermativo questo viene rimosso mediante il servizio 00h. L'uscita dal ciclo avviene quando il servizio 01h segnala che il buffer è vuoto.

Un altro metodo consiste nell'utilizzare la funzione 0Ch dell'int 21h, appositamente prevista per pulire il buffer della tastiera e invocare una delle funzioni 01h, 06h, 07h, 08h, 0Ah: se si desidera esclusivamente vuotare il buffer è sufficiente indicare 06h quale valore di AL (funzione) e FFh quale valore di DL (input per la funzione) . Le caratteristiche della funzione 0Ch dell'in 21h sono le seguenti:

Int 21h, serv. 0Ch: Pulisce il buffer di tastiera e invoca un servizio

Input

AH

AL

Altri

0Ch

servizio da invocare (può essere 01h, 06h, 07h, 08, 0Ah)

Altri registri: valori eventualmente richiesti dalla funzione indicata in AL

Output

AL

il carattere in input (eccetto funzione 0Ah)

Il terzo metodo utilizza i puntatori alla testa e alla coda del buffer (vedere, anche in questo caso, pag.  e seguenti):



BARNINGA_Z! - 1990


CLEARKBD.C - clearkbd()


void cdecl clearkbd(void);


COMPILABILE CON TURBO C++ 1.0


tcc -O -d -c -mx clearkbd.c


dove -mx puo' essere -mt -ms -mc -mm -ml -mh




void cdecl clearkbd(void)


Il meccanismo è banale: il puntatore alla testa e quello alla coda del buffer si trovano agli indirizzi 0:041A0:041C, rispettivamente. Tali indirizzi possono pertanto essere considerati i puntatori a detti puntatori: la loro indirezione ne restituisce i valori. La funzione clearkbd(), quindi, non fa altro che rendere uguali il puntatore alla testa e quello alla coda, forzando così la condizione di buffer vuoto.




 La funzione di libreria bdos() (vedere pag.  ) è quel che ci vuole per applicare il metodo descritto:

.

bdos(0x0C,0xFF,0x06);

.

Per completezza aggiungiamo che il servizio 06h legge un carattere dallo standard input se il registro DL contiene FFh, altrimenti essa scrive sullo standard output il carattere rappresentato dal valore di DL; con la funzione 07h, che attende la pressione di un tasto, è possibile realizzare una rudimentale imitazione di getch() (che, d'altra parte, la utilizza) in grado di pulire il buffer della tastiera:

.

(char)bdos(0x0C,0x00,0x07);

.

La bdos() restituisce  se è stato premuto un tasto speciale (tasti funzione, etc.). Per conoscerne il codice è sufficiente invocare una seconda volta la funzione 07h.

.

(char)bdos(0x07,0x00,0x00);

.

Scarica gratis Vuotare il buffer della tastiera
Appunti su:



Scarica 100% gratis e , tesine, riassunti



Registrati ora

Password dimenticata?
  • Appunti superiori
  • In questa sezione troverai sunti esame, dispense, appunti universitari, esercitazioni e tesi, suddivisi per le principali facoltà.
  • Università
  • Appunti, dispense, esercitazioni, riassunti direttamente dalla tua aula Universitaria
  • all'Informatica
  • Introduzione all'Informatica, Information and Comunication Tecnology, componenti del computer, software, hardware ...