[Assembly] Assembler

Pianella1
Ciao a tutti chiedo aiuto su questo programma se c'è qualcuno che mi può spiegare bene cosa fare grazie :)
Il testo è questo
Dati in input( con int 21) due numeri inferiori compresi tra 0 e 4
Visualizzare con int 21 la somma in decimale
Ad esempio entrano prima 3 e poi 4 e si deve visualizzare 7
NB IL CARATTERE ASCI DI 0 e 48 decimale e di 9 57 decimale

Risposte
Luc@s
Piattaforma su cui assemblare?

Pianella1
DOS box turbo debbugger

Pianella1
Nessuno ragazzi?

Luc@s

Pianella1
Proprio nessuno sa fare questo programma

apatriarca
Perché non provi a risolverlo tu? Che problemi stai incontrando?

Pianella1
Non riesco a capire come fare un numero compreso tra 0e 4
Per visualizzare la somma in decimale devo fare
Mov ah,02
Int 21
Ma per farlo in decimale?

Luc@s
Starò invecchiando ma da quel codice non capisco molto..

Pianella1
Cioè per scrivere un numero tra 0e 4 come faccio?

Pianella1
Può essere così?
Mov ah,01
Int 21
Mov dl,al
Sub dl,30 sottraggo 30 in modo che me lo da un decimale
?

Luc@s
"Pianella":
Cioè per scrivere un numero tra 0e 4 come faccio?


Carichi in registro, stampi, esci.
Donde sta il problema?

Pianella1
Che non lo riesco a fare ahahah dai spiegatemi per favore

Pianella1
Dai ragazzi

nessuno.nobody
int 21h è assembly... richiama un iterrupt di indice 0x21 che sotto dos fa azioni particolari.

Comunque devi leggere un dato tramite l'int 21 (non so il valore del registro ah(?))
controllare e ciclare fino a che non sia una cifra tra '0' e '4' (ricorda che quando leggi da tastiera "leggi caratteri non numeri", quindi '0' == 0x30 '4' = 0x34)
sottrarre al valore 0x30
ripetere per il secondo numero
fare la somma
siccome la somma è minore di 8 [0,4siccome la somma è minore o uguale a 8 [0,4]+[0,4] = [0,8]
il risultato avrà una sola cifra. quindi basta sommare 0x30 e chiamare l'int 21 (con il valore giusto di ah(?)) per stampare

Fonte: Commento qui

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