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° A017 4/6 [89 di 157] 

               

Analisi del Codice · Progetto procedura Byt2Asc · Analisi di una Matrice di Dati a 8 bit · Conclusioni

Gestione Numeri Binari - Conversione da byte a 2 caratteri Ascii EXAD - Progetto di Byt2Asc
                                        Stampa 256 numeri esadecimali a 8 bit in sequenza ordinata
Progetto della Procedura Byt2Asc [2 di 2]

               

bulletVediamo dunque il codice assembly che si occupa della Conversione di un byte nei 2 caratteri Ascii esadecimali, raccolto in una Procedura interna, da inserire nella zona ad essa riservata nel nostro EsA017.ASM, dopo la definizione delle variabili e dei testi del programma:

  

Console - Video & Tastiera

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

  

bulletInnanzi tutto va tenuto presente che il byte da visualizzare deve essere disponibile, in ingresso, nel registro AL; esso può assumere uno dei 256 valori da 00H a FFH, espresso genericamente dall'espressione xyH, con x e y in grado di assumere uno qualunque dei simboli, da 0 a 9 e da A a F, del sistema di numerazione esadecimale.
bulletIn pratica x e y rappresentano rispettivamente i 4 bit (nibble) più e meno significativi del byte da convertire

  

bulletCon questa premessa affrontiamo insieme la spiegazione; è un po' impegnativa, ma una volta assimilata ti aiuterà a crescere; affidati ai commenti presenti nel codice e al mio supporto.

  

bulletAll'inizio si provvede a salvare nello stack (PUSH AX) il valore del byte da visualizzare (AL=xyH), per la seconda fase.

  

bulletPrima Fase: messa a video del carattere ascii corrispondente alla parte (nibble) alta del byte da convertire
bulletle istruzioni SHR AL,1 spostano di un bit verso destra tutto il contenuto del byte xyH, introducendo da sinistra un bit di valore nullo; dopo 4 esecuzioni di SHR il contenuto di AL è dunque della forma 0xH, cioè un numero binario compreso tra 00H a 0FH, corrispondente al nibble alto del byte da convertire
bulletse il numero ottenuto è compreso tra 00H a 09H (CMP AL,0AH) si prosegue a livello NUM: e gli si somma il numero 30H (ADD AL,30H); per magia il byte presente in AL diventa dunque compreso tra 30H a 39H, proprio il codice esadecimale dei caratteri ascii da 0 a 9
bulletse il numero ottenuto è compreso tra 0AH a 0FH si prosegue subito sotto dove gli si somma prima il numero 07H (ADD AL,07He poi il numero 30H (ADD AL,30H), per un totale di 37H; il byte presente in AL diventa dunque compreso tra 41H a 46H, proprio il codice esadecimale dei caratteri ascii da A a F
bulletnell'uno o nell'altro caso il carattere cosi ricostruito viene posto a video (CALL BIOchr1), visualizzando così la parte (nibble) alta del byte da convertire

  

bulletSeconda fase: messa a video del carattere ascii corrispondente alla parte (nibble) bassa del byte da convertire
bulletl'istruzione POP AX recupera in AL il valore del byte da convertire
bulletl'istruzione AND (AND AL,0FH), trasforma il byte xyH nella forma 0yH, cioè ancora un numero binario compreso tra 00H a 0FH, corrispondente però, ora, al nibble basso del byte da convertire
bulletla parte finale è identica alla precedente, cosicchè questo byte sarà trasformato nel codice esadecimale del carattere ascii corrispondente, da 0 a 9 (tra 30H a 39H) o da A a F (41H a 46H) e posto (CALL BIOchr1), provvedendo alla visualizzazione della parte (nibble) bassa del byte da convertire

  

bulletVoglio sottolineare che la stampa dei 2 caratteri è gestita dalla Procedura BIOchr1, che provvede a porli a video con il colore precedentemente predisposto in CS:[ATTRIB], nella posizione di stampa corrente, lasciata sempre aggiornata per il carattere successivo.

    

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