MAP Notes_ CHapter 5 Part 2
-
Upload
ubaid-saudagar -
Category
Documents
-
view
220 -
download
0
Transcript of MAP Notes_ CHapter 5 Part 2
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
1/35
MAP notesChapter 5: 8086 Assembly Language programming – Part 2
Programming using Assembler:
Write an assembly language program to add two 8 bit numbers
Program:
assume cs : code
assume ds : data
data segment
a db 25h
b db 34h
sum db ?
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0000h
mov al,a
mov bl,b
add al,bl mov sum,al
int 3
code ends
end start
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
2/35
Write an assembly language program to add two 16 bit numbers
Program:
assume cs : code
assume ds : data
data segment
a dw ! h
b dw 22"2h
sum dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
mov ax,a
mov bx,b
add ax,bx
mov sum,ax
int 3
code ends
end start
Write an assembly language program to subtract two 16 bit numbers
Program:
assume cs : code
assume ds : data
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
3/35
data segment
a dw 3400h
b dw 2500hdi# dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax mov ax,0000h
mov bx,a
mov ax,b
sub bx,ax
mov di#,bx
int 3
code ends
end start
Write an assembly language program to find the sum of series of n numbers.
Program:
assume cs : code
assume ds : data
data segment
series db 0h,20h,40h,!0h,$"h
res dw ?
data ends
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
4/35
code segment
start:
mov ax,data
mov ds,ax mov ax,0000h
lea si,series
mov al,%si&
mov cl,04
u': inc simov bl,%si&
add al,bl
(c down
u' : dec cl
(n) u'
(m' exit
down: inc ah
(m' u'
exit: mov res,ax
int 3
code ends
end start
Write an assembly language program to multiply two 8 bit unsigned numbers
Program:
assume cs : code
assume ds : data
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
5/35
data segment
a db 25h
b db 40hresult dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax mov ax,0000h
mov al,a
mov bl,b
mul bl
mov result,ax
int 3
code ends
end start
Write an assembly language program to multiply two 16 bit unsigned numbers
Program:
assume cs : code
assume ds : data
data segment
a dw 2525h
b dw 4040h
result dd ?
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
6/35
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0000h
mov ax,a
mov bx,b
mul bx lea si,result
mov %si&,dh
inc si
mov %si&,dl
inc si
mov %si&,ah
inc si
mov %si&,al
int 3
code ends
end start
Write an assembly language program to multiply two 8 bit signed numbers
Program:
assume cs : code
assume ds : data
data segment
a db 5h
b db * $h
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
7/35
result dw ?
data ends
code segmentstart:
mov ax, data
mov ds, ax
mov ax,0000h
mov al,a
mov bl,b imul bl
mov result, ax
int 3
code ends
end start
Write an assembly language program to multiply two 16 bit signed numbers
Program:
assume cs : code
assume ds : data
data segment
a dw 000h b dw *2000h
result dd ?
data ends
code segment
start:
mov ax,data
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
8/35
mov ds,ax
mov ax,0000h
mov ax,a mov bx,b
imul bx
lea si,result
mov %si&,dh
inc si
mov %si&,dl
inc si mov %si&,ah
inc si
mov %si&,al
int 3
code ends
end start
Write an assembly language program to divide two unsigned numbers (8bits/8bits)
Program:
assume cs : code
assume ds : data
data segmenta db +4h
b db 3 h
uo db ?
rem db ?
data ends
code segment
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
9/35
start:
mov ax,data
mov ds,ax
mov ax,0000h mov al,a
mov bl,b
div bl
mov uo,al
mov rem,ah
int 3 code ends
end start
Write an assembly language program to divide two unsigned numbers (16bits/8bits)
Program:
assume cs : code
assume ds : data
data segment
a dw 200h
b db $!h
uo db ?
rem db ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
mov ax,a
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
10/35
mov bl,b
div bl
mov uo,al
mov rem,ah
int 3
code ends
end start
Write an assembly language program to divide two unsigned numbers (16bits/16bits)
Program:
assume cs : code
assume ds : data
data segment
a dw 200h
b dw +"$h
uo dw ?rem dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax mov ax,0000h
mov dx,0000h
mov ax,a
mov bx,b
div bx
mov uo,ax
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
11/35
mov rem, dx
int 3
code ends end start
Write an assembly language program to divide two unsigned numbers (3 bits/16bits)
Program:
assume cs : code
assume ds : data
data segment
a dd 0000000h
b dw !000h
uo dw ?
rem dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
lea si,a
mov al,%si&
mov ah,%si- &
mov dl, %si-2&
mov dh, %si-3&
mov bx,b
div bx
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
12/35
mov uo, ax
mov rem, dx
int 3
code ends end start
!ote" #or signed division only instruction will change from div to idiv and if either
dividend or divisor is negative$ %uotient will also be negative and remainder will be
positive. &f both dividend and divisor are negative then remainder and %uotient both are
positive.
Write an assembly language program to find the smallest number from a given array of n
numbers
Program:
assume cs : code
assume ds : data
data segment
arra. db 0!, 0,$, 2
smallest db ?
data ends
code segment
start:
mov ax,data mov ds,ax
mov ax,0000h
lea si,arra.
mov al,%si&
mov cl,03
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
13/35
u': inc si
mov bl, %si&
cm' al, bl
(c down mov al, bl
down: dec cl
(n) u'
mov smallest,al
int 3 code ends
end start
Write an assembly language program to find the largest number from array of n numbers.
Program:
assume cs : codeassume ds : data
data segment
arra. db 0!, 0, , 2
largest db ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
lea si,arra.
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
14/35
mov al,%si&
mov cl,03
u': inc si mov bl, %si&
cm' al, bl
(nc down
mov al,%si&
down: dec cl
(n) u' mov largest,al
int 3
code ends
end start
Write an assembly language program to arrange n numbers in an array in ascending order
Program:
assume cs : code
assume ds : data
data segment
arra. db 0h, 5h,!h,"h,4hdata ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
15/35
mov cl,04
u'2: mov ch,04
lea si,arra. u' : mov al,%si&
inc si
cm' al,%si&
(c down
xchg %si&,al
dec si xchg %si&,al
inc si
down: dec ch
(n) u'
dec cl
(n) u'2
int 3
code ends
end start
Write an assembly language programming to arrange an array of n numbers in descending
order
assume cs : code
assume ds : data
data segment
arra. db h,5h,!h,"h,4h
data ends
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
16/35
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
mov cl,04
u'2: mov ch,04
lea si,arra.
u' : mov al,%si&
inc si
cm' al,%si&
(nc down
mov dl,%si&
mov %si&,al
dec si
mov %si&,dl
inc si
down: dec ch
(n) u'
dec cl
(n) u'2
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
17/35
int 3
code ends
end start
Write a program in assembly language to perform bloc' transfer of data without using
string instructions
Program:
assume cs : code
assume ds : data
data segment
bloc/ db 0h,20h,30h,40h,50h
bloc/2 db 5 du' 01
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
lea si,bloc/
lea di,bloc/2
mov cl,5
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
18/35
u': mov al,%si&
mov %di&,al
inc si
inc di
dec cl
(n) u'
int 3
code ends
end start
Write a program in assembly language to perform bloc' transfer of data using string
instructions
Program:
assume cs : code
assume ds : data
data segment
bloc/ db 0h,20h,30h,40h,0 0 0000b
data ends
extra segment
bloc/2 db 5 du' ?1extra ends
code segment
start:
mov ax,data
mov bx,extra
mov ds,ax
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
19/35
mov es,bx
mov ax,0000h
lea si,bloc/ lea di, bloc/2
cld
mov cl, 05h
re') movsb
int 3
code ends
end start
Write an assembly language program to compare two strings without using string
instructions and display the result accordingly
Program:
assume cs : code
assume ds : data
data segment
string db abcde
string2 db abcde
msg db oth the strings are same
msg2 db oth the strings are not same
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
lea si,string
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
20/35
lea di,string2
u': mov al,%si&
cm' al,%di& (ne down
inc si
inc di
cm' al,
(ne u'
lea dx,msg
mov ah,0! int 2 h
(m' exit
down: lea dx,msg2
mov ah,0!
int 2 h
exit: mov ah,4ch
int 2 h
code ends
end start
Write an assembly language program to compare two strings using string instructions and
display the result accordingly.
Program:
assume cs : code
assume ds : data
assume es : extra
data segment
string db vbcde
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
21/35
msg db oth the strings are same
msg2 db oth the strings are not same
data ends
extra segment
string2 db vwx.)
extra ends
code segment
start:
mov ax,data mov ds,ax
mov ax,extra
mov es,ax
mov ax,0000h
mov cl,5
cld
lea si,string
lea di,string2
re') cm'sb
() msg
lea dx,msg2
mov ah,0!
int 2 h
(m' exit
msg: lea dx,msg
mov ah,0!
int 2 h
exit: mov ah,4ch
int 2 h
code ends
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
22/35
end start
Write a program in assembly language to calculate the length of the string
Program:
assume cs : code
assume ds : data
data segment
string db x.)
strlength db ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
lea si,string
mov cl,00h
u': mov al,%si&
cm' al,
(e down
inc si
inc cl (m' u'
down: mov strlength, cl
int 3
code ends
end start
Write an assembly language program to display string in reverse order
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
23/35
Program:
assume cs : code
assume ds : data
data segment
string db 6MA7A8A97 8A
stringreverse db 00 du' ?1
msg db he reverse o# the string is:
data ends
code segmentstart:
mov ax,data
mov ds,ax
mov ax,0000h
lea si,string
u': mov al,%si&
cm' al,
(e down
inc si
(m' u'
down: lea di,stringreverse
mov cx,si
u' : dec si
mov al,%si&
mov %di&,al
inc di
dec cx
(n) u'
mov al,
mov %di&,al
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
24/35
lea dx,msg
mov ah,0!
int 2 h
lea dx,stringreverse mov ah,0!
int 2 h
mov ah,4ch
int 2 h
code ends
end start
Write an assembly language program to concatenate two strings (two words)
assume cs : code
assume ds : data
data segment
msg db he two strings are :
string db 0, 3, ;# .ou don t stud. string2 db 0, 3,
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
25/35
lea dx,string
mov ah,0!
int 2 h lea dx,string2
mov ah,0!
int 2 h
=#rom here the concatenation 'rocedure starts
lea si,string
lea di,string2
u': inc si
mov al,%si&
cm' al,
(ne u'
u' : mov al,%di-2&
mov %si&,al
inc si
inc di
cm' al,
(ne u'
lea dx,msg2
mov ah,0!
int 2 h
lea dx,string
mov ah,0!
int 2 h
mov ah,4ch
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
26/35
int 2 h
code ends
end start
Write an assembly language program to add two * numbers
Program:
assume cs : code
assume ds : data
data segment
a db 00 0 0b
b db 00000 b
result dw ?
data ends
code segment
start:
mov ax,data mov ds,ax
mov ax,0000h
mov al,a
mov bl,b
add al,bl
daa (c down
mov result,ax
(m' exit
down: inc ah
mov result,ax
exit: int 3
code ends
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
27/35
end start
Write an assembly language program to subtract two * numbers
Program:
assume cs : code
assume ds : data
data segment
a db 00 00 0b
b db 000 0 b
result db ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
mov al,a
mov bl,b
sub al,bl
das
mov result,al
int 3
code ends
end start
Write an assembly language program to multiply two * numbers
Program:
assume cs : codeassume ds : data
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
28/35
data segment
a db 04
b db 0+result dw ?
data ends
code segment
start:
mov ax,data
mov ds,axmov ax,0000h
mov al,a
mov bl,b
mul bl
aam
mov result, ax
int 3
code ends
end start
Write an assembly language program to divide two * numbers
Program:assume cs : code
assume ds : data
data segment
a dw 0+00h
b db 04
uo db ?
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
29/35
rem db ?
data ends
code segmentstart:
mov ax,data
mov ds,ax
mov ax,0000h
mov ax,a
mov bl,baad
div bl
daa
int 3
code ends
end start
Write an assembly language program to convert a decimal number to he+adecimal
number.
Program:
assume cs : code
assume ds : data
data segmentdeci db 45h
hexi db ?
data ends
code segment
start:
mov ax,data
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
30/35
mov ds,ax
mov ax,0000h
mov al,deci and al,0#h
mov dl,al
mov al,deci
and al,0#0h
mov cl,04h
rol al,cl
mov dh,0ah mul dh
add al,dl
mov hexi,al
int 3
code ends
end start
Write an assembly language program to find odd and even numbers in an array
assume cs:code
assume ds:data
data segment
arra. db 45h,4"h,"+h,""h
oddarra. db 4 du' ?1
evenarra. db 4 du' ?1
data ends
code segment
start:
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
31/35
mov ax,data
mov ds,ax
mov ax,0000h
mov dl,02h
mov cl,04
lea si,arra.
lea di,evenarra.
lea bx,oddarra.
u': mov al,%si&
div dl
cm' ah,0
() >
mov al,%si&
mov %di&,al
inc di
inc si
dec cl
(n) u'
(m' exit
> :
mov al,%si&
mov %bx&,al
mov ah,00h
inc bx
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
32/35
inc si
dec cl
(n) u'
exit: int 3
code ends
end start
Write an assembly language program to find positive and negative numbers in an array
assume ds:data
assume cs:code
data segment
arra. db 4,*4,5,*5,+,*+
'osarra. db + du' ?1
negarra. db + du' ?1
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
mov cl,0+
lea si,arra.
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
33/35
lea di,'osarra.
lea bx,negarra.
u': mov al,%si&
neg al
(s 'ositive
mov dl,%si&
mov %bx&,dl
inc bx
inc si
dec cl
(n) u'
(m' exit
'ositive:
mov dl,%si&
mov %di&,dl
inc di
inc si
dec cl
(n) u'
exit: int 3
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
34/35
code ends
end start
Write an assembly language program to find the number of ones and ,eroes in a number
assume cs:code
assume ds:data
data segment
number db 00 0 b
ones dw ?
)eroes dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0000h
mov al,number
mov cl,0$
u': ror al,
(c one
inc di
-
8/19/2019 MAP Notes_ CHapter 5 Part 2
35/35
dec cl
(n) u'
one: inc si
dec cl
(n) u'
mov ones, si
mov )eroes, di
exit: int 3
code ends
end start