8086 masm programs

46
www.esnips.com/user/vapremaims 1 Microprocessor Lab Programs For M.C.A Students (Affiliated to Kakatiya University)

Upload: veera-ragavan

Post on 28-Nov-2014

9.023 views

Category:

Documents


27 download

TRANSCRIPT

Page 1: 8086 Masm Programs

www.esnips.com/user/vapremaims 1

Microprocessor Lab Programs

For

M.C.A Students

(Affiliated to Kakatiya University)

Page 2: 8086 Masm Programs

www.esnips.com/user/vapremaims 2

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 ***********************

Page 3: 8086 Masm Programs

www.esnips.com/user/vapremaims 3

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 *****************

Page 4: 8086 Masm Programs

www.esnips.com/user/vapremaims 4

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 *******************

Page 5: 8086 Masm Programs

www.esnips.com/user/vapremaims 5

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 ************************

Page 6: 8086 Masm Programs

www.esnips.com/user/vapremaims 6

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 *************************

Page 7: 8086 Masm Programs

www.esnips.com/user/vapremaims 7

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 **********************

Page 8: 8086 Masm Programs

www.esnips.com/user/vapremaims 8

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 ************************

Page 9: 8086 Masm Programs

www.esnips.com/user/vapremaims 9

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

Page 10: 8086 Masm Programs

www.esnips.com/user/vapremaims 10

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

Page 11: 8086 Masm Programs

www.esnips.com/user/vapremaims 11

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

****************************

Page 12: 8086 Masm Programs

www.esnips.com/user/vapremaims 12

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 ***********************

Page 13: 8086 Masm Programs

www.esnips.com/user/vapremaims 13

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 *********************

Page 14: 8086 Masm Programs

www.esnips.com/user/vapremaims 14

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 *************************

Page 15: 8086 Masm Programs

www.esnips.com/user/vapremaims 15

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 ************************

Page 16: 8086 Masm Programs

www.esnips.com/user/vapremaims 16

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 *************************

Page 17: 8086 Masm Programs

www.esnips.com/user/vapremaims 17

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 *************************

Page 18: 8086 Masm Programs

www.esnips.com/user/vapremaims 18

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 *********************

Page 19: 8086 Masm Programs

www.esnips.com/user/vapremaims 19

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 **********************

Page 20: 8086 Masm Programs

www.esnips.com/user/vapremaims 20

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

Page 21: 8086 Masm Programs

www.esnips.com/user/vapremaims 21

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 *********************

Page 22: 8086 Masm Programs

www.esnips.com/user/vapremaims 22

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

Page 23: 8086 Masm Programs

www.esnips.com/user/vapremaims 23

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

Page 24: 8086 Masm Programs

www.esnips.com/user/vapremaims 24

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 *******************

Page 25: 8086 Masm Programs

www.esnips.com/user/vapremaims 25

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 **************************

Page 26: 8086 Masm Programs

www.esnips.com/user/vapremaims 26

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 *********************

Page 27: 8086 Masm Programs

www.esnips.com/user/vapremaims 27

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 **************************

Page 28: 8086 Masm Programs

www.esnips.com/user/vapremaims 28

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 ***********************************

Page 29: 8086 Masm Programs

www.esnips.com/user/vapremaims 29

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 *************************

Page 30: 8086 Masm Programs

www.esnips.com/user/vapremaims 30

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 ***********************

Page 31: 8086 Masm Programs

www.esnips.com/user/vapremaims 31

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

Page 32: 8086 Masm Programs

www.esnips.com/user/vapremaims 32

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 *********************************

Page 33: 8086 Masm Programs

www.esnips.com/user/vapremaims 33

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

Page 34: 8086 Masm Programs

www.esnips.com/user/vapremaims 34

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

Page 35: 8086 Masm Programs

www.esnips.com/user/vapremaims 35

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

***********************

Page 36: 8086 Masm Programs

www.esnips.com/user/vapremaims 36

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

Page 37: 8086 Masm Programs

www.esnips.com/user/vapremaims 37

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 ****************

Page 38: 8086 Masm Programs

www.esnips.com/user/vapremaims 38

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 ****************

Page 39: 8086 Masm Programs

www.esnips.com/user/vapremaims 39

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

Page 40: 8086 Masm Programs

www.esnips.com/user/vapremaims 40

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

Page 41: 8086 Masm Programs

www.esnips.com/user/vapremaims 41

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

Page 42: 8086 Masm Programs

www.esnips.com/user/vapremaims 42

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]

Page 43: 8086 Masm Programs

www.esnips.com/user/vapremaims 43

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 ***************

Page 44: 8086 Masm Programs

www.esnips.com/user/vapremaims 44

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

Page 45: 8086 Masm Programs

www.esnips.com/user/vapremaims 45

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

Page 46: 8086 Masm Programs

www.esnips.com/user/vapremaims 46

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 **************************