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

               

Analisi del Codice · Progetto procedura Dec2Wor - 1 · Progetto procedura Dec2Wor - 2 · Conclusioni

Gestione Numeri Binari - Conversione da stringa Ascii decimale a DWord - Progetto Dec2Wor
                                        Aspetta pressione fino a 5 tasti Numerici e calcola valore binario a 32 bit
Progetto della Procedura Dec2Wor [2 di 2]

               

bulletVediamo ora la seconda parte della Dec2Wor:

  

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

  

bulletVa sottolineato che, nonostante sia assolutamente necessario disporre a un'area di memoria (variabile DEPO) composta da 6 bytes (i 5 caratteri e il terminatore 00H), essa può risultare riempita anche parzialmente; è il caso del nostro programma e, in generale, di quelli che immettono in essa i codici dei tasti numerici premuti.

  

bulletIn questi casi:
bulletla quantità di caratteri immessa nella stringa può essere inferiore a 5 per effetto della prematura pressione di Invio
bulletil terminatore risulta anticipato in posizione precedente rispetto a quella del sesto byte, prevista dalle specifiche
bulletdopo un'acquisizione da tastiera, la stringa potrebbe per esempio contenere '183',00H,'0',00H, con la parte iniziale immessa da tastiera e la parte finale frutto della predisposizione di default

  

bulletDunque, se la stringa da convertire non è nulla e ha meno di 6 caratteri ascii numerici:
bulletse è composta esattamente da 5 caratteri non ha bisogno di manipolazioni: è il caso di default
bulletin tutti gli altri casi per facilitare la successiva operazione di conversione, è necessario ottimizzare la stringa:
bulletdi questo si occupano le istruzioni contenute tra DEC_W2 e LOOP DEC_W2
bulletdopo aver spostato tutti i caratteri effettivamente presenti di un posto a destra, si aggiungono da sinistra tanti caratteri '0' quanti sono necessari per far assumere alla stringa comunque una dimensione di 5 caratteri
bulletposto T=terminatore=00H, l'aspetto del contenuto di DEPO può essere così illustrato: prima dell'acquisizione '00000T', dopo l'acquisizione 183T0T, dopo l'aggiustamento 00183T
bulletviene operata la conversione della stringa ottimizzata sommando al totale progressivo (DI,BP) il contributo di peso 1 delle unità e i pesi 10, 100, 1000, 10000 delle eventuali decine, centinaia, migliaia, decine di migliaia
bulletper dare peso alle singole cifre utilizza, di volta in volta, un diverso moltiplicatore: 1, 10=000AH, 100=0064H, 1000=03E8H e 10000=2710H
bulletnonostante la sua complessità il meccanismo delle moltiplicazioni successive è l'unico perseguibile per raggiungere il risultato
bulletin uscita il risultato a 32 bit della conversione è affidato alla coppia DX,AX e la variabile DEPO conterrà la stringa di partenza, giustificata a destra e con davanti degli eventuali '0' non significativi

  

bulletLa procedura non provvede alla stampa del risultato; se si desidera questo servizio basta chiamare la Procedura Wor2Asc, progettata per generare la stringa ascii esadecimale corrispondente al valore del byte passatole in AX e poi porla a video con il colore precedentemente predisposto in CS:[ATTRIB], nella posizione di stampa corrente.

  

bulletPrima della stampa del risultato è comunque opportuno provvedere alla verifica di eventuali errori, controllando se il valore di DX è FFFFH
bulletIl nostro progetto si occupa di tutto, come puoi vedere nella prossima pagina.

    

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