Che cos'è Algorithm di Allison e in che modo aiuta a convertire cifre esadecimali in caratteri ASCII?
;algorithm (found online)
ADD AL, 90h
DAA
ADC AL, 40h
DAA
Per prima cosa, dobbiamo capire gli input e gli ampli; uscite a questa sequenza.
Una cifra esadecimale è semplicemente un valore a 4 bit, qui fornito nel registro AL. Quindi, stiamo provando a convertire una cifra nell'intervallo da 0x0 a 0xF nel carattere ASCII corrispondente per le cifre esadecimali; l'output è fornito anche AL.
Per convertirli abbiamo bisogno della seguente mappatura, che è derivata direttamente dalla tabella ASCII :
input | output
hex value | ascii char hex value
0x00 | '0' 0x30
0x01 | '1' 0x31
... | ... ...
0x09 | '9' 0x39
0x0A | 'A' 0x41
... | ... ...
0x0F | 'F' 0x46
Si noti che nella codifica ASCII, '0' attraverso '9' sono consecutivi, e 'A' thru 'F' sono anche; tuttavia, c'è un'interruzione nella corsa (tra '9' e 'A'), quindi è richiesta una certa logica condizionale.
Il codice che stai mostrando è migliore (cioè più breve) rispetto all'utilizzo di test condizionali & rami per eseguire la stessa mappatura.
Come esercizio per il lettore prova a inserire 0x9 in AL e simula l'esecuzione della sequenza usando i seguenti riferimenti (quindi prova con 0xA o 0xF in AL).
Leggi altre domande sui tag assembly algorithms