Professional Documents
Culture Documents
Lab Manual
Lab Manual
AFFAN KHURRAM
1912215
LAB MANUAL
AFFAN KHURRAM 1912215
.model small
.stack 100
.data
.code
main proc
mov dl,'T'
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
end main
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
main endp
end main
AFFAN KHURRAM 1912215
.code
main proc
mov ah, 7
int 21h
main endp
end main
.model small
.stack 100h
.data
.code
main proc
mov dl, 'A'
mov ah, 2
int 21h
mov ah, 2
int 21h
main endp
end main
AFFAN KHURRAM 1912215
5) Write a program which take four inputs from user without echo and display ‘*’ (asterisk sign) in
place of it (as in password).
.model small
.stack 100h
.data
.code
main proc
mov ah, 7
int 21h
mov ah, 7
int 21h
mov ah, 7
int 21h
mov ah, 7
int 21h
main endp
end main
AFFAN KHURRAM 1912215
6) Write a program which take upper-case single character as input from user and convert it into
lower-case and display its result in the next line.
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
add al, 32
mov bh, al
mov dl, 10
mov ah, 2
int 21h
mov dl, 13
mov ah, 2
int 21h
mov dl, bh
mov ah, 2
int 21h
main endp
end main
AFFAN KHURRAM 1912215
7) Write a program which take lower-case single character as input from user and convert it into
upper-case and display its result in the next line.
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
sub al, 32
mov bh, al
mov dl, 10
mov ah, 2
int 21h
mov dl, 13
mov ah, 2
int 21h
mov dl, bh
mov ah, 2
int 21h
mov ah, 4ch
int 21h
main endp
end main
AFFAN KHURRAM 1912215
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
sub al, 48
mov bh, al
mov ah, 1
int 21h
sub al, 48
add bh, al
add bh, 48
mov dl, bh
mov ah, 2
int 21h
mov ah,4ch
int 21h
main endp
end main
9) Write a program to take two numbers as input from user, add them and display the result on
screen in appropriate way (3+2=5).
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
sub al, 48
mov bh, al
mov dx,'+'
AFFAN KHURRAM 1912215
mov ah,2
int 21h
mov ah, 1
int 21h
sub al, 48
add bh, al
add bh, 48
mov dx,'='
mov ah,2
int 21h
mov dl, bh
mov ah, 2
int 21h
mov ah,4ch
int 21h
main endp
end main
AFFAN KHURRAM 1912215
10) Write a program to take two numbers as input from user, subtract them and display the result
on screen in appropriate way (7 - 2=5).
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
sub al, 48
mov bh, al
mov dx,'-'
mov ah,2
int 21h
mov ah, 1
int 21h
sub al, 48
sub bh, al
add bh, 48
mov dx,'='
mov ah,2
int 21h
mov dl, bh
mov ah, 2
int 21h
mov ah,4ch
int 21h
main endp
end main
AFFAN KHURRAM 1912215
11) Write a program to add three numbers using variables and stores in sum variable and display it.
.model small
.stack 100h
.data
sum db 1 DUP<?>
.code
main proc
mov ax, data
mov ds, ax
mov ah, 1
int 21h
sub al, 48
mov bh, al
mov ah, 1
int 21h
sub al, 48
add bh, al
add bh, 48
mov ah,1
int 21h
sub al,48
mov sum,al
add sum, al
add sum, 48
mov ah,4ch
int 21h
main endp
end main
AFFAN KHURRAM 1912215
.code
main proc
mov al,'5'
inc al
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
end main
.model small
.stack 100h
.data
.code
main proc
mov al,'5'
dec al
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
end main
AFFAN KHURRAM 1912215
.model small
.stack 100h
.data
string db 'HELLO WORLD$'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,4ch
int 21h
main endp
end main
15) Write a program to display full name, registration number, email address and Institute name.
.model small
.stack 100h
.data
str1 db 'Name: Affan Khurram$'
str2 db 10,13,'Reg. number: 1912215$'
str3 db 10,13,'email: cs1912215@szabist.pk$'
str4 db 10,13,'Institute Name: SZABIST$'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,4ch
int 21h
main endp
end main
16) Write a program to take times input from user using loop instruction.
.model small
.stack 100h
.data
.code
main proc
mov cx,10
L1:
mov ah,1
int 21h
mov ah,2
mov dl,10
int 21h
mov dl,13
mov ah,2
int 21h
loop L1
AFFAN KHURRAM 1912215
main endp
end main
17) Write a program to print numbers from ‘0’ to ‘9’ using loop.
.model small
.stack 100h
.data
.code
main proc
mov cx,10
mov bh,48
L1:
mov dl,bh
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov dl,13
mov ah,2
int 21h
inc bh
loop L1
main endp
end main
AFFAN KHURRAM 1912215
18) Write a program to print numbers from ‘9’ to ‘0’ using loop.
.model small
.stack 100h
.data
.code
main proc
mov cx,10
mov bh,57
L1:
mov dl,bh
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov dl,13
mov ah,2
int 21h
dec bh
loop L1
main endp
end main
AFFAN KHURRAM 1912215
19) Write a program to print upper case letter ‘A’ to ‘Z’ using loop.
.model small
.stack 100h
.data
.code
main proc
mov cx,26
mov bh,65
L1:
mov dl,bh
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov dl,13
mov ah,2
int 21h
inc bh
loop L1
main endp
end main
AFFAN KHURRAM 1912215
20) Write a program to print lower case letter ‘a’ to ‘z’ using loop.
.model small
.stack 100h
.data
.code
main proc
mov cx,26
mov bh,97
L1:
mov dl,bh
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov dl,13
mov ah,2
int 21h
inc bh
AFFAN KHURRAM 1912215
loop L1
main endp
end main
21) Write a program to print upper case letter ‘Z’ to ‘A’ using loop.
.model small
.stack 100h
.data
.code
main proc
mov cx,26
mov bh,90
L1:
mov dl,bh
mov ah,2
int 21h
mov ah,2
mov dl,10
AFFAN KHURRAM 1912215
int 21h
mov dl,13
mov ah,2
int 21h
dec bh
loop L1
main endp
end main
AFFAN KHURRAM 1912215
22) Write a program to print even numbers between (0-9) using loop.
.model small
.stack 100h
.data
.code
main proc
mov cx,5
mov bh,48
L1:
mov dl,bh
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov dl,13
mov ah,2
int 21h
inc bh
inc bh
loop L1
main endp
end main
AFFAN KHURRAM 1912215
.model small
.stack 100h
.data
.code
main proc
mov cx,5
Loop1:
mov dl,'#'
mov ah,2
int 21h
mov bx,cx
mov cx,3
Loop2:
mov dl,'*'
mov ah,2
int 21h
loop Loop2
mov cx,bx
loop Loop1
mov ah,4ch
int 21h
main endp
end main
.model small
.stack 100h
.data
nl db 0dh, 0ah, '$'
.code
main proc
AFFAN KHURRAM 1912215
mov cx, bx
mov dl, '*'
mov ah, 2
for_3:
int 21h
loop for_3
lea dx, nl
mov ah, 9
int 21h
inc bx
pop cx
loop for_1
mov ah, 4ch
int 21h
main endp
end main
25) Write a program to demonstrate the concept of an array. Use index operators to access the
different values stored in an array.
arr1 db '6','8','5','7','4','9'
.code
main proc
mov ax,@data
mov ds,ax
mov si , offset arr1
mov cx,6
l1:
AFFAN KHURRAM 1912215
mov dx,[si]
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
inc si
loop l1
mov ah,4ch
int 21h
main endp
end main
arr1 db '6','8','5','7','4','9'
.code
main proc
mov ax,@data
mov ds,ax
mov si , offset arr1
mov cx,6
l1:
mov dx,[si]
mov ah,2
int 21h
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
inc si
loop l1
mov ah,4ch
int 21h
AFFAN KHURRAM 1912215
main endp
end main
27) Write a program to take string input from user and store in an array.
.model small
.stack 100h
.data
arr1 db 30 DUP(?)
.code
main proc
mov ax,@data
mov ds,ax
mov cx,30
mov si , offset arr1
l1:
mov ah,1
int 21h
mov [si],al
inc si
loop l1
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
l2:
mov dl,[si]
mov ah,2
int 21h
inc si
loop l2
mov ah,4ch
int 21h
main endp
end main
.code
main proc
mov ah,1
int 21h
mov ah,0
push ax
mov ah,1
int 21h
mov ah,0
push ax
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
pop dx
AFFAN KHURRAM 1912215
mov ah,2
int 21h
pop dx
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
end main
29) Write a program to reverse the message “Hello world” using stack (push and pop instruction).
.model small
.stack 100h ;
.data
msg db 'Hello World$'
str db 'Reverse String is:$'
.code
main proc
mov ax,@data
mov ds,ax
mov cx,11
mov ah,9
mov dx,offset msg
int 21h
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
mov si,offset msg
L1:
push [si]
inc si
loop L1
pop dx
mov ah,2
int 21h
loop L2
mov ah,4ch
int 21h
main endp
end main
.model small
.stack 100h
.data
.code
main proc
call Input
call Output
mov ah,4ch
int 21h
main endp
Input proc
mov ah,1
int 21h
Input endp
Output proc
mov dl,al
mov ah,2
int 21h
Output endp
end main
AFFAN KHURRAM 1912215
31) Write a program to make procedures for newline and string display. Display your full name,
registration number, email and institute name by using nested procedures.
.model small
.stack 100h
.data
str1 db 'Name: Affan Khurram$'
str2 db 'Reg. number: 1912215$'
str3 db 'email: cs1912215@szabist.pk$'
str4 db 'Institution Name: SZABIST$'
.code
main proc
mov ax,@data
mov ds,ax
lea dx,str1
call str_display
lea dx,str3
call str_display
lea dx,str4
call str_display
mov ah,4ch
int 21h
main endp
str_display proc
mov ah,9
int 21h
call n_l
ret
str_display endp
n_l proc
mov dl,10
mov ah,2
int 21h
mov dl,13
mov ah,2
int 21h
AFFAN KHURRAM 1912215
ret
n_l endp
end main
32) Write an assembly code to take multiple character as input from user with prompt and program
should tell how many vowels and consonants were there in the input. Use enter key to display the both
number of counts with prompt. After displaying the result, ask him again for a choice that he wants to
run program again or terminate the program. Use “Y” to run again and Use “Esc key” to terminate the
program.
.model small
.stack 100h
print macro p
lea dx,p
mov ah,09h
int 21h
endm
display macro g
mov dl,g
mov bh,0ah
mov ah,00h
mov al,dl
div bh
mov ch,ah
mov dl,al
add dl,30h
mov ah,02h
int 21h
mov dl,ch
add dl,30h
mov ah,02h
int 21h
endm
.data
m1 db 0ah,0dh,"Enter the String: $"
m2 db 0ah,0dh,"Vowels= $"
m3 db 0ah,0dh,"Consonants= $"
m4 db 0ah,0dh,"No of Vowels= $"
m5 db 0ah,0dh,"No of Consonants= $"
a db 20h dup("$")
b db "aeiouAEIOU"
AFFAN KHURRAM 1912215
v db 20h dup("$")
co db 20h dup("$")
k dw 0
f dw 0
g db 0
z db 0
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov si,0000h
print m1
mov cx,si
mov di,0000h
mov si,0000h
dec cx
loop2: inc di
cmp di,0ah
jl loop4
mov dx,0000h
mov dx,si
AFFAN KHURRAM 1912215
mov si,f
inc f
mov co[si],bh
inc z
mov si,dx
jmp loop6
loop5: print m2
print v
print m4
display g
print m5
display z
mov ah,4ch
int 21h
main endp
end main
AFFAN KHURRAM 1912215
33) Write a program which take upper-case single character as input from user and convert it into lower-
case and display its result using logic instruction.
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
OR al, 00100000b
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
end main
34) Write a program which take lower-case single character as input from user and convert it into
upper-case and display its result using logic instruction.
.model small
.stack 100h
.data
.code
main proc
mov ah, 1
int 21h
and al,11011111b
AFFAN KHURRAM 1912215
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
end main
35) Write a program which takes string input from user and converts that string into lower case,
upper case and toggle case using logic instruction only.
.model small
.stack 100h
.data
str1 db 30 dup (?)
.code
main proc
mov ax,@data
mov ds,ax
mov cx,10
mov si,offset str1
L1:
mov ah,1
int 21h
mov [si],al
inc si
loop L1
mov cx,10
mov si,offset str1
L2:
mov bl,[si]
AND bl,11011111b
mov dl,bl
mov ah,2
int 21h
inc si
loop L2
mov cx,10
mov si,offset str1
L3:
mov bl,[si]
AFFAN KHURRAM 1912215
OR bl,00100000b
mov dl,bl
mov ah,2
int 21h
inc si
loop L3
mov cx,10
mov si,offset str1
L4:
mov bl,[si]
XOR bl,00100000b
mov dl,bl
mov ah,2
int 21h
inc si
loop L4
mov ah,4ch
int 21h
main endp
end main
36) Write a password program which take input from user and display ‘*’ on screen. Then compare
the input character with the store character and display “Correct Password” if password correctly enter
else print “Incorrect password” on screen.
print macro p1
mov ah,9
mov dx,offset p1
int 21h
endm
.model small
.stack 100h
.data
msg1 db 'Please enter your password:$'
msg2 db 10,13,'Password is correct$'
msg3 db 10,13,'invalid password please try again',10,13,'$'
pass db 'SZABIST'
input db 30 dup (0)
counter dw ?
msg4 dw ?
.code
main proc
mov ax,@data
mov ds,ax
AFFAN KHURRAM 1912215
start:
mov counter,0
mov si,offset input
print msg1
L1:
mov ah,7
int 21h
mov bl,al
cmp bl,13
je pas_match
mov dl,'*'
mov ah,2
int 21h
mov [si],bl
inc counter
inc si
jmp L1
pas_match:
mov si,offset pass
mov bx,offset input
mov cx,counter
L2:
mov dl,[si]
mov al,[bx]
cmp al,dl
jne incorrect
inc si
inc bx
loop L2
jmp correct
correct:
print msg2
jmp end1
end1:
mov ah,4ch
int 21h
incorrect:
print msg3
jmp start
main endp
end main
AFFAN KHURRAM 1912215
37) Write a program to take two number as input from user then multiply them and display the result
after multiplication.
.model small
.stack 100h
.data
num1 db ?
num2 db ?
result db ?
msg1 db 10,13,"enter first number to multiply : $"
msg2 db 10,13,"enter second number to multiply : $"
msg3 db 10,13,"result of multiplication is : $"
.code
main proc
mov ax,data
mov ds,ax
lea dx,msg1
mov ah,9
int 21h
mov ah,1
int 21h
sub al,30h
mov num1,al
lea dx,msg2
mov ah,9
int 21h
mov ah,1
int 21h
sub al,30h
mov num2,al
mul num1
mov result,al
aam
add ah,30h
add al,30h
mov bx,ax
lea dx,msg3
mov ah,9
int 21h
mov ah,2
mov dl,bh
int 21h
mov ah,2
mov dl,bl
int 21h
AFFAN KHURRAM 1912215
mov ah,4ch
int 21h
main endp
end main
38) Write a program to take two number as input from user then divide them and display the result
after division.
.model small
.stack 100h ; reserves space in bytes
.data
msg1 db 'Quotient = $'
msg2 db 10,13,'Remainder = $'
.code
main proc
mov ax , @data
mov ds , ax
mov ch , ah
mov cl , al
;printing quotient
lea dx,msg1
mov ah , 9
int 21h
mov dl,cl
add dl,48
mov ah,2
int 21h
;printing remainder
lea dx , msg2
mov ah,9
int 21h
mov dl , ch
add dl,48
AFFAN KHURRAM 1912215
mov ah ,2
int 21h
mov ah,4ch
int 21h
main endp
end main
39) Write a program which ask user to enter a digit (from 1 to 9 only) and then print the table of
that number.
The program is look like this
Please enter a digit = 3
(User press 3 and then press Enter key)
3 x 01 = 03
3 x 02 = 06
3 x 03 = 09
3 x 04 = 12
3 x 05 = 15
3 x 06 = 18
3 x 07 = 21
3 x 08 = 24
3 x 09 = 27
3 x 10 = 30
.model small
.stack 100h
.data
message db 0ah, 0dh, "enter a number: $"
notprocess db 0ah, 0dh, "not a valid digit, cannot proces$"
.code
main:
mov ax, @data
mov ds, ax
mov dl, bh
add dl, 30h
mov ah, 02h
int 21h
mov al, bl
mul bh
aam
push ax
mov cl, ah
mov bl, al
AFFAN KHURRAM 1912215
mov dl, cl
add dl, 30h
mov ah, 02h
int 21h
mov dl, bl
add dl, 30h
mov ah, 02h
int 21h
result:
mov dl, '='
mov ah, 02h
int 21h
pop ax
mov dh, al
mov dl, ah
add dl, 30h
mov ah, 02h
int 21h
mov dl, dh
add dl, 30h
mov ah, 02h
int 21h
inc bl
dec ch
cmp ch, 00h
jne next
jne exit
exit:
mov ah, 04ch
int 21h
end main
AFFAN KHURRAM 1912215
40) Write a program that checks whether the entered number is even or odd using div.
display macro p1
mov ah,9
mov dx,offset p1
int 21h
endm
.model small
.stack 100h
.data
msg1 db 10,13,'even number$'
msg2 db 10,13,'Odd number$'
msg3 db 'Please enter any number:$'
.code
main proc
mov ax,@data
mov ds,ax
display msg3
mov ah,1
int 21h
mov ah,0
mov bl,2
div bl ;ah=reminder; al=quotient
cmp ah,0
je L1
jne L2
L2:
display msg2
jmp end1
L1:
display msg1
jmp end1
end1:
mov ah,4ch
int 21h
AFFAN KHURRAM 1912215
main endp
end main
41) Write a program that take input as string and counts total number of characters entered
without spaces (spacebar) and display the result when user press 'ENTER' key it must show the result
not including the 'ENTER' key.
print macro p1
mov dx,offset p1
mov ah,9
int 21h
endm
.model small
.stack 100h
.data
str1 db 10,13,'Please enter your statement:$'
str2 db 10,13,'Total number of character=','$'
str3 db 10,13,'press Y to run again or Press ESC to terminate program$'
.code
main proc
mov ax,@data
mov ds,ax
start:
print str1
mov bl,0
L1:
mov ah,1
int 21h
cmp al,13
je end1
inc bl
cmp al,32
je decr
jmp L1
decr:
dec bl
jmp L1
AFFAN KHURRAM 1912215
end1:
print str2
mov al,bl
mov ah,0
aam
mov bl,al
mov dl,ah
add dl,48
mov ah,2
int 21h
mov dl,bl
add dl,48
mov ah,2
int 21h
L2:
print str3
mov ah,1
int 21h
cmp al,'Y'
je start
cmp al,'y'
je start
cmp al,27
je end2
jmp L2
end2:
mov ah,4ch
int 21h
main endp
end main
42) Write a program to take input from user, check and informing user what he/she entered a)
upper case letter
b) lower case letter
c) number
d) symbol
AFFAN KHURRAM 1912215
print macro p1
mov ah,9
mov dx,offset p1
int 21h
endm
.model small
.stack 100h
.data
msg1 db 10,13,'Upper case letter$'
msg2 db 13,10,'Lower case letter$'
msg3 db 10,13,'Symbol$'
msg4 db 10,13,'Number$'
msg5 db 10,13,'Please enter: Any Number/ symbol / Alphabet',10,13,'$'
.code
main proc
mov ax,@data
mov ds,ax
start:
print msg5
mov ah,1
int 21h
cmp al,27
je end1
cmp al,48
jb symbol
cmp al,57
jbe number
cmp al,65
jb symbol
cmp al,90
jbe upper
cmp al,97
jb symbol
cmp al,122
jbe lower
cmp al,125
jbe symbol
lower:
print msg2
jmp start
upper:
print msg1
jmp start
number:
print msg4
jmp start
AFFAN KHURRAM 1912215
symbol:
print msg3
jmp start
end1:
mov ah,4ch
int 21h
main endp
end main