Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Palestra Livello Apprendisti Livello Esperti

Home » Programma il Computer » Tutorial Assembly

Palestra Assembly - Home Page

  Programmare in Assembly

INTRODUZIONE [1 di 23] 

               

Analisi del Problema · Main Loop · Tipi di Tasto · Rilievo tasti · Caps Lock · Servizio tasti · Conclusioni

Acquisizione Caratteri - Rileva la pressione di tasti autorizzati e segnala errore per gli altri
Analisi del Codice Sorgente [5 di 6] - Problema dell'influenza dello stato di Caps Lock sui tasti letterali

               

bullet Quando un programma è chiamato a rilevare la pressione di un tasto letterale restituisce informazioni  dipendenti dallo stato logico del tasto Caps Lock , quello con il disegno di un lucchetto, a metà della prima colonna di tasti, a sinistra.

  

bulletQuando si preme un tasto con una lettera sopra non si bada mai allo stato logico del tasto Caps Lock, il cui compito è quello di renderle maiuscole o minuscole.
bulletPer la verità esso è sempre noto: nell'angolo in alto a destra della tua tastiera ci sono 3 piccole luci (led): quella centrale è proprio associata allo stato di Caps Lock:
bulletse è accesa la tastiera è predisposta per associare ai tasti letterali il codice ascii Maiuscolo
bulletse è spenta ovviamente l'opzione opposta (ai tasti letterali si associa il codice ascii minuscolo) .

  

bulletIl problema sta dunque nel fatto che la gran parte degli utenti non conosce il significato di questo segnalatore e, anche quando ciò non fosse, preme meccanicamente i tasti, senza curarsi se le lettere sono predisposte per il maiuscolo o il minuscolo.

  

Attenzione ! La lettura dei tasti letterali è a rischio... Poichè il codice Ascii restituito dalla KEYwait dipende dallo stato di Caps Lock, spesso casuale e sostanzialmente imprevedibile, risulta difficile sapere se si tratta di quello della lettera minuscola o quello della lettera Maiuscola.

  

bulletPiù precisamente il codice Ascii che verrà associato al tasto letterale, che sarà:
bulletquello della lettera Maiuscola [da 'A' (ascii 41H) a 'Z' (ascii 5AH)] se lo stato di Caps Lock è vero
bulletquello della lettera minuscola [da 'a' (ascii 61H) a 'z' (ascii 7AH)] se lo stato di Caps Lock è falso

  

bulletIn conclusione, se si desidera rilevare la pressione di un tasto letterale, è fortemente consigliato intervenire sul codice Ascii restituito dall'hardware della tastiera; in sostanza l'istruzione AND AL,0DFH interviene sul bit5 del byte contenuto in AL, forzandolo o lasciandolo a 0
bulletCiò equivale a trasformare il codice ascii acquisito da quello di una lettera minuscola da quello di una lettera maiuscola, evitando il rischio introdotto dall'incertezza della condizione logica del tasto Caps Lock.

  

bulletVerificando l'uguaglianza con l'ascii maiuscolo (per esempio: CMP AL,'A') la pressione del tasto letterale sarà comunque rilevata, anche se in condizioni di codifica minuscola!

  

Suggerimento Prima di verificare la pressione di un tasto letterale conviene sempre forzare a 0 il bit5 del suo codice ascii: in questo modo se è quello di una lettera maiuscola non cambia niente, ma se si tratta di quello di una minuscola viene trasformato magicamente in maiuscola.

  

bulletAbbiamo trattato questa tecnica già nella scheda dedicata all'istruzione AND; in pratica l'operazione logica AND di un numero a 8 bit (contenuto in AL) con il valore 1101 1111 (=DFH) forza comunque a 0 il bit5 del dato letto, trasformando appunto le minuscole (es: "a" = 61H = 0110 0001) in maiuscole (es"A" = 41H = 0100 0001):

  

61H (='a') 0110 0001 AND
DFH        1101 1111  =
           -------------
41H (='A') 0100 0001
     
bulletPer finire osserviamo la parte finale del Main loop per commentare il comportamento del programma quando rileva la pressione di un tasto non autorizzato: naturalmente si deve rientrare all'inizio del main loop stesso, in attesa di altri tasti, magari dopo aver segnalato l'indisponibilità con un messaggio e/o un suono:

  

    

Pagina Precedente Palestra Esperti Pagina Successiva INTRODUZIONE   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
1 di 23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

    

PALESTRA » Esperti » Es.001 Es.002 Es.003 Es.004 Es.005 Es.006 Es.007 Es.008 Es.009 Es.010 Es.011

| Che serve per iniziare | Prima compilazione | Livello Apprendisti |

TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati