[Assembly] Assembler
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

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
Piattaforma su cui assemblare?
DOS box turbo debbugger
Nessuno ragazzi?
Proprio nessuno sa fare questo programma
Perché non provi a risolverlo tu? Che problemi stai incontrando?
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?
Per visualizzare la somma in decimale devo fare
Mov ah,02
Int 21
Ma per farlo in decimale?
Starò invecchiando ma da quel codice non capisco molto..
Cioè per scrivere un numero tra 0e 4 come faccio?
Può essere così?
Mov ah,01
Int 21
Mov dl,al
Sub dl,30 sottraggo 30 in modo che me lo da un decimale
?
Mov ah,01
Int 21
Mov dl,al
Sub dl,30 sottraggo 30 in modo che me lo da un decimale
?
"Pianella":
Cioè per scrivere un numero tra 0e 4 come faccio?
Carichi in registro, stampi, esci.
Donde sta il problema?
Che non lo riesco a fare ahahah dai spiegatemi per favore
Dai ragazzi
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