.model small
.stack 100h
.data
msg1 db 13,10,13,10, "Enter 1st Number : $"
msg2 db 13,10, "Enter 2nd Number : $"
msg01 db 13,10,13,10, "Enter base Number : $"
msg02 db 13,10, "Enter power Number : $"
msgEr db 13,10, "Error $"
msgCh db 13,10, "Press A to ADD , S to SUBTRACT ,M to MULTIPLY, D to DIVIDE,F to FIND FACTORIAL,P to FIND X POWER Y, X to EXIT : $ "
msgSum db 13,10,13,10, "Sum is : $"
msgDif db 13,10,13,10, "Difference is : $"
msgDiv db 13,10,13,10, "Quotient is : $"
msgMul db 13,10,13,10, "Product is : $"
msgPOW db 13,10,13,10, "ANS is : $"
tmp db ?
.code
start:
mov ax, @data
mov ds, ax
lea dx, msgCh
mov ah, 09h
int 21h
mov ah, 1
mov dl, al
int 21h
cmp al,'d'
je dividing
cmp al,'a'
je adding
cmp al,'s'
je subtracting
cmp al,'m'
je multiplying
cmp al,'f'
je fact
cmp al,'p'
je x_pow_y
cmp al,'x'
mov ah, 4ch
int 21h
error:
lea dx,msgEr
mov ah,09h
int 21h
jmp start
;//////////////////////////////////////
dividing:
lea dx, msg1
mov ah, 9
int 21h
start1:
mov ah, 1
int 21h
cmp al,0dh
je next1
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start1
next1:
push bx
lea dx,msg2
mov ah,09h
int 21h
mov bx,0
start2:
mov ah,1
int 21h
cmp al,0dh
je d
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start2
d:
pop ax
mov dx,0
div bx
push ax
lea dx,msgDiv
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp break
;///////////////////////////////////
adding:
lea dx, msg1
mov ah, 9
int 21h
mov bx, 0
start01:
mov ah, 1
int 21h
cmp al,0dh
je next01
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start01
next01:
push bx
lea dx,msg2
mov ah,09h
int 21h
mov bx,0
start02:
mov ah,1
int 21h
cmp al,0dh
je a
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start02
a:
pop ax
add ax,bx
push ax
lea dx,msgSum
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp break
;///////////////////////////////
multiplying:
lea dx, msg1
mov ah, 9
int 21h
mov bx, 0
start001:
mov ah, 1
int 21h
cmp al,0dh
je next001
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start001
next001:
push bx
lea dx,msg2
mov ah,09h
int 21h
mov bx,0
start002:
mov ah,1
int 21h
cmp al,0dh
je m
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start002
m:
pop ax
mov dx,0
mul bx
push ax
lea dx,msgMul
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp break
;//////////////////////////////////
fact:
lea dx, msg1
mov ah, 9
int 21h
mov bx, 0
start003:
mov ah, 1
int 21h
cmp al,0dh
je l
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start003
l: ;ax=6
mov cx,bx
mov ax,1
jmp l2
l2:
cmp cx,0
je l1
mov dx,0
mul cx
push ax
lea dx,msgPOW
mov ah,09h
int 21h
sub cx,1
pop ax
jmp l2
l1:
mov dx,0
mov bx,10d
jmp break
;//////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\
x_pow_y:
lea dx, msg01
mov ah, 9
int 21h
mov bx, 0
start004:
mov ah, 1
int 21h
cmp al,0dh
je next004
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start004
next004:
push bx
lea dx,msg02
mov ah,09h
int 21h
mov bx,0
start005:
mov ah,1
int 21h
cmp al,0dh
je p
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start005
p:
mov cx,bx
pop ax
mov bx,ax
mov dx,0
c:
cmp cx,1
je c1
mul bx
push ax
lea dx,msgPOW
mov ah,09h
int 21h
sub cx,1
pop ax
jmp c
c1:
mov cx,0
mov dx,0
mov bx,10d
jmp break
;/////////////////////////////// \\\\\\\\\\\\\\\\\\\\\ ' _ '
subtracting:
lea dx, msg1
mov ah, 9
int 21h
mov bx, 0
start0001:
mov ah, 1
int 21h
cmp al,0dh
je next0001
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start0001
next0001:
push bx
lea dx,msg2
mov ah,09h
int 21h
mov bx,0
start0002:
mov ah,1
int 21h
cmp al,0dh
je s
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp start0002
s:
pop ax
sub ax,bx
push ax
lea dx,msgDif
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
break:
div bx
push dx
mov dx,0
inc cx
or ax,ax
jne break
ans:
pop dx
add dl,30h
mov ah,02h
int 21h
loop ans
jmp start
end start