good evening! I have brushed up my old knowledge of assembly and I am close to the solution of this problem. I am going to sum two numbers. It works with one digit but it fails with two. I got lost again..if someone could help, I would really appreciate it. Thanks again. PS I wanted to delete my old posts but I didn't catch how to do that.
What I have tried:
.MODEL SMALL
.STACK 100h
.DATA
PRE1 DB 'digits of the number: ', '$'
DOM1 DB 'digit the first number: ', '$'
PRE2 DB 'digits of the second number: ', '$'
DOM2 DB 'digit the second number: ', '$'
RISP1 DB 'the sum is: ', '$'
VISUALIZZA DB 'you digited: ', '$'
ACAPO DB 13,10, '$'
NUM1 DB ?
NUM2 DB ?
CIFRE DB ?
BASE DB 10
CONT DB 0
.CODE
STAMPA MACRO frase
MOV AH, 09H
LEA DX, frase
INT 21H
ENDM
.STARTUP
MOV AX,@DATA
MOV DS, AX
STAMPA PRE1
MOV AH, 01H
INT 21H ;acq the number of digits
MOV CIFRE, AL
STAMPA ACAPO
STAMPA DOM1
MOV AH, 01H
INT 21H ;acq first digit
SUB AL, 30H
CMP CIFRE, '2'
; it s OK here
JE DOPPIA
MOV NUM1, AL
JMP SECONDO
DOPPIA: MUL BASE
MOV BH, AL
INT 21H
MOV AH, 01H
INT 21H ; 2° num
SUB AL, 30H
MOV BL, AL
MOV BL, BH
MOV BH, 0
STAMPA ACAPO
MOV NUM1, BL
; parte aggiunta dopo
SUB AL, 30H ; transformation
MOV DL, AL ;
ADD BL, BH ; sum to get the first number
MOV BH, 0 ; clear
STAMPA ACAPO
MOV NUM1, BL
STAMPA ACAPO
;prove 1
MOV CL, NUM1
CICLO0: MOV AL, CL
MOV AH, 0
DIV BASE
MOV BL, AH ; save the rest in BL
MOV CL, AL ; quotient
ADD BL,30H ;TRASFORMA IL RESTO IN CHAR
MOV BH, 0
PUSH BX
;MOV AH, 02H
;MOV DL, BL
;INT 21H ;VISUAL
INC CONT
CMP CL, 0 ;if it's not over..
JNE CICLO0
WHILE: CMP CONT, 0
JE ESCIW
POP DX
MOV AH, 02H
INT 21H
DEC CONT
JMP WHILE
ESCIW: NOP
STAMPA ACAPO
; let's go with the second number
SECONDO:
STAMPA ACAPO
STAMPA PRE2
MOV AH, 01H
INT 21H
MOV CIFRE, AL
STAMPA ACAPO
STAMPA DOM2
MOV AH, 01H
INT 21H ; reading the first digit
SUB AL, 30H ; conversion
CMP CIFRE, '2'
JE DOPPIA1
MOV NUM2, AL
JMP SOMMA
DOPPIA1:
MOV AH, 0
MUL BASE
MOV BH, AL
INT 21H
MOV AH, 01H
INT 21H ; reading the next
SUB AL, 30H
MOV BL, AL
MOV BL, BH
MOV BH, 0
STAMPA ACAPO
MOV NUM2, BL
;prova 2
STAMPA ACAPO
;prova 1
MOV CL, NUM2
CICLO1: MOV AL, CL
MOV AH, 0
DIV BASE
MOV BL, AH
MOV CL, AL
ADD BL,30H
MOV BH, 0
PUSH BX
;MOV AH, 02H
;MOV DL, BL
;INT 21H ;VISUALIZZ
INC CONT
CMP CL, 0
JNE CICLO1
while1: CMP CONT, 0
JE ESCIW1
POP DX
MOV AH, 02H
INT 21H
DEC CONT
JMP WHILE1
ESCIW1: NOP
SOMMA:
STAMPA ACAPO
STAMPA RISP1
MOV CL, NUM1
ADD CL, NUM2
CICLO: MOV AL, CL
MOV AH, 0
DIV BASE
MOV BL, AH
MOV CL, AL
ADD BL,30H
MOV BH, 0
PUSH BX
;MOV AH, 02H
;MOV DL, BL
;INT 21H ;VISUALIZZ
INC CONT
CMP CL, 0
JNE CICLO
whileS: CMP CONT, 0
JE FINE
POP DX
MOV AH, 02H
INT 21H
DEC CONT
JMP WHILES
FINE: NOP
MOV AH, 4CH
INT 21H
END