Conversione da decimale a binario in assembler

vik3
Salve a tutti,
probabilmente il problema è già stato affrontato da molti di voi, ma io francamente non ne esco e materiale in rete non ne ho trovato che risolvesse veramente il problema.
Il problema è questo: ricevo da una periferica (8255) un numero < 100 in decimale e devo convertirlo in binario e poi buttarlo in output su un altra periferica.
Ora io so che facendo una divisione per 2 del valore ricevuto messo nel registro AX trovo in AH il valore del resto che rappresenta il bit più significativo, iterando fino a trovare il quoziente uguale a 0 trovo man mano i bit che rappresentano in binario il numero.
Ma come faccio a mettere insieme tutti gli 8 bit?
Ho provato a mettere il resto in un vettore di byte ma poi non riesco poi a metterli insieme correttamente.
C'è qualcuno che ha un'idea?

Grazie

Risposte
apatriarca
Il tuo problema non è molto chiaro. Cosa vuol dire che i numeri in input sono in decimale? Sono in BCD? Io credo che tu ti stia facendo molti più problemi del necessario, la rappresentazione binaria è infatti quella più naturale per un computer... Devi semplicemente sommare alla cifra meno significativa, quella più significativa moltiplicata per 10. Se sei in grado di estrarre le due cifre decimali hai risolto totalmente il problema.

vik3
In effetti non mi sono spiegato bene.
Si tratta di un esercizio in cui ricevo in input da tastiera alcuni numeri, per esempio il numero 60 e devo rappresentarlo in output in binario cioè devo mandare in output 00111100

Grazie

apatriarca
Potresti usare qualcosa come (questo è C):
for (i = 7, mask = 1 << 7; i >= 0; --i, mask >> 1) {
    bin[i] = (n & mask) >> i;
}

vik3
Grazie, era più o meno quello che avevo in mente, però in assembler non ho a disposizione un vettore che mi rappresenta un registro a 8 bit da riempire un bit alla volta...

apatriarca
Ma se devi stamparlo.. manda in output ognuno dei valori che ho assegnato all'array..

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.