| Dunque, se la stringa da convertire non è
nulla e ha meno di 6 caratteri ascii
numerici:
| se è composta esattamente da
5 caratteri non ha bisogno di manipolazioni: è il caso di default |
| in tutti gli altri casi per facilitare la successiva operazione di conversione,
è necessario ottimizzare la stringa:
| di questo si occupano le istruzioni contenute tra
DEC_W2
e LOOP DEC_W2 |
| dopo 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 |
| posto 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 |
|
| viene 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 |
| per dare peso alle singole
cifre utilizza, di volta in volta, un diverso moltiplicatore: 1, 10=000AH, 100=0064H, 1000=03E8H
e 10000=2710H |
| nonostante la sua complessità il meccanismo delle
moltiplicazioni successive è l'unico
perseguibile per raggiungere il risultato |
| in 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 |
|