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

Esercizio n° A014 4/5 [74 di 157] 

               

Analisi del Codice · Analisi del Main Loop · Conclusioni

Acquisizione Caratteri - Pressione di soli tasti LETTERALI con eco - Messaggio d'errore
Analisi del Main Loop [2 di 2]

               

           Aggiornato 12 febbraio 2007 - [nel sorgente Es014.ASM sostituito JG xxx03 con JA xxx03; ricompilare l'esercizio]
bulletLa parte originale di questo sorgente è relativa all'acquisizione e alla verifica dei tasti letterali, invece di quelli numerici; per tenerla meglio sotto osservazione te la ripropongo qui sotto:

  

Console - Video & Tastiera

Esercizio FACILE Esercizio
NB: se il testo nell'Area  ti sembra strano
     
installa il  font
Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile COM Scarica il codice Sorgente ASM

  

bulletLa tecnica è quella del programma precedente, con qualche variante significativa:
bulletl'esecuzione del programma viene fermata a livello xxx01 (CALL KEYwait), in attesa della pressione di un tasto qualunque
bulletsi rileva per prima l'eventuale pressione del tasto ESC (CMP AL,ESC, JZ xxx04) imponendo, in questo caso, il ritorno al sistema operativo, dopo un messaggio di commiato
bulletla specificità di EsA014.ASM è quella di controllare il codice ascii ricevuto in AL per vedere se è compreso tra ''A' (codice 41H) e 'Z' (codice 5AH) oppure tra 'a' (codice 61H) e 'z' (codice 7AH)
bulletse non è così si salta a livello xxx03, dove viene mostrato il messaggio d'errore e poi si rientra in attesa tasti; altrimenti stampa in sequenza il rispettivo carattere, a livello xxx02, sulla seconda riga del monitor
bulletè interessante notare l'algoritmo assembly utilizzato per la verifica; per capirlo osserva questo schema:

  

001FH   3039H   415AH   617AH   80FFH
Ascii di Controllo ..... '0'÷'9' ..... 'A'÷'Z' ..... 'a'÷'z' ..... Ascii Estesi
       

NO JA xxx03 ─>

<───── JB xxx03 ── NO ───┤

       
         

<──── JB xxx02 ─── SI ───────────┤

<─── JBE xxx03 ─── NO ─────────────┤

   
0÷31   48÷57   65÷90   97÷122   128÷255

  

bulletDunque i caratteri ascii non ci interessano se il loro valore è:
bullet più grande dell'ultima lettera minuscola, 'z'=7AH (CMP AL,'z', JA xxx03, Above)
bullet più piccolo della prima lettera maiuscola, 'A'=41H (CMP AL,'A', JB xxx03, Below)
bullet più piccolo della prima lettera minuscola, 'a'=61H (CMP AL,'a', JB xxx03, Below) se prima abbiamo escluso tutte le lettere maiuscole, ''A'÷''Z' (= 41H÷5AH)  (CMP AL,'Z', JBE xxx02, Below Equal)

               

Suggerimento Non dimenticare le Regole (vedi fondo pagina) che governano la gestione dei numeri senza segno, come i codici Ascii lasciati in AL dalla procedura KEYwait.

  

bulletAnche per questo esercizio ti ho preparato l'estratto del file Listato EsA014.LST, generato dall’assemblatore; con esso puoi provare una eventuale analisi in ambiente Debug:

  

Scarica il file
EsA014.LST

    

Pagina Precedente Palestra Apprendisti Pagina Successiva Esercizio n° A014 4/5   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
74 di 157
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    

PALESTRA » Apprendisti » Es.001 Es.002 Es.003 Es.004 Es.005 Es.006 Es.007 Es.008 Es.009 Es.010 Es.011 Es.012
Es.013 Es.014 Es.015 Es.016 Es.017 Es.018 Es.019 Es.020 Es.021 Es.022 Es.023 Es.024
Es.025 Es.026 Es.027 Es.028 Es.029 Es.030 Es.031 Es.032 Es.033

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

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