Professional Documents
Culture Documents
Lab 09
Lab 09
Lab 09
Lab 09
For Addition:
For Subtraction:
For Multiplication:
For Division:
Safi Khan 18b-076-CS
For Percentage:
Code:
.model small
.stack 100h
.data
header db 10,13,"Calculator",10,13,"Safiullah Khan",10,13,"18B-076-CS $"
num1 dw ?
num2 dw ?
num3 dw ?
result dw ?
printm db 0044h
.code
main proc
mov ax,@data
mov ds,ax
Safi Khan 18b-076-CS
lea dx,header
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
printmain:
lea dx,menuopt
mov ah,9
int 21h
mov ax,0
mov ah,1
int 21h
sub al,30h
Safi Khan 18b-076-CS
cmp al,1
je inputnumbers
cmp al,2
je addthreenumbers
cmp al,3
je subtractthreenumbers
cmp al,4
je multiplythreenumbers
cmp al,5
je dividenumbers
cmp al,6
je calculatepercentage
lea dx,space
mov ah,9
int 21h
jmp printmain
inputnumbers:
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
Safi Khan 18b-076-CS
int 21h
lea dx,entnum1
mov ah,9
int 21h
mov ah,0
mov ah,1
int 21h
sub al,30h
mov ah,0
mov num1,ax
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,entnum2
mov ah,9
int 21h
mov ah,0
mov ah,1
int 21h
Safi Khan 18b-076-CS
sub al,30h
mov ah,0
mov num2,ax
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,entnum3
mov ah,9
int 21h
mov ah,0
mov ah,1
int 21h
sub al,30h
mov ah,0
mov num3,ax
lea dx,space
mov ah,9
int 21h
jmp printmain
Safi Khan 18b-076-CS
addthreenumbers:
lea dx,addhead
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
mov ax,0
add ax,num1
add ax,num2
add ax,num3
mov result,ax
mov ax,result
lea dx,decimalmsg
mov ah,9
int 21h
Safi Khan 18b-076-CS
adddecimal:
mov ax,result
mov bx,10
mov cx,0
loopprint:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne loopprint
printloop:
pop dx
add dl,30h
mov ah,2
int 21h
loop printloop
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
Safi Khan 18b-076-CS
lea dx,hexmsg
mov ah,9
int 21h
addhexadecimal:
mov ax,result
mov bx,16
mov cx,0
loopprint2:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne loopprint2
printloop2:
pop dx
cmp dx,9
jbe dec
hex:
add dl,30h
add dl,7h
mov ah,2
int 21h
loop printloop2
Safi Khan 18b-076-CS
jmp exithex
dec:
add dl,30h
mov ah,2
int 21h
loop printloop2
exithex:
mov dx,0
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,binarymsg
mov ah,9
int 21h
addbinary:
mov ax,result
mov bx,2
Safi Khan 18b-076-CS
mov cx,0
loopprint3:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne loopprint3
printloop3:
pop dx
add dl,30h
mov ah,2
int 21h
loop printloop3
lea dx,space
mov ah,9
int 21h
jmp printmain
lea dx,space
mov ah,9
int 21h
jmp printmain
subtractthreenumbers:
Safi Khan 18b-076-CS
lea dx,subhead
mov ah,9
int 21h
mov ax,0
mov ax,num1
sub ax,num2
sub ax,num3
cmp ax,50h
ja neg
back:
mov result,ax
mov ax,result
lea dx,space
mov ah,9
Safi Khan 18b-076-CS
int 21h
jmp printmain
neg:
cmp printm,44h
je neg2
exit:
jmp back
neg2:
mov result,ax
mov ax,0ffffh
sub ax,result
add ax,1h
mov result,ax
mov dx,2dh
mov ah,2
int 21h
lea dx,decimalmsg
mov ah,9
int 21h
subdecimal:
mov ax,result
mov bx,10
mov cx,0
subloopprint:
Safi Khan 18b-076-CS
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne subloopprint
subprintloop:
pop dx
add dl,30h
mov ah,2
int 21h
loop subprintloop
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,hexmsg
mov ah,9
int 21h
subhexadecimal:
Safi Khan 18b-076-CS
mov ax,result
mov bx,16
mov cx,0
subloopprint2:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne subloopprint2
subprintloop2:
pop dx
cmp dx,9
jbe dec
subhex:
add dl,30h
add dl,7h
mov ah,2
int 21h
loop subprintloop2
jmp exithex
subdec:
add dl,30h
mov ah,2
int 21h
Safi Khan 18b-076-CS
loop subprintloop2
subexithex:
mov dx,0
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,binarymsg
mov ah,9
int 21h
subbinary:
mov ax,result
mov bx,2
mov cx,0
subloopprint3:
mov dx,0
div bx
push dx
inc cx
Safi Khan 18b-076-CS
cmp ax,0
jne subloopprint3
subprintloop3:
pop dx
add dl,30h
mov ah,2
int 21h
loop subprintloop3
lea dx,space
mov ah,9
int 21h
jmp printmain
lea dx,space
mov ah,9
int 21h
jmp printmain
multiplythreenumbers:
lea dx,mulhead
mov ah,9
int 21h
Safi Khan 18b-076-CS
mov ax,0
mov ax,num1
mov cx,0
mov cx,num2
mul cx
mov cx,0
mov cx,num3
mul cx
mov result,ax
mov ax,result
lea dx,decimalmsg
mov ah,9
int 21h
muldecimal:
mov ax,result
mov bx,10
mov cx,0
mulloopprint:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne mulloopprint
mulprintloop:
Safi Khan 18b-076-CS
pop dx
add dl,30h
mov ah,2
int 21h
loop mulprintloop
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,hexmsg
mov ah,9
int 21h
mulhexadecimal:
mov ax,result
mov bx,16
mov cx,0
mulloopprint2:
mov dx,0
div bx
push dx
Safi Khan 18b-076-CS
inc cx
cmp ax,0
jne mulloopprint2
mulprintloop2:
pop dx
cmp dx,9
jbe dec
mulhex:
add dl,30h
add dl,7h
mov ah,2
int 21h
loop mulprintloop2
jmp exithex
muldec:
add dl,30h
mov ah,2
int 21h
loop mulprintloop2
mulexithex:
mov dx,0
mov dx,10
mov ah,2
Safi Khan 18b-076-CS
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,binarymsg
mov ah,9
int 21h
mulbinary:
mov ax,result
mov bx,2
mov cx,0
mulloopprint3:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne mulloopprint3
mulprintloop3:
pop dx
add dl,30h
mov ah,2
int 21h
Safi Khan 18b-076-CS
loop mulprintloop3
lea dx,space
mov ah,9
int 21h
jmp printmain
lea dx,space
mov ah,9
int 21h
jmp printmain
dividenumbers:
lea dx,divhead
mov ah,9
int 21h
mov ax,num1
mov bx,num2
mov dx,0
div bx
mov result,ax
lea dx,decimalmsg
mov ah,9
Safi Khan 18b-076-CS
int 21h
divdecimal:
mov ax,result
mov bx,10
mov cx,0
divloopprint:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne divloopprint
divprintloop:
pop dx
add dl,30h
mov ah,2
int 21h
loop divprintloop
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
Safi Khan 18b-076-CS
lea dx,hexmsg
mov ah,9
int 21h
divhexadecimal:
mov ax,result
mov bx,16
mov cx,0
divloopprint2:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne divloopprint2
divprintloop2:
pop dx
cmp dx,9
jbe dec
divhex:
add dl,30h
add dl,7h
mov ah,2
int 21h
Safi Khan 18b-076-CS
loop divprintloop2
jmp exithex
divdec:
add dl,30h
mov ah,2
int 21h
loop divprintloop2
divexithex:
mov dx,0
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,binarymsg
mov ah,9
int 21h
divbinary:
mov ax,result
Safi Khan 18b-076-CS
mov bx,2
mov cx,0
divloopprint3:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne divloopprint3
divprintloop3:
pop dx
add dl,30h
mov ah,2
int 21h
loop divprintloop3
lea dx,space
mov ah,9
int 21h
jmp printmain
lea dx,space
mov ah,9
int 21h
jmp printmain
Safi Khan 18b-076-CS
calculatepercentage:
lea dx,percenthead
mov ah,9
int 21h
mov ax,num1
mov bx,num2
mov cx,100
mov dx,0
mul cx
div bx
mov result,ax
lea dx,decimalmsg
mov ah,9
int 21h
perdecimal:
mov ax,result
mov bx,10
mov cx,0
perloopprint:
mov dx,0
div bx
Safi Khan 18b-076-CS
push dx
inc cx
cmp ax,0
jne perloopprint
perprintloop:
pop dx
add dl,30h
mov ah,2
int 21h
loop perprintloop
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,hexmsg
mov ah,9
int 21h
perhexadecimal:
mov ax,result
mov bx,16
mov cx,0
Safi Khan 18b-076-CS
perloopprint2:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne perloopprint2
perprintloop2:
pop dx
cmp dx,9
jbe dec
perhex:
add dl,30h
add dl,7h
mov ah,2
int 21h
loop perprintloop2
jmp exithex
perdec:
add dl,30h
mov ah,2
int 21h
loop printloop2
perexithex:
Safi Khan 18b-076-CS
mov dx,0
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
lea dx,binarymsg
mov ah,9
int 21h
perbinary:
mov ax,result
mov bx,2
mov cx,0
perloopprint3:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jne perloopprint3
perprintloop3:
Safi Khan 18b-076-CS
pop dx
add dl,30h
mov ah,2
int 21h
loop perprintloop3
lea dx,space
mov ah,9
int 21h
jmp printmain
lea dx,percentagesign
mov ah,9
int 21h
lea dx,space
mov ah,9
int 21h
jmp printmain
main endp
Safi Khan 18b-076-CS
end main