i am not understanding as to what can be done in this case single digit multiplication was possible using the AAM instruction however for AAM you need unpacked BCD therefore the result after two digit multiplication wont be accumulated in the AX register...
so i need an idea as to how i can proceed with this problem .thank you
here is how the input should look like (to take one two digit number) and BCD is desirable
mov dx,offset msg
mov ah,09h
int 21h
mov ah,01h
int 21h
mov ch,al
sub ch,30h
ror ch,04h
mov ah,01h
int 21h
mov cl,al
sub cl,30h
add cl,ch
mynumber1 db ?
mynumber2 db ?
mov ah,01h
int 21h
sub al, 30h <- ASCII to value
mov bl, 0Ah
mul bl <- multiply al with 10
mov mynumber1, al <- mynumber1 now stores the tens (i.e. if you entered 8 it's now 80)
mov ah,01h
int 21h
sub al, 30h <- ASCII to value, al now stores the ones
add mynumber1, al <- now your two-digit number is completely in mynumber1
Now repeat the same for mynumber2
. Then:
mov al, mynumber1
mov bl, mynumber2
mul bl
Now the product is in AX
. Proceed by converting the content of AX
back to BCD, if you really need to.
The following code will print a number with up to 4 digits stored in AX:
xor dx,dx
mov bx,03E8h
div bx
call printdig
mov ax,dx
xor dx,dx
mov bx,0064h
div bx
call printdig
mov ax,dx
xor dx,dx
mov bx,000Ah
div bx
call printdig
;remainder from last div still in dx
mov al,dl
call printdig
Note that you need the following helper function, which prints a single digit from al
:
printdig proc
push dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
pop dx
ret
printdig endp