You are on page 1of 46

Microprocessor Lab Programs

For

M.C.A Students
(Affiliated to Kakatiya University)

www.esnips.com/user/vapremaims

1) 8086/Masm Program On Fibonacci Series.


DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MAIN PROC
MOV AH,02H
MOV DL,1
INT 21H
MOV DL,,
INT 21H
MOV DL,1
INT 21H
MOV BL,01H
MOV CH,01H
MOV DL,,
INT 21H
START1:
MOV CL,BL
ADD BL,CH
MOV CH,CL
MOV AL,BL
MOV AH,00
MOV BH,10
DIV BH
MOV CL,AH
MOV DL,AL
MOV AH,02H
ADD DL,30H
INT 21H
MOV DL,CL
ADD DL,30H
INT 21H
MOV DL,CL
ADD DL,30H
INT 21H
MOV DL,,
INT 21H
CMP BL,50H
JL START1
MOV AX,4C00H
INT 21H
CODE ENDS
END MAIN
***********************
www.esnips.com/user/vapremaims

2) 8086/Masm Program To Transfer A Given Block Of Data From Source


Memory Block To Destination Memory Block With Out Overlap.

DATA SEGMENT
VAR1 DW 12H,34H,45H,67H,56H
CNT DW 5
RES DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:

MOV AX,DATA
MOV DS,AX
MOV AX,CNT
MOV SI,0000H

NEXT: MOV AX,VAR1[SI]


MOV RES[SI],AX
INC SI
INC SI
LOOP NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
*****************

www.esnips.com/user/vapremaims

3) 8086/Masm Program To Add 16-Bit Bytes/Words & To Find The Average Of


Numbers.

DATA SEGMENT
N1 DW 0020H,0002H,0002H,0002H
RES DW ?
CNT DB 04H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CL,CNT
MOV SI,0000H
MOV DX,0000H
NEXT: MOV AX,N1[SI]
ADD DX,AX
INC SI
INC SI
LOOP NEXT
MOV AX,DX
DIV CNT
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
*******************

www.esnips.com/user/vapremaims

4) 8086/Masm Program To Multiply Two 32 Bit Numbers.

DATA SEGMENT
N1 DW 0AFFH,0AFFH
N2 DW 0330H,4002H
RES DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,0000H
MOV AX,N1[SI]
MUL N2[SI]
MOV RES,AX
MOV BX,DX
MOV AX,N1[SI+2]
MUL N2[SI]
ADD BX,AX
MOV CX,DX
MOV AX,N1[SI]
MUL N2[SI+2]
ADD BX,AX
ADC CX,DX
MOV RES+2,BX
MOV AX,N1[SI+2]
MUL N2[SI+2]
MUL N2[SI+2]
ADD CX,AX
MOV RES+4,CX
ADC DX,0000H
MOV RES+6,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
************************
www.esnips.com/user/vapremaims

5) 8086/Masm Program To Multiply Two Ascii Byte Numbers.


DATA SEGMENT
N1 DB '3'
N2 DB '2'
RES DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,N1
MOV BL,N2
SUB AL,30H
SUB BL,30H
MUL BL
AAM
ADD AX,3030H
MOV RES,AL
MOV RES+1,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
*************************

www.esnips.com/user/vapremaims

6) 8086/Masm Program To Find Lcm Of Two 16 Bit Unsigned Integers.


DATA SEGMENT
N1 DW 019H
N2 DW 00FH
LCM DW 2 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATASTART:
START: MOV AX,DATA
MOV DS,AX
MOV AX,N1
MOV BX,N2
MOV DX,0000H
AGAIN:PUSH AX
PUSH DX
DIV BX
CMP DX,0000H
JE EXIT
POP DX
POP AX
ADD AX,N1
JNC NINCDX
INC DX
NINCDX: JMP AGAIN
EXIT: POP LCM+2
POP LCM
MOV AH,4CH
INT 21H
CODE ENDS
END START
**********************

www.esnips.com/user/vapremaims

7)

8086/Masm Program To Find Gcf Of Two 16 Bit Unsigned Integers.


DATA SEGMENT
N1 DW 005AH,0078H
RES DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,N1
MOV BX,N1+2
AGAIN: CMP AX,BX
JE EXIT
JB BIG
ABOVE:MOV DX,0H
DIV BX
CMP DX,0
JE EXIT
MOV AX,DX
JMP AGAIN
BIG: XCHG AX,BX
JMP ABOVE
EXIT:MOV RES,BX
MOV AH,4CH
INT 21H
CODE ENDS
END START
************************

www.esnips.com/user/vapremaims

8) ) 8086/Masm Program To Sort A Given Set Of 16 Bit Unsigned Integers Into


Ascending Order Using Insertion Sort.
8086/Masm Program To Sort A Given A 16bit Unsigned Integers Into Ascending
Order Using Insertion Sort
DATA SEGMENT
A DW 78H,34H,12H,56H
SI_ZE DW ($-A)/2
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,2
OUTLOOP: MOV DX,CX
DEC DX
MOV SI,DX
ADD SI,SI
INLOOP: CMP A[SI-2],AX
JBE INEXIT
MOV DI,A[SI-2]
MOV A[SI],DI
DEC SI
DEC SI
DEC DX
JNZ INLOOP
INEXIT: MOV A[SI],AX
INC CX
CMP CX,SI_ZE
JBE OUTLOOP
INT 21H
www.esnips.com/user/vapremaims

CODE ENDS
END START
**********************

www.esnips.com/user/vapremaims

10

9) 8086/Masm Program To Sort A Given Set Of 16 Bit Unsigned Integers Into


Ascending Order Using Bubble Sort.
DATA SEGMENT
A DB 34H,78H,12H,56H
SIZE DW $-A
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:

MOV AX,DATA
MOV DS,AX

OUTLOOP:

MOV BX,SIZE
DEC BX
MOV CX,BX
MOV SI,0

INLOOP:

MOV AL,A[SI]
INC SI
CMP AL,A[SI]
JB NOCHANG
XCHG AL,A[SI]
MOV A[SI-1].AL

NOCHANG: LOOP INLOOP


DEC BX
JNZ OUTLOOP
MOV AH,4CH
INT 21H
CODE ENDS
END START
****************************

www.esnips.com/user/vapremaims

11

10) 8086/Masm Program To Generate Prime Numbers From 1 To 50 Bcd.


DATA SEGMENT
X DB 2,14 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DL,X
LEA SI,X+1
MOV CH,14
LOC1: MOV DH,02
INC DL
LOC2: MOV AH,0
MOV AL,DL
DIV DH
CMP AH,0
JE LOC1
INC DH
CMP DH,DL
JB LOC2
MOV AL,1
MUL DL
AAM
MOV CL,04
ROL AL,CL
ROR AX,CL
MOV[SI],AL
INC SI
DEC CH
JNZ LOC1
MOV AH,4CH
INT 21H
CODE ENDS
END START
***********************

www.esnips.com/user/vapremaims

12

11) 8086/Masm Program To Transfer Given Source String To Destination String


Using String Instructions.
DATA SEGMENT
D1 DB "WELCOME","$"
D2 DB 10DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,07H
CLD
MOV SI,OFFSET D1
MOV DI,OFFSET D2
REP MOVSB
MOV CX,07H
STD
MOV SI,OFFSET D1+6
MOV DI,OFFSET D2+14
REP MOVSB
MOV AH,4CH
INT 21H
CODE ENDS
END START
*********************

www.esnips.com/user/vapremaims

13

12) 8086/Masm Program To Perform The Following Operations.


(A) Reverse A String.
DATA SEGMENT
M1 DB 10,13,'ENTER THE STRING:$'
M2 DB 10,13,'REVERSE OF A STRING:$'
BUFF DB 80
DB 0
DB 80 DUP(0)
COUNTER1 DW 0
COUNTER2 DW 0
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AH,09H
MOV DX,OFFSET M1
INT 21H
MOV AH,0AH
LEA DX,BUFF
INT 21H
MOV AH,09H
MOV DX,OFFSET M2
INT 21H
LEA BX,BUFF
INC BX
MOV CH,00
MOV CL,BUFF+1
MOV DI,CX
BACK:MOV DL,[BX+DI]
MOV AH,02H
INT 21H
DEC DI
JNZ BACK
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
*************************

www.esnips.com/user/vapremaims

14

13) 8086/Masm Program To Perform The Following Operations.


(b) Deleting a word from a string.
DATA SEGMENT
X DB 'AA','BB', 'CC','DD','EE','FF'
Z DW (Z-X)/2
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DI,X
MOV CX,Z
CLD
MOV AX,'CC' ;WORD TO BE DELETED
REPNE SCASW
CMP CX,0
JE LOC2
MOV AX,[DI]
LOC1:MOV [DI-2],AX
INC DI
INC DI
DEC CX
JNZ LOC1
MOV BYTE PTR[DI-2],'$'
LOC2: LEA DX,X
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
************************
www.esnips.com/user/vapremaims

15

14) 8086/Masm Program To Perform The Following Operations.


C) Searching A Word From A String.
DATA SEGMENT
N1 DB 12H,14H,78H,67H,34H
KEY DB 23H
CNT DB 5
M1 DB 'THE KEY FOUND IN'
RES DB 'THE POSITION ',13H,10H,'$'
M2 DB 'NOT FOUND',13H,10H,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,00H
MOV CX,CNT
NEXT:MOV AL,N1[SI]
CMP AL,KEY
JZ SUC
INC SI
LOOP NEXT
JMP FALL
SUC:MOV AX,SI
ADD AL,01H
ADD AL,'0'
MOV RES,AL
LEA DX,M1
JMP EXIT
FALL: LEA DX,M2
JMP EXIT
EXIT:MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
*************************
www.esnips.com/user/vapremaims

16

15) 8086/Masm Program To Multiply Two Matrices .


DATA SEGMENT
AR1 DB 1H,2H,-3H
AR2 DB 4H,5H,6H
AR3 DB 2H,-1H,3H
BC1 DB 2H,4H,-4H
BC2 DB 3H,-2H,5H
BC3 DB 1H,5H,2H
C DB 9 DUP (?)
L2 DB (?)
L1 DB (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV BP,0H
MOV L2,3H
LEA SI,AR1
REPEAT2: LEA DI,BC1
MOV L1,3H
REPEAT1: MOV CX,3H
MOV BX,0H
MOV DL,0H
AGAIN: MOV AL,[SI][BX]
IMUL BYTE PTR[DI][BX]
ADD DL,AL
INC BX
LOOP AGAIN
MOV DS:C[BP],DL
INC BP
ADD DI,3H
DEC L1
JNE REPEAT1
ADD SI,3H
DEC L2
JNE REPEAT2
MOV AH,4CH
INT 21H
CODE ENDS
END START
*************************
www.esnips.com/user/vapremaims

17

16) 8086/Masm Program To Print Factorial Of A Number


DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC
MOV AX,0001H
MOV CX,0008H
MOV DX,0000H
L1:
MUL CX
LOOP L1
MOV CX,00
L2:
MOV DX,0000H
MOV BX,0AH
DIV BX
PUSH DX
INC CX
CMP AX,0000H
JE L3
JMP L2
L3:
POP DX
MOV AH,02H
ADD DX,0030H
INT 21H
LOOP L3
END:
MOV AX,4C00H
INT 21H
CODE ENDS
MAIN ENDP
END MAIN
*********************

www.esnips.com/user/vapremaims

18

17) 8086/Masm Program To Print Numbers From 0-9 and 9-0


CODE SEGMENT
ASSUME CS:CODE
START:
MOV BL,00H
MOV AX,0200H
START2:
MOV DL,BL
ADD DL,30H
INT 21H
MOV DL,,
INT 21H
ADD BL,01H
CMP BL,0AH
JL START2
SUB BL,01H
START1:
MOV DL,BL
ADD DL,30H
INT 21H
MOV DL,,
INT 21H
SUB BL,01H
CMP BL,00H
JGE START1
MOV AX,4C00H
INT 21H
CODE ENDS
END STAR
**********************

www.esnips.com/user/vapremaims

19

18) 8086/Masm Program To Implement Linear Search


DATA SETMENT
MONIN DB 04
ALFMON DB 10 DUP(20H),$
P_NDB SEARCH FAIL, NO MONTH IS FOUND,$
MONTAB DB JANUARY,FEBURARY,MARCH,APRIL,MAY,JUNE,
JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
MU DW 9
DATA ENDS
CODE SETMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
MAIN PROC
MOV AX,DATA
MOV DS,AX
MOV ES,AX
CALL CONVBIN
CALL LOCMON
CALL DISPMON
END1:
MOV AX,4C00H
INT 21H
MAIN ENDP
CONVBIN PROC
MOV AH,MONIN
MOV AL,MONIN+1
XOR AX,3030H
CMP AH,00
JZ C20
XOR AH,AH
ADD AL,10
CMP AL,12
JNG C20
SRH_FAIL:
MOV AH,09
LEA DX,P_N
INT 21H
JMP END1
C20:
RET
CONVBIN ENDP
LOCMON PROC
LEA SI,MONTAB
DEC AL
MUL MU
www.esnips.com/user/vapremaims

20

ADD SI,AX
MOV CX,9
CLD
LEA DI,ALFMON
REP MOVSB
RET
LOCMON ENDP
DISPMON ENDP
DISPMON PROC
MOV AH,09
LEA DX,ALFMON
INT 21H
RET
DISPMON ENDP
CODE ENDS
END
*********************

www.esnips.com/user/vapremaims

21

19) 8086/Masm Program On Sorting


DATA SETMENT
MESSAGE DB HOW MANY NO:$
MESSAGE1 DB IN SORTED ORDER ARE$
ARRAY DB 20 DUP(0)
ROW DB 04H
COUNT DB ?
I DB 0
DATA ENDS
STACK SETMENT
STACK ENDS
CODE SETMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
START:
MOV AX, DATA
MOV DS,AX
MOV AH, 09H
LEA DX, MESSAGE
INT 21H
MOV AH,01H
INT 21H
SUB CX,CX
MOV CL,AL
SUB CL,48
MOV SI,0
MOV COUNT,CL
SCAN:
MOV AH,02H
MOV BH,00H
MOV DL,03H
MOV DH,ROW
INC ROW
INT 10H
MOV AH,01H
INT 21H
MOV BL,AL
INT 21H
MOV BH,AL
INT 21H
MOV BH,AL
CMP BH,0DH
JE SINGLE
DOUBLE:
MOV AX,0
SUB BL,30H
www.esnips.com/user/vapremaims

22

MOV AL,10
MUL BL
MOV BL,AL
SUB BH,30H
ADD BL,BH
ADD BL,30H
MOV ARAY[SI],BL
INC SI
LOOP SCAN
SINGLE:
CMP CX,0
JE SORT
MOV ARRAY[SI],BL
INC SI
LOOP SCAN
SORT:
MOV CL,COUNT
FOR1:
PUSH CX
MOV SI,0
MOV BL,COUNT
SUB BL,I
MOV CL,BL
FOR2:
MOV BL,ARRAY[SI]
CMP BL,ARRAY[SI+1]
JG SWAP
L1: INC SI
LOOP FOR2
POP CX
INC I
LOOP FOR1; Sorting Ends, Printing Starts
SPACE:
MOV AH,02H
MOV BH,00
MOV DL,01H
INC ROW
MOV DH,ROW
INT 10H
MOV AH,09H
LEA DX,MESSAGE1
INT 21H
INC COUNT
MOV CL,COUNT
MOV SI,0
www.esnips.com/user/vapremaims

23

PRT:
MOV AH,02H
MOV DL,
INT 21H
MOV DL,ARRAY[SI]
CMP DL,57
JG DIG2
INT 21H
INC SI
LOOP PRT
DIG2:
CMP CX,0
JE COMP
MOV AX,0
SUB DL,30H
MOV AL,DL
MOV BL,10
DIV BL
MOV DX, AX
MOV AH,02H
ADD DL,30H
INT 21H
INC SI
LOOP PRT
COMP:
MOV AX,4C00H
INT 21H
SWAP:
XCHG BL,ARRAY[SI+1]
XCHG ARRAY[SI],BL
JMP L1
CODE ENDS
END START
*******************

www.esnips.com/user/vapremaims

24

20) 8086/Masm Program On Using Move Instruction


DATA SEGMENT
HEAD1 DB RAGHAVA$
HEAD2 DB 8 DUP( )
HEAD DB 8 DUP( )
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
CLD
MOV CX,8
LEA DI, HEAD2
LEA SI,HEAD1
REP MOVSB
MOV CX,4
LEA DI,HEAD2
LEA DI,HEAD2
REP MOV SW
MOV AH,09
LEA DX, HEAD2
INT 21H
MOV AH,2H
MOV DL,
INT 21H
MOV AH,09H
LEA DX,HEAD3
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
END
**************************

www.esnips.com/user/vapremaims

25

21) 8086/Masm Program Using Comps Instruction


DATA SEGMENT
HEAD1 DB RAGHAVA$
HEAD2DB MALLIK
HEAD3DB 7 UP( )
SAME DB STRINGS R SAME $
DIF DB STRINGS R DIFFERENT $
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS, AX
MOV ES,AX
CLD
MOV CX,7
LEA DI,HEAD2
LEA SI,HEAD1
REPE CMPSB
JNE 11
MOV AH,09H
LEA DX,SAME
INT 21H
JMP 12
11:
MOV CX,7
LEA DI,HEAD3
LEA SI,HEAD2
REPE CMPSB
MOV AH,09
LEA DX,DIF
INT 21H
12:
MOV AX,4C00H
INT21H
CODE ENDS
END START
END
*********************

www.esnips.com/user/vapremaims

26

22) 8086/Masm Program Using Macro Placing The Cursor At Some Place
GOTO MACRO ROW, COL
MOV AH,02H
MOV BH,00H
MOV CX,1010H
MOV DH,ROW
MOV DL,COL
INT 10H
ENDM
DATA SETMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC
MOV AX,DATA
MOV DS,AX
GOTO AH,20
MOV AX,4C00H
INT 21H
CODE ENDS
MAIN ENDP
END
**************************

www.esnips.com/user/vapremaims

27

23) 8086/Masm Program On Files


DATA SEGMENT
FILE DW ?
PATH DB D:\RAGFILE.ASM
DSK DB ITS THE SMILE THAT SPREADS OUT FROM INSIDE$
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
CREATE:
MOV AH,3CH
MOV CX,00
LEA DX,PATH
INT 21H
MOV FILEH,AX
WRITE:
MOV AH,40H
MOV BX,FILEH
MOV CX,64; no.of characters written in the row of the file ragfile.asm
LEA DX,DSK
INT 21H
CLOSE:
MOV AH,3EH
MOV BX,FILEH
INT 21H
CODE ENDS
END START
***********************************

www.esnips.com/user/vapremaims

28

24) 8086/Masm Program Interfacing Of Floppy Drive


DATA SEGEMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,0EH
MOV DL,00
INT 21H
MOV AH,36H
MOV DL,00
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
*************************

www.esnips.com/user/vapremaims

29

25) 8086/Masm Program Interfacing Through Mouse


DATA SEGMENT
MSG DB NO OF BUTTONS IN THE MOUSE:,$
MSG1 DB BUTTON STATUS: ,$
INIT DB MOUSE IS INITIALISED,$
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,00H
INT 33H
CMP AX,00H
JE EXIT
MOV AH,09
LEA DX,INT
INT 21H
MOV AX,01H
INT 33H
MOV AH,09H
MOV DX, OFFSET MSG
INT 21H
MOV AH,02H
MOV DL,BL
ADD DL,48
INT 33H
MOV AH,09H
MOV DX, OFFSET MSG1
INT 21H
MOV AH,02H
MOV DL,BL
ADD DL,48
INT 21H
EXIT:
MOV AX,4C00H
INT 21H
CODE ENDS
END START
***********************

www.esnips.com/user/vapremaims

30

26) 8086/Masm Program To Check Whether The Mobile Number Entered


Through Keyboard Is Divisible By Nine
ASSUME DS:DATA,CS:CODE
DATA SEGMENT
MSG DB 0AH,0DH,'ENTER THE MOBILE NUMBER$'
NUMBER DB 20,0,20 DUP('$')
YES DB 0AH,0DH,'YES$'
NO DB 0AH,0DH,'NO$'
DATA ENDS
CODE SEGMENT
START:MOV AX,SEG DATA
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,NUMBER
MOV AH,0AH
INT 21H
LEA DX,NUMBER
MOV SL,DX
INC SI
INC SI
MOV CX,000AH
AGAIN:MOV AL,[SI]
AND AL,0FH
MOV [SI],AL
INC SI
LOOP AGAIN
LEA DX,NUMBER
MOV SI,DX
INC SI
INC SI
MOV CX,0009H
MOV AX,0000H
MOV AI,[SI]
ADDING:ADD AL,[SI+1]
INC SI
LOOP ADDING
MOV BL,03H
DIV BL
AND AH,0FFH
www.esnips.com/user/vapremaims

31

JZ YESS
LEA DX,NO
MOV AH,09H
INT 21H
JMP DOWN
YESS:LEA DX,YES
MOV AH,09H
INT 21H
DOWN: MOV AH,4CH
INT 21H
CODE ENDS
*********************************

www.esnips.com/user/vapremaims

32

27) 8086 OR MASM PROGRAM TO Count And Display The Number Of


Occurrances Of (I) Vowels (Ii) A Given Word From A Given String
ASSUME DS:DATA1,CS:CODE1
DATA1 SEGMENT
MSG DB 0AH,0DH,'ENTER THE WORD IN SMALL LETTERS',0AH,'$'
MSG1 DB 0AH,0DH,'THE NUMBER OF VOWELS IN THE GIVEN STRING IS=$'
MSG2 DB 0AH,0DH,'THE NUMBER OF OCCURANCE OF THE WORD IN THE
GIVEN STRING IS=$'
VOWEL DB 'A','E','I','O','U'
ENTER DB 'IS IS IS$'
GET DB 20,0,20 DUP('$')
DATA1 ENDS
CODE1 SEGMENT
START:MOV AX,SEG DATA1
MOV DS,AX
LEA DX,MSG1
MOV AH,09H
INT 21H
LEA BX,ENTER
MOV SI,BX
MOV BL,00H
CHECK:
LEA DX,VOWEL
MOV DI,DX
MOV DX,0005H
MOV AL,[SI]
REPEAT1:CMP AL,[DI]
JZ DOWN
INC DI
DEC DL
JNZ REPEAT1
JMP HAVE
DOWN:INC BL
HAVE:INC SI
MOV DH,'$'
CMP [SI],DH
JNZ CHECK
MOV DL,BL
ADD DL,30H
MOV AH,02H
www.esnips.com/user/vapremaims

33

INT 21H
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,GET
MOV AH,0AH
INT 21H
LEA DX,MSG2
MOV AH,09H
INT 21H
LEA DX,ENTER
MOV SI,DX
MOV DX,0000H
AGAIN:
LEA BX,GET+1
MOV CL,[BX]
INC BX
MOV DI,BX
AGAIN1:
MOV AL,[SI]
CMP AL,[DI]
JNZ UNDER
INC SI
INC DI
LOOP AGAIN1
MOV BL,20H
CMP [SI],BL;ASCII OF SPACE
JZ FOUND
MOV BL,24H
CMP [SI],BL;ASCII OF $
JZ FOUND
UNDER:INC SI
MOV BL,20H
CMP [SI],BL
JZ DO
MOV BL,24H
CMP [SI],BL
www.esnips.com/user/vapremaims

34

JZ OVER
JMP UNDER
FOUND:
INC DL
DO:INC SI
MOV BL,24H
CMP [SI],BL
JZ OVER
JMP AGAIN
OVER:ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE1 ENDS
***********************

www.esnips.com/user/vapremaims

35

28) 8086 MASM PROGRAM TO Read In A Binary String Through Keyboard


And Display It In The Reverse Order.Also Display Its Parity.
ASSUME DS:DATA1,CS:CODE1
DATA1 SEGMENT
MSG DB 0AH,0DH,'ENTER THE BINARY NUMBER$'
NUMBER DB 20,0,20 DUP('$')
MSG2 DB 0AH,0DH,'THE NUMBER IN REVERSED ORDER IS$',0AH,0DH
ODD DB 0AH,0DH,'THE NUMBER HAS ODD PARITY$'
EVENPAR DB 0AH,0DH,'THE NUMBER HAS EVEN PARITY$'
DATA1 ENDS
CODE1 SEGMENT
START:MOV AX,SEG DATA1
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,NUMBER
MOV AH,0AH
INT 21H
MOV BX,0000H
MOV CX,BX
MOV CL,NUMBER+1
LEA SI,NUMBER+2
AGAIN:MOV AX,0001H
AND AL,[SI]
JZ SKIP
INC BX
SKIP:INC SI
LOOP AGAIN
LEA DX,MSG2
MOV AH,09H
INT 21H
MOV CX,0000H
MOV CL,NUMBER+1
DEC SI
DO:
MOV DL,[SI]
MOV AH,02H
INT 21H
DEC SI
LOOP DO
www.esnips.com/user/vapremaims

36

MOV AX,BX
MOV BL,02H
DIV BL
AND AH,01H
JNZ ODDPAR
LEA DX,EVENPAR
MOV AH,09H
INT 21H
JMP DOWN
ODDPAR:
LEA DX,ODD
MOV AH,09H
INT 21H
DOWN: MOV AH,4CH
INT 21H
CODE1 ENDS
END START
****************

www.esnips.com/user/vapremaims

37

29) 8086 /Masm Program To Find Out Whether The Given Year Is A Leap Year
Or Not
ASSUME DS:DATA1,CS:CODE1
DATA1 SEGMENT
MSG DB 0AH,0DH,'ENTER THE YEAR$'
NUMBER DB 6,0,6 DUP('$')
YS DB 0AH,0DH,'YES,IT IS A LEAP YEAR$'
N DB 0AH,0DH,'NO,IT IS NOT A LEAP YEAR$'
DATA1 ENDS
CODE1 SEGMENT
START:MOV AX,SEG DATA1
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,NUMBER
MOV AH,0AH
INT 21H
LEA BX,NUMBER+4
MOV AH,[BX]
MOV AL,[BX+1]
AAD
MOV BL,04H
DIV BL
AND AH,0FFH
JZ YES
LEA DX,N
MOV AH,09H
INT 21H
JMP DOWN
YES:LEA DX,YS
MOV AH,09H
INT 21H
DOWN: MOV AH,4CH
INT 21H
CODE1 ENDS
END START
****************

www.esnips.com/user/vapremaims

38

30) 8086 / MASM PROGRAM TO CONVERT THE Given Temperature In


Centigrade(<100C) To Fahrenheit And Kelvin And Display It (I/P And O/P
As Decimal Numbers)
ASSUME DS:DATA1,CS:CODE1
DATA1 SEGMENT
MSG DB 0AH,0DH,'ENTER THE TEMPERATURE IN DEGREE CELSIUS',0AH,'$'
MSG1 DB 0AH,0DH,'ERROR! ENTER A TEMPERATURE LESS THAN 99
DEGREE C$'
MSG2 DB 0AH,0DH,'THE TEMPERATURE IN KELVIN SCALE IS=$'
MSG3 DB 0AH,0DH,'THE TEMPERATURE IN FARENHEIT SCALE IS
APPROXIMATELY=$'
MSG4 DB 0AH,0DH,'THE TEMPERATURE IN CELSIUS SCALE IS=$'
TEMP DB 6,0,6 DUP('$')
RESULT DB 20,0,20 DUP('$')
DATA1 ENDS
CODE1 SEG
START:MOV AX,SEG DATA1
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
MOV CH,02H
ASK:
LEA DX,TEMP
MOV AH,0AH
INT 21H
LEA DX,MSG4
MOV AH,09H
INT 21H
LEA DX,TEMP+2
MOV AH,09H
INT 21H
DO:
LEA BX,TEMP+1
MOV CL,[BX]
INC BX
MOV AH,[BX]
DEC CL
JZ DOWN
www.esnips.com/user/vapremaims

39

MOV AL,[BX+1]
DEC CL
JZ DOWN1
LEA DX,MSG1
MOV AH,09H
INT 21H
JMP ASK
DOWN:
MOV AL,AH
MOV AH,00H
DOWN1:
AND AX,0F0FH
AAD
DEC CH
JZ SECOND
ADD AX,0111H;273 ADDITION
CALL DISPLAY
LEA DX,MSG2
CALL SHOW
JMP DO
SECOND:
MOV CL,09H
MUL CL
MOV CL,05H
DIV CL
MOV AH,00H
ADD AL,20H;HEX EQUIVALENT OF 32
CALL DISPLAY
LEA DX,MSG3
CALL SHOW
JMP OVER
DISPLAY:LEA BX,RESULT+4
MOV DL,03H
MOV CL,0AH
AGAIN:
DIV CL
ADD AH,30H
MOV [BX],AH
DEC BX
MOV AH,00H
DEC DL
JNZ AGAIN
RET

www.esnips.com/user/vapremaims

40

SHOW:
MOV AH,09H
INT 21H
LEA DX,RESULT+2
MOV AH,09H
INT 21H
RET
OVER:
MOV AH,4CH
INT 21H
CODE1 ENDS
*************

www.esnips.com/user/vapremaims

41

31) 8086 / MASM PROGRAM To Display The Multiplication Table (First 10


Values) For A Number N(<10d)
ASSUME DS:DATA1,CS:CODE1
DATA1 SEGMENT
MSG DB 0AH,0DH,'ENTER THE NUMBER$'
NUMBER DB 2,0,2 DUP('$')
DECIMAL DB '0','1','2','3','4','5','6','7','8','9'
ANS DB 0AH,'0','*','0','=','0','0','$'
DATA1 ENDS
CODE1 SEGMENT
START;MOV AX,SEG DATA1
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
MOV CX,000AH
MOV DL,0AH
MOV AH,02H
INT 21H
LEA DX,NUMBER
MOV AH,0AH
INT 21H
LEA DX,NUMBER
INC DX
INC DX
MOV DI,DX
MOV BL,[DI]
AND BL,0FH
LEA DX,ANS
INC DX
MOV SI,DX
MOV DL,[DI]
MOV [SI],DL
LEA DX,ANS
INC DX
MOV DI,DX
LEA DX,DECIMAL
MOV SI,DX
AGAIN:LEA DX,ANS
INC DX
MOV DI,DX
MOV AL,[SI]
INC DI
INC DI
MOV [DI],AL
MOV BH,[SI]
www.esnips.com/user/vapremaims

42

MOV AX,0000H
AND BH,0FH
MOV AL,BH
MUL BL
AAM
ADD AX,03030H
INC DI
INC DI
MOV [DI],AH
INC DI
MOV [DI],AL
LEA DX,ANS
MOV AH,09H
INT 21H
INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE1 ENDS
END START
***************

www.esnips.com/user/vapremaims

43

32) 8086 / MASM PROGRAM To Input 9 Digits And Display The Second Biggest
Number That Can Be Formed Using Those Digits
ASSUME DS:DATA1,CS:CODE1,SS:STACK1
STACK1 SEGMENT
STORE1 DB 10,0,10 DUP('$')
STACK1 ENDS
DATA1 SEGMENT
MSG DB 0AH,0DH,'ENTER THE 9 DIGIT NUMBER$'
NUMBER DB 12,0,12 DUP('$')
MSG1 DB 0AH,0DH,'THE REARRANGED ORDER IS=$'
DATA1 ENDS
STACK1 SEGMENT
STORE DB 10,0,10 DUP('$')
STACK1 ENDS
CODE1 SEGMENT
START;MOV AX,SEG DATA1
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,NUMBER
MOV AH,0AH
INT 21H
MOV CX,0008H
PASS:PUSH CX
MOV CX,0008H
LEA DX,NUMBER+2
MOV SI,DX
AGAIN:MOV AL,[SI]
CMP AL,[SI+1]
JNC DOWN
XCHG AL,[SI+1]
XCHG AL,[SI]
DOWN:
INC SI
LOOP AGAIN
POP CX
LOOP PASS
MOV AL,[SI]
XCHG AL,[SI-1]
XCHG AL,[SI]
LEA DX,MSG1
MOV AH,09H
INT 21H
LEA DX,NUMBER+2
MOV AH,09H
www.esnips.com/user/vapremaims

44

INT 21H
MOV AH,4CH
INT 21H
CODE1 ENDS
END START
***************

www.esnips.com/user/vapremaims

45

33) 8086/Masm Program To Find Trace Of A Matrix.


DATA SEGMENT
MATRIX DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH ;3*3
ROW DW 0003H ;NO. OF ROWS
COL DW 0003H ;NO. OF COLS
TRACE DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,00H
MOV BX,00H
MOV AX,ROW
CMP AX,COL
JNZ FAIL
MOV AX,00H
MOV CX,ROW
AGAIN:ADD AL,MATRIX[SI][BX]
JNC SKIP
INC AH
SKIP: INC SI
ADD BX,COL
LOOP AGAIN
MOV TRACE,AX
JMP OVR
FAIL: MOV TRACE,00H
OVR:MOV AH,4CH
INT 21H
CODE ENDS
END START
**************************
www.esnips.com/user/vapremaims

46

You might also like