Qual è l'algoritmo di Allison?

-3

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 

link

    
posta Will 11.08.2017 - 18:06
fonte

1 risposta

2

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).

  • AGGIUNGI  notare che ADD imposta il flag di trasporto (CF) e anche il flag ausiliario (AF)
  • DAA  nota che DAA consuma sia il flag di carico che la bandiera ausiliaria
  • ADC  nota che ADC funziona come ADD ma somma anche il Carry Flag (CF)
risposta data 11.08.2017 - 19:19
fonte

Leggi altre domande sui tag