Sei sulla pagina 1di 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

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

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 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 START: OUTLOOP: MOV AX,DATA MOV DS,AX 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

Potrebbero piacerti anche