8086 Sample Programs

1.Display a character

data segment
a db 0ah,0dh,"Enter the character $"
b db 0ah,0dh,"character is $"
data ends
assume cs:code,ds:data
code segment
start:
mov bx,data
mov ds,bx
lea dx,a
mov ah,09h
int 21h
mov ah,01h
int 21h
mov bl,al
lea dx,b
mov ah,09h
int 21h
mov dl,bl
mov Ah,02h
int 21h
mov ah,4ch
int 21h
code ends 
end start

2.Display a message

data segment
a db 0ah,0dh,"HELLO$"
b db 0ah,0dh,"GOOD MORNING$"
data ends
assume cs:code,ds:data
code segment
start:
mov bx,data
mov ds,bx
lea dx,a
mov ah,09h
int 21h
lea dx,b
mov ah,09h
int 21h
mov ah,4ch
int 21h
code ends
end start

3.Insert and print an array

assume cs:code,ds:data
data segment
array db 10 dup(0)
g1 db 0ah,0dh,"Enter  number of elements$"
g2 db 0ah,0dh,"Enter elements:$"
g3 db 0ah,0d,"the array:$"
g4 db 0ah,0dh,"$"
data ends
code segment
start:mov cx,data
mov ds,cx
lea dx,g1
mov ah,09h
int 21h
mov ah,01h
int 21h
sub al,30h
mov cl,al
mov bl,cl
lea dx,g2
mov ah,09h
int 21h
lea si,array
l1:mov ah,01h
int 21h
sub al,30h
mov [si],al
inc si
dec cl
lea dx,g4
mov ah,09h
int 21h
jnz l1
lea dx,g3
mov ah,09h
int 21h
lea dx,g4
mov ah,09h
int 21h
lea di,array
l2:mov dl,[di]
add dl,30h
mov ah,02h
int 21h
inc di
dec bl
lea dx,g4
mov ah,09h
int 21h
jnz l2
mov ah,4ch
int 21h
code ends
end start

4.Sort an array

assume cs:code,ds:data
data segment
g1 db 0ah,0dh,"Enter the size:$"
g2 db 0ah,0dh,"Enter the elements:$"
g3 db 0ah,0dh,"$"
g4 db 0ah,0dh,"Sorted array is:$"
array db 25 dup(0)
data ends
code segment
start:mov dx,data
mov ds,dx
lea dx,g1
mov ah,09h
int 21h
mov ah,01h
int 21h
sub al,30h
mov cl,al
mov bl,cl
lea dx,g2
mov ah,09h
int 21h
lea si,array
l1:mov ah,01h
int 21h
mov [si],al
inc si
dec cl
lea dx,g3
mov ah,09h
int 21h
jnz l1
mov cl,bl
mov ch,cl
outter:lea si,array
mov cl,ch
inner:mov al,[si]
cmp al,[si+1]
jc next
xchg al,[si+1]
mov [si],al
next:
inc si
dec cl
jnz inner
dec ch
jnz outter
lea si,array
mov cl,bl
lea dx,g4
mov ah,09h
int 21h
arrdisp:mov dl,[si+1]
mov ah,02h
int 21h
lea dx,g3
mov ah,09h
int 21h
inc si
dec cl
jnz arrdisp
mov ah,4ch
int 21h
code ends
end start

5.Addition of two numbers

assume cs:code,ds:data
data segment
g1 db 0ah,0dh,"Enter  number $"
g2 db 0ah,0dh,"Result:$"
a db  10 dup(0)
data ends
code segment
start:mov cx,data
mov ds,cx
lea dx,g1
mov ah,09h
int 21h
lea si,a
mov ah,01h
int 21h
sub al,30h
mov [si],al
inc si
lea dx,g1
mov ah,09h
int 21h
mov ah,01h
int 21h
sub al,30h
mov [si],al
mov ax,[si]
dec si
mov bx,[si]
add ax,bx
add ax,30h
mov bx,ax
lea dx,g2
mov ah,09h
int 21h
mov dx,bx
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end start

6.Subtraction of two numbers

assume cs:code,ds:data
data segment
g1 db 0ah,0dh,"Enter number:$"
g2 db 0ah,0dh,"Result:$"
array db 25 dup(0)
data ends
code segment
start:
mov dx,data
mov ds,dx
lea dx,g1
mov ah,09h
int 21h
lea si,array
mov ah,01h
int 21h
sub al,30h
mov [si],al
inc si
lea dx,g1
mov ah,09h
int 21h
mov ah,01h
int 21h
sub al,30h
mov [si],al
mov ax,[si]
dec si
mov bx,[si]
sub ax,bx
add ax,30h
mov bx,ax
lea dx,g2
mov ah,09h
int 21h
mov dx,bx
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends 
end start

7.Number of S's in a string

assume cs:code,ds:data
data segment
a db 0ah,0dh,"Enter the word:$"
b db 0ah,0dh,"No of s's :$"
g db 0ah,0dh,"$"
array db 25 dup(0)
data ends
code segment
start:
mov dx,data
mov ds,dx
lea dx,a
mov ah,09h
int 21h
xor cx,cx
inc cx
lea si,array
loop1:
mov ah,01h
int 21h
mov [si],al
inc si
cmp al,'s'
jz loop2
cmp al,0dh
jz loop3
jmp loop1
loop2:
inc cl
jmp loop1
loop3:
lea dx,b
mov ah,09h
int 21h
lea dx,g
mov ah,09h
int 21h
dec cl
mov dl,cl
or dl,30h
mov ah,02h
int 21h
mov ah,02h
mov ah,4ch
int 21h
code ends
end start

8.Number of vowels in a string

assume cs:code,ds:data
data segment
a db 0ah,0dh,'enter the word$'
b db 0ah,0dh,'the no.of vowels is$'
array db 20 dup(0)
data ends
code segment
start: mov ax,data
mov ds,ax
        lea dx,a
mov ah,09h
int 21h
xor cx,cx
inc cx
lea si,array
loop1:mov ah,01h
int 21h
mov [si],al
inc si
cmp al,'a'
jz loop2
cmp al,'e'
jz loop2
cmp al,'i'
jz loop2
cmp al,'o'
jz loop2
cmp al,'u'
jz loop2
cmp al,0dh
jz loop3
jmp loop1
loop2:inc cl
jmp loop1
loop3:lea dx,b
mov ah,09h
int 21h         
        dec cl
mov dl,cl
or dl,30h
        mov ah,02h
int 21h
        mov ah,4ch
int 21h
code ends
end start

9.Reverse a string

assume cs:code,ds:data 
data segment 
m1 db 0ah,0dh,"enter the string : $" 
m2 db 0ah,0dh,"reverse of the string is: $" 
s1 db 10h dup(?) 
data ends 
code segment 
start:mov ax,data 
mov ds,ax 
lea dx,m1 
mov ah,09h 
int 21h 
mov ch,01h 
mov si,offset s1 
back: mov ah,01h 
int 21h 
cmp al,0dh 
jz exit 
mov [si],al 
inc si 
inc ch 
jmp back 
exit: lea dx,m2 
mov ah,09h 
int 21h 
cmp1:mov al,[si] 
mov dl,al 
mov ah,02h 
int 21h 
dec si 
dec ch 
jnz cmp1 
mov ah,4ch 
int 21h 
code ends 
end start

10.Fibonacci series

assume cs:code,ds:data
data segment
g1 db 0ah,0dh,"Enter  limit$"
g2 db 0ah,0dh,"series is$"
g3 db 0ah,0dh," $"
a db  10 
data ends
code segment
start: mov cx,data
mov ds,cx
lea dx,g1
mov ah,09h
int 21h
lea si,a
mov ah,01h
int 21h
sub al,30h
mov cl,al
lea dx,g2
mov ah,09h
int 21h
lea dx,g3
mov ah,09h
int 21h
mov ah,00h
mov al,00h
mov bx,01h
loop1:add al,30h
mov dl,al
mov ah,02h
int 21h
        mov ah,00h
lea dx,g3
mov ah,09h
int 21h
sub al,30h
add al,bl
mov dl,bl
mov bl,al
mov al,dl
dec cl
jz stop
jmp loop1
stop: mov ah,4ch
int 21h
code ends
end start

11.Square root of a number

assume cs:code,ds:data
data segment
g1 db 0ah,0dh,"Enter  number$"
g2 db 0ah,0dh,"square root:$"
g3 db 0ah,0dh,"not perfect square$"
a db  10 
data ends
code segment
start:mov cx,data
mov ds,cx
lea dx,g1
mov ah,09h
int 21h
lea si,a
mov ah,01h
int 21h
sub al,30h
mov ah,00h
mov cx,01h
mov bx,01h
loop1:sub ax,bx
jz result
jc notp
inc cx
inc bx
inc bx
jmp loop1
result:lea dx,g2
mov ah,09h
int 21h
add cl,30h
mov dl,cl
mov ah,02h
int 21h
jmp stop
notp:lea dx,g2
mov ah,09h
int 21h
stop:mov ah,4ch
int 21h
code ends
end start

No comments:

Post a Comment