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° A011 4/5 [61 di 157] 

               

Analisi del Codice · Dettaglio della Fase Iniziale e Finale (UnaTantum) · Analisi del Main Loop · Conclusioni

Acquisizione Caratteri - Aspetta la pressione di un tasto qualunque e ne fa eco a video
Analisi del Main Loop

               

bulletLe caratteristiche del progetto EsA011.ASM (e di qualunque altro, in futuro) sono affidate ad una sequenza di istruzioni racchiusa tra un'etichetta (xxx00:) e l'istruzione di salto che impone, alla fine della sequenza, il rientro; ma vediamo con calma questa importante struttura.

  

bulletLa vera novità dei sorgenti, a partire da questo, è la presenza del Main Loop: dopo la proposta dell'immagine iniziale (Desktop, piano di lavoro) ogni programma  deve fermarsi in attesa della pressione di tasti:

  

Console - Video & Tastiera

Esercizio MOLTO 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

  

bullet In questo modo ogni progetto può finalmente prendere decisioni, naturalmente per intercessione della potente procedura KEYwait.

  

Suggerimento E' assolutamente consigliabile fermarsi un po' per leggere la scheda di questa procedura, con particolare attenzione per le ultime sue 4 pagine.

  

bulletDi fatto la KeyWait ferma l'esecuzione del programma in attesa della pressione di un tasto qualunque e, non appena questo evento accade, rende subito disponibili il suo codice Ascii (lasciato in AL) e il suo codice di scansione (lasciato in AH).

  

bulletVediamo insieme cosa succede nel Main Loop di EsA011.ASM; se hai seguito il consiglio di poco fa sei ora in grado di scoprire se il tasto premuto è tra quelli che tu hai autorizzato:
bulletin effetti notiamo che l'unico filtro imposto alle informazioni riguarda il solo tasto ESC
bulletletteralmente le due istruzioni del filtro pur ampiamente commentate nel sorgente, significano:
bulletCMP AL,ESC_: "il codice (ascii) lasciato in AL da KeyWait è quello del tasto ESC?"
bulletJZ xxx01: "se è così salta alla locazione indicata da xxx01", cioè esci dal Main Loop
bullet"altrimenti prosegui con l'istruzione successiva" (non c'è scritto fisicamente, ma è così)
bulletche significa? Pensaci un po'... e poi prosegui con la lettura.

  

bulletBeh, significa che il nostro programma:
bulletaccetta tutti i tasti possibili ed immaginabili!
bulletil filtro introdotto (per il solo tasto ESC) serve solo per porre termine all'attesa imposta nel Main Loop; nella pagina precedente abbiamo visto che, a livello xxx01:, si pone definitivamente fine all'esecuzione del programma
bulletse il tasto premuto non è ESC il codice assembly procede con l'esecuzione di CALL BIOchr1, che provvede a stampare il carattere ascii associato al tasto premuto stesso, lasciato come detto in AL da KeyWait
bulletnon appena il carattere ascii è stato posto a video (nella posizione di stampa corrente) il programma torna in attesa a livello xxx00, con l'esecuzione di JMP SHORT xxx00
bulletla direttiva SHORT usata nell'istruzione di salto JMP è un accorgimento (facoltativo) che consente di risparmiare un byte di codice, ma è possibile solo se il salto viene eseguito fino a 127 locazioni in avanti e 128 indietro. (cosa assolutamente verificata, nel nostro caso...)

  

bulletBene... Come primo assaggio non c'è male: adesso sei in grado di gestire il tuo computer per dare (sul video) e per avere (dalla tastiera); basterà dare libero sfogo alla tua fantasia.

  

bulletSe vuoi gestire una eventuale analisi in ambiente Debug sai come fare...; comunque ti ho preparato l'estratto del file Listato EsA011.LST, generato dall’assemblatore per questo esercizio:

  

Scarica il file
EsA011.LST

    

Pagina Precedente Palestra Apprendisti Pagina Successiva Esercizio n° A011 4/5   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
61 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