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° A022 3/4 [112 di 157] 

               

Analisi del Codice · Progetto procedura Wor2Dec · Conclusioni

Gestione Numeri Binari - Conversione da word a Ascii DECIMALI - Progetto di Wor2Dec
                                        Mostra valore binario a 16 bit e decimale di 80 casuali
Progetto della Procedura Wor2Dec

               

bulletPer la Conversione di una word nei caratteri Ascii decimali (fino a 5) corrispondenti è sufficiente estendere i concetti già descritti nel precedente progetto per la Procedura interna Byt2Dec.

  

bulletLa word da visualizzare deve essere fornita, in ingresso, nel registro AX e può assumere uno dei 65536 valori da 0000H a FFFFH; sarà trasformata in una stringa contenente l'espressione ascii di un numero da 0 a 65535.

  

bulletRisulta subito evidente che la lunghezza della stringa è potenzialmente diversa in funzione del valore binario che è chiamata a convertire: possono essere necessari da 1 (da 0000H a 0009H) a 5 (da 2710H a FFFFH) caratteri ascii numerici.

  

bulletPer rendere omologa la lunghezza della stringa sarebbe necessario stampare anche gli '0' non significativi, con espressioni del tipo '00002' o 00198', oppure sostituirli con spazi, con espressioni del tipo '    12' o '  1993'.

  

bulletIn entrambi i casi l'estetica ne risente, per cui ho preferito evitare la stampa degli '0' non significativi.

  

bulletCon questa premessa vediamo la tecnica utilizzata per ottenere la rappresentazione decimale di un numero binario a 16 bit:

  

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

  

bulletIn pratica è divisa in 5 fasi consecutive, legate alla ricerca delle potenziali decine di migliaia, migliaia, centinaia, decine e unità del numero fornito in ingresso in AX:
bulletil numero a 16 bit da convertire viene formattato a 32 bit (MOV DX,0000H), per consentire l'azione corretta della successiva divisione
bulletse il valore presente in AX è più grande di 10000 si carica il divisore BX (MOV BX,10000) e si provvede alla divisione di DX,AX con BX (DIV BX); il risultato, il valore delle decine di migliaia, lasciato in AX dall'istruzione DIV, viene subito posto a video dalla Procedura interna STAasci (CALL STAasci)
bulletil resto, lasciato in DX dalla precedente divisione, viene riformattato a 32 bit (MOV AX,DX, MOV DX,0000H), per consentire l'azione corretta della successiva
bulletsi carica di nuovo il divisore BX (MOV BL,1000) e si esegue una nuova divisione per determinate il valore delle migliaia, lasciato sempre in AX e subito posto a video dalla STAasci
bulletil resto, lasciato in DX è evidentemente legato al valore delle centinaia, decine ed unità per cui è affidato alla Byt2Dec
bulletin sostanza, dopo aver spostato questo valore in AX, la presente procedura prosegue attraverso la Byt2Dec , di cui già conosciamo tutto; per evitarti il disagio di un rimando ad altre pagine te la riporto qui sotto:

  

  

bulletNaturalmente la procedura di conversione è in grado di accorgersi se il valore presente in AX è minore di 10000, applicando solo la parte di codice strettamente necessaria.

  

bulletLa stampa dei caratteri generati dalla conversione è gestita dalla Procedura interna STAasci (a sua volta sostenuta 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° A022 3/4   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
112 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