Sezione |
Indirizzi Base
Registri Interni
|
Palestra Livello Apprendisti Livello Esperti |
Programmare in Assembly |
Esercizio n° A027 3/6 [130 di 157] |
|
|
||
Aritmetica con Numeri Binari - SOMMA di 2 numeri DECIMALI a 2 cifre | ||
Dettaglio sulla Prima Fase: acquisizione dei 2 operandi |
|
Aggiornato 12 febbraio 2007 - [nel sorgente Es027.ASM sostituito JG In_dato con JA In_dato; ricompilare l'esercizio] |
La prima fase del progetto si occupa dell'acquisizione degli operandi da Tastiera: |
|
|
Esercizio |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
|
Come si può vedere consiste in 2 pezzi di codice quasi uguali; in entrambi:
|
|
La Procedura In_dato rileva la pressione di tasti esclusivamente numerici, salvando i rispettivi codici ascii nelle locazioni puntate in ingresso da SI: |
|
|
In dettaglio:
|
|
00H÷1FH | 30H÷39H | 80H÷FFH | ||
Ascii di Controllo | ..... | '0'÷'9' | ..... | Ascii Estesi |
<─ JB In_dato ─ NO ───┤ |
├─── NO ─ JA In_dato ──> |
|||
0÷31 | 48÷57 | 128÷255 |
|
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. |
|
se invece si tratta di un tasto autorizzato (numerico) salva il suo codice ascii nella posizione corrente della stringa (MOV CS:[DI],AL) e, prima di rientrare in attesa tasti, punta la locazione successiva della stringa (INC SI) e mette a video il carattere numerico appena salvato (CALL BIOchr1) |
|
Entrambe le variabili locali devono essere predisposte nell'area destinata ai dati del programma, strutturate su 3 bytes, 2 per i potenziali caratteri ascii numerici (decimali) attesi da tastiera e 1 per il carattere terminatore, il byte 00H |
|
|
A questo proposito ti faccio notare una particolarità della Procedura locale In_dato:
|
|
Questa scelta è discutibile e sconsigliabile ma, anche se la modifica che tenga conto di questo aspetto non è difficile, ho ritenuto di non farla per 2 ragioni:
|
|
Quando progetterai programmi come questo non dimenticare che prevenire è meglio di combattere; prova a pensare cosa sarebbe successo se subito dopo la variabile locale Depo2 fosse cominciato il codice assembly di una procedura o del main program... |
|
Palestra Apprendisti | Esercizio n° A027 3/6 | |||||||
130 di 157 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|