Lab 09

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 33

Safi Khan 18b-076-CS

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 $"

menuopt db 10,13,"Press 1 for user input",10,13,"Press 2 for Add numbers",10,13,"Press 3 for


Subtract numbers",10,13,"Press 4 to multiply numbers",10,13,"Press 5 for
Division",10,13,"Press 6 to calculate the percentage Percentage",10,13
space db 10,13,10,13,10,13,"$"
entnum1 db 10,13,"Enter 1st digit : $"
entnum2 db 10,13,"Enter 2nd digit : $"
entnum3 db 10,13,"Enter 3rd digit : $"
decimalmsg db 10,13,"Decimal Outout : $"
hexmsg db 10,13,"Hexadecimal Output: $"
Safi Khan 18b-076-CS

binarymsg db 10,13,"Binary Output: $"

addhead db 10,13,"----------------------------",10,13,"Addition :- ",10,13,"$"


subhead db 10,13,"----------------------------",10,13,"Subtraction :- ",10,13,"$"
mulhead db 10,13,"----------------------------",10,13,"Multiplication :- ",10,13,"$"
divhead db 10,13,"----------------------------",10,13,"Divide :- ",10,13,"$"
percenthead db 10,13,"----------------------------",10,13,"Percentage :- ",10,13,"$"

percentagesign db "% $"

num1print db "Num - 1 : $"


num2print db 10,13,"Num - 2 : $"
num3print db 10,13,"Num - 3 : $"

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

You might also like