.model small
.stack 100h
.data
Spc db 0dh,0ah, " $" ;New Line
;Bases Calculation in Calculator
BsA31 db 0dh,0ah, " Base 03 Addition " ;Addition Base 03
db 0dh,0ah, " "
db 0dh,0ah, "Addend[00-22]: $"
BsA32 db 0dh,0ah, "Augend[00-22]: $"
SumA db 0dh,0ah, " Sum is : $" ;Sum
;Calculation Logic
Dg11 db 0
Dg12 db 0
NoAd1 db 0
NoAd2 db 0
SumAd db 0
.code
main proc
mov ax,@data ;initialize ds
mov ds,ax
AdBs3:
mov ah,09h
lea dx, Spc
int 21h
lea dx, BsA31 ;Addend
int 21h
mov ah,01h
int 21h ;1st Digit
sub al,30h
mov ch,al
mov ah,01h
int 21h ;2nd Digit
sub al,30h
mov cl,al
jmp AdBs32
AdBs32:
mov ah,09h
lea dx, BsA32 ;Augend
int 21h
mov ah,01h
int 21h ;1st Digit
sub al,30h
add al,ch ;4
mov ch,al
mov ah,01h
int 21h ;2nd Digit
sub al,30h
add al,cl
mov cl,al
;Addition
mov ah,09h
lea dx, SumA
int 21h
mov ah,0000h
mov bl,03h
mov al,ch
div bl ;1 r1
mov ch,ah ;0102
mov bh,al ;0103
mov ah,0000h
mov al,cl ;4
add al,bh ;4 + 1 = 5
div bl ;1 r2
mov bx,ax ;0201 > r = 02 q = 01
mov ah,02h
add bx,3030h
mov dl,bl
int 21h
mov dl,bh
int 21h
add ch,30h
cmp ch,30h
jz AdBs3
mov dl,ch
int 21h
mov ah,4Ch ;end here
int 21h
AdDg3:
sub bh,30h
mov al,bh
mov cl,10h
mul cl
mov cx,ax
add cx,3030h
mov ch,10h
cmp cl,ch
je AdDg3
mov ah,4Ch ;end here
int 21h
AdDg32:
mov ah,02h
mov dl,cl
int 21h
mov ah,4Ch ;end here
int 21h
main endp
end main
Output Error:
12 + 12 is the correct but other is not like 21 + 12 / 12 + 12...