Professional Documents
Culture Documents
8086 Masm Programs PDF
8086 Masm Programs PDF
For
M.C.A Students
(Affiliated to Kakatiya University)
www.esnips.com/user/vapremaims 1
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
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
www.esnips.com/user/vapremaims 3
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
www.esnips.com/user/vapremaims 4
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
www.esnips.com/user/vapremaims 5
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
www.esnips.com/user/vapremaims 6
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:
www.esnips.com/user/vapremaims 7
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
ABOVE:MOV DX,0H
DIV BX
CMP DX,0
JE EXIT
MOV AX,DX
JMP AGAIN
www.esnips.com/user/vapremaims 8
8) ) 8086/Masm Program To Sort A Given Set Of 16 Bit 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
www.esnips.com/user/vapremaims 9
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
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
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.
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.
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
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
www.esnips.com/user/vapremaims 27
23) 8086/Masm Program On Files
DATA SEGMENT
FILE DW ?
PATH DB ‘D:\RAGFILE.ASM’
DSK DB ‘IT’S 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
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(<100°C) 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