8086 lab programs

164
1. ADDITION OF TWO 8-BIT HEXADECIMAL NUMBERS DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 8-BIT NUMBER IS:','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H ADD BL,DL JNC NEXT INC CL NEXT:CALL DISP MOV AH,4CH INT 21H READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 1 | Page

Upload: graciousparul

Post on 28-Nov-2014

59 views

Category:

Documents


11 download

DESCRIPTION

Uploaded from Google Docs

TRANSCRIPT

Page 1: 8086 lab programs

1. ADDITION OF TWO 8-BIT HEXADECIMAL NUMBERS DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 8-BIT NUMBER IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H ADD BL,DL JNC NEXT INC CL NEXT:CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H

1 | P a g e

Page 2: 8086 lab programs

R2:AND AL,0FH OR DL,AL RET READ ENDP

DISP PROC NEAR PUBLIC DISP LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2:ADD BL,30H MOV DL,BL MOV AH,06H INT 21H RETDISP ENDPCODE ENDSEND START

OUTPUT:ENTER FIRST NUMBER : E9ENTER SECOND NUMBER : FASUM OF TWO 8-BIT NUMBER IS : 1E3

ENTER FIRST NUMBER : ABENTER SECOND NUMBER : CDSUM OF TWO 8-BIT NUMBER IS : 178

2 | P a g e

Page 3: 8086 lab programs

2. ADDITION OF TWO 8-BIT BCD

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 8-BIT NUMBER IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H MOV AL,BL ADD AL,DL DAA JNC NEXT INC CL NEXT:MOV BL,AL CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H

3 | P a g e

Page 4: 8086 lab programs

INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2:AND AL,0FH OR DL,AL RET READ ENDP

DISP PROC NEAR PUBLIC DISP LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2:ADD BL,30H MOV DL,BL MOV AH,06H INT 21H RET

DISP ENDPCODE ENDSEND START

4 | P a g e

Page 5: 8086 lab programs

OUTPUT:

ENTER FIRST NUMBER : 97ENTER SECOND NUMBER : 56SUM OF TWO 8-BIT NUMBER IS : 153

ENTER FIRST NUMBER : 82ENTER SECOND NUMBER : 19SUM OF TWO 8-BIT NUMBER IS : 101

5 | P a g e

Page 6: 8086 lab programs

3. ADDITION OF TWO 16-BIT HEXADECIMAL NUMBERS

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 16-BIT NUMBER IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BX,DX LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H ADD BX,DX JNC NEXT INC CL NEXT:CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ

MOV CH,02H R3:MOV AH,01H INT 21H MOV CL,04H MOV DL,AL SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H

6 | P a g e

Page 7: 8086 lab programs

CMP AL,0AH JC R2 SUB AL,07H AND AL,0FH R2:OR DL,AL DEC CH JZ R4 MOV DH,DL JMP R3 R4:RET READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CH,02H L3:MOV CL,04H MOV DL,BH SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC L2 ADD BH,07H L2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21H DEC CH JZ L4 MOV BH,BL JMP L3 L4:RET

7 | P a g e

Page 8: 8086 lab programs

DISP ENDPCODE ENDSEND START

OUTPUT:

ENTER FIRST NUMBER : 2345ENTER SECOND NUMBER : 5646SUM OF TWO 16-BIT NUMBER IS : 0798B

ENTER FIRST NUMBER : FFFFENTER SECOND NUMBER : AAAASUM OF TWO 16-BIT NUMBER IS : 1AAA9

8 | P a g e

Page 9: 8086 lab programs

4. ADDITION OF TWO 16-BIT BCD NUMBERS

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 16-BIT NUMBER IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BX,DX LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H MOV AL,BL ADD AL,DL DAA MOV BL,AL MOV AL,BH ADC AL,DH DAA JNC NEXT INC CL NEXT:MOV BH,AL CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ

MOV CH,02H R3:MOV AH,01H INT 21H MOV CL,04H MOV DL,AL SUB DL,30H

9 | P a g e

Page 10: 8086 lab programs

CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H AND AL,0FH R2:OR DL,AL DEC CH JZ R4 MOV DH,DL JMP R3 R4:RET READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CH,02H L3:MOV CL,04H MOV DL,BH SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC L2 ADD BH,07H L2:ADD BH,30H MOV DL,BH MOV AH,06H

10 | P a g e

Page 11: 8086 lab programs

INT 21H DEC CH JZ L4 MOV BH,BL JMP L3 L4:RET

DISP ENDPCODE ENDSEND START

OUTPUT:ENTER FIRST NUMBER : 6987ENTER SECOND NUMBER : 3991SUM OF TWO 16-BIT NUMBER IS : 10978

ENTER FIRST NUMBER : 9999ENTER SECOND NUMBER : 8888SUM OF TWO 16-BIT NUMBER IS : 18887

11 | P a g e

Page 12: 8086 lab programs

5. SUBTRACTION OF TWO 8-BIT HEXADECIMAL NUMBERS

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'SUBTRACTION OF TWO 8-BIT NUMBER IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H SUB BL,DL JNC NEXT NEG BL MOV CL,'-' NEXT:CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H

12 | P a g e

Page 13: 8086 lab programs

CMP AL,0AH JC R2 SUB AL,07H R2:AND AL,0FH OR DL,AL RET READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2:ADD BL,30H MOV DL,BL MOV AH,06H INT 21H RET

DISP ENDPCODE ENDSEND START

13 | P a g e

Page 14: 8086 lab programs

OUTPUT:

ENTER FIRST NUMBER : 55ENTER SECOND NUMBER : AASUBTRACTION OF TWO 8-BIT NUMBER IS : -55

ENTER FIRST NUMBER : FAENTER SECOND NUMBER : 93SUBTRACTION OF TWO 8-BIT NUMBER IS : -67

14 | P a g e

Page 15: 8086 lab programs

6. SUBTRACTION OF TWO 8-BIT BCD NUMBERS

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NO:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NO:','$' MESS3 DB 0AH,0DH,'SUBTRACTION OF TWO 8-BIT NO IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H MOV AL,BL SUB AL,DL DAS JNC NEXT MOV CH,99H SUB CH,AL MOV AL,CH ADD AL,01H DAA MOV CL,'-' NEXT: MOV BL,AL CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01H INT 21H

15 | P a g e

Page 16: 8086 lab programs

MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2:AND AL,0FH OR DL,AL RET READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2:ADD BL,30H MOV DL,BL MOV AH,06H INT 21H RET

16 | P a g e

Page 17: 8086 lab programs

DISP ENDPCODE ENDSEND START

OUTPUT:

ENTER FIRST NUMBER : 98ENTER SECOND NUMBER : 54SUBTRACTION OF TWO 8-BIT NUMBER IS : 044

ENTER FIRST NUMBER : 87ENTER SECOND NUMBER : 98SUBTRACTION OF TWO 8-BIT NUMBER IS : -11

17 | P a g e

Page 18: 8086 lab programs

7. SUBTRACTION OF TWO 16-BIT HEXADECIMAL NUMBERS.

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER :''$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER :''$' MESS3 DB 0AH,0DH,'SUBTRACTION IS :''$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATAMOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BX,DXLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV CL,' 'SUB BX,DXMOV CL,00HJNC NEXTINC CLMOV CL,'-'NEG BX

NEXT: CALL DISPMOV AH,4CHINT 21H

READ PROC NEARPUBLIC READ

MOV CH,02H R3: MOV AH,01H

INT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07H

R1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30H

18 | P a g e

Page 19: 8086 lab programs

CMP AL,0AHJC R2SUB AL,07H

R2: AND AL,0FHOR DL,ALDEC CHJZ R4MOV DH,DLJMP R3R4:RET

READ ENDP

DISP PROC NEARPUBLIC DISP

LEA DX,MESS3MOV AH,09HINT 21HMOV DL,CLMOV AH,06HINT 21HMOV CH,02H

L3:MOV CL,04HMOV DL,BHSHR DL,CLCMP DL,0AHJC L1ADD DL,07H

L1:ADD DL,30HMOV AH,06HINT 21HAND BH,0FHCMP BH,0AHJC L2ADD BH,07H

L2:ADD BH,30HMOV DL,BHMOV AH,06HINT 21HDEC CHJZ L4MOV BH,BLJMP L3L4:RET DISP ENDP

CODE ENDSEND START

19 | P a g e

Page 20: 8086 lab programs

OUTPUT:ENTER FIRST NUMBER : DE32ENTER SECOND NUMBER : 97CASUBTRACTION OF TWO 8-BIT NUMBER IS : 04668

ENTER FIRST NUMBER : 698FENTER SECOND NUMBER : B2C6SUBTRACTION OF TWO 8-BIT NUMBER IS : -4937

20 | P a g e

Page 21: 8086 lab programs

8. SUBTRACTION OF TWO 16-BIT BCD NUMBERS

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NO:','$' MESS2 DB 0AH,0DH,'ENTER SECOND NO:','$' MESS3 DB 0AH,0DH,'SUBTRACTION OF TWO 16-BIT NO IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATAMOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BX,DXLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV AX,BXMOV CL,' 'MOV AL,BLSUB AL,DLDASMOV BL,ALMOV AL,BHSBB AL,DHDASMOV BH,ALJNC NEXTMOV AX,0000HSUB AL,BLADD DL,01HDASMOV BL,ALMOV AL,AHSBB AL,BHDASMOV BH,ALMOV CL,'-'NEXT: CALL DISPMOV AH,4CHINT 21H

21 | P a g e

Page 22: 8086 lab programs

READ PROC NEAR PUBLIC READ

MOV CH,02HR3: MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALDEC CHJZ R4MOV DH,DLJMP R3R4:RET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3MOV AH,09HINT 21HMOV DL,CLMOV AH,06HINT 21HMOV CH,02HL3:MOV CL,04HMOV DL,BHSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1:ADD DL,30HMOV AH,06H

22 | P a g e

Page 23: 8086 lab programs

INT 21H AND BH,0FH

CMP BH,0AH JC L2 ADD BH,07HL2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21H DEC CH JZ L4 MOV BH,BL JMP L3 L4:RET DISP ENDP

CODE ENDSEND START

OUTPUT:

ENTER FIRST NUMBER : 9873ENTER SECOND NUMBER : 8642SUBTRACTION OF TWO 8-BIT NUMBER IS : 01231

ENTER FIRST NUMBER : 2431ENTER SECOND NUMBER : 9247SUBTRACTION OF TWO 8-BIT NUMBER IS : -6816

23 | P a g e

Page 24: 8086 lab programs

9. MULTIPLICATION OF TWO 8-BIT HEXADECIMAL NUMBERS.

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE FIRST NUMBER:','$' MESS2 DB 0AH,0DH,'ENTER THE SECOND NUMBER:','$' MESS3 DB 0AH,0DH,'PRODUCT IS:','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BX,DX LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV AX,BX MUL DL MOV BX,AX CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2

24 | P a g e

Page 25: 8086 lab programs

SUB AL,07H R2:AND AL,0FH OR DL,AL RET READ ENDP DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV CH,02H L3:MOV CL,04H MOV DL,BH SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC L2 ADD BH,07H L2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21H DEC CH JZ L4 MOV BH,BL JMP L3 L4:RET

DISP ENDPCODE ENDSEND START

25 | P a g e

Page 26: 8086 lab programs

OUTPUT:

ENTER FIRST NUMBER : 01ENTER SECOND NUMBER : 01PRODUCT IS : 0001

ENTER FIRST NUMBER : 0AENTER SECOND NUMBER : 0APRODUCT IS : 0064

26 | P a g e

Page 27: 8086 lab programs

10.MULTIPLICATION OF TWO 16-BIT NUMBERS (HEXADECIMAL)

DATA SEGMENT

MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER :''$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER :''$' MESS3 DB 0AH,0DH,'PRODUCT IS :''$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATAMOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BX,DXLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV AX,BXMUL DXMOV BX,DXMOV SI,AXCALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV CH,02HR3: MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01H

27 | P a g e

Page 28: 8086 lab programs

INT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALDEC CHJZ R4MOV DH,DLJMP R3R4: RET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3MOV AH,09HINT 21HMOV CH,04HMOV CL,04HL3: MOV DL,BHSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1: ADD DL,30HMOV AH,06HINT 21HAND BH,0FHCMP BH,0AHJC L2ADD BH,07HL2:ADD BH,30HMOV DL,BHMOV AH,06HINT 21HDEC CHJZ L4MOV BH,BLCMP CH,03HJNZ L5MOV DX,SIL5:MOV BL,DHMOV DH,DLJMP L3

28 | P a g e

Page 29: 8086 lab programs

L4:RET

DISP ENDP CODE ENDS END START

OUTPUT

ENTER FIRST NUMBER : F4D9ENTER SECOND NUMBER : 6A52PRODUCT OF TWO NUMBERS : 65B04782

ENTER FIRST NUMBER : 23CDENTER SECOND NUMBER : 542EPRODUCT OF TWO NUMBERS : 0BC5B2D6

29 | P a g e

Page 30: 8086 lab programs

10. DIVISION OF 8-BIT BY 8-BIT NUMBERS.

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE DIVIDEND:','$' MESS2 DB 0AH,0DH,'ENTER THE DIVISOR:','$' MESS3 DB 0AH,0DH,'DIVISION IS :','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV AH,00H MOV AL,BL DIV DL MOV BH,AL MOV AL,00H DIV DL MOV BL,AL CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL

30 | P a g e

Page 31: 8086 lab programs

MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2:AND AL,0FH OR DL,AL RET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV CH,02H LP1:MOV CL,04H MOV DL,BH SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC L2 ADD BH,07H L2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21H DEC CH JZ NXT MOV DL,'.' MOV AH,06H INT 21H MOV BH,BL JMP LP1 NXT:RET

DISP ENDP

31 | P a g e

Page 32: 8086 lab programs

CODE ENDS END START

OUTPUT:

ENTER THE DIVIDEND : D1ENTER THE DIVISOR : B2DIVISION : 01.00

ENTER THE DIVIDEND : A2ENTER THE DIVISOR : 13DIVISION : 08.00

32 | P a g e

Page 33: 8086 lab programs

11. DIVISION OF 16-BIT BY 16-BIT NUMBERS.

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE DIVIDEND:','$' MESS2 DB 0AH,0DH,'ENTER THE DIVISOR:','$' MESS3 DB 0AH,0DH,'DIVISION IS :','$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BX,DX LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV SI,DX MOV DX,0000H MOV AX,BX DIV SI MOV BX,AX MOV AX,0000H DIV SI MOV SI,AX CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ

MOV CH,02H R3:MOV AH,01H INT 21H MOV CL,04H MOV DL,AL SUB DL,30H CMP DL,0AH JC R1

33 | P a g e

Page 34: 8086 lab programs

SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H AND AL,0FH R2:OR DL,AL DEC CH JZ R4 MOV DH,DL JMP R3 R4:RET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV CH,02H MOV CL,04H MOV DL,BH SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC L2 ADD BH,07H L2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21HBACK:MOV DL,BL SHR DL,CL CMP DL,0AH JC L3

34 | P a g e

Page 35: 8086 lab programs

ADD DL,07H L3:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L4 ADD BL,07H L4:ADD BL,30H MOV DL,BL MOV AH,06H INT 21H DEC CH JZ NXT MOV DL,'.' MOV AH,06H INT 21H MOV BX,SI MOV BL,BH JMP BACK NXT:RET

DISP ENDP CODE ENDS END START

OUTPUT:

ENTER THE DIVIDEND : 6543ENTER THE DIVISOR : 1234DIVISION : 0005.90

ENTER THE DIVIDEND : FFFFENTER THE DIVISOR : CCCCDIVISION : 0001.40

35 | P a g e

Page 36: 8086 lab programs

13.AVERAGE OF ‘N’ 8-BIT NUMBERS (HEXADECIMAL)

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE LIMIT: ''$' MESS2 DB 0AH,0DH,'ENTER THE NUMBER:','$' MESS3 DB 0AH,0DH,'AVERAGE IS : ', '$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START :MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV CH,DL MOV BH,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV BL,DL MOV dh,00h BACK: DEC CH MOV DL,',' MOV AH,06H INT 21H JZ NEXT CALL READ ADD BL,DL JNC LP1 INC DH LP1:JMP BACK NEXT:MOV AL,BL MOV AH,DH DIV BH MOV BL,AL MOV AL,00H DIV BH MOV BH,AL CALL DISP MOV AH,4CH INT 21H

36 | P a g e

Page 37: 8086 lab programs

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2: AND AL,0FH OR DL,AL RET READ ENDP

DISP PROC NEAR PUBLIC DISP LEA DX,MESS3 MOV AH,09H INT 21H MOV CH,02H LP2: MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1: ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2: ADD BL,30H MOV DL,BL MOV AH,06H INT 21H DEC CH

37 | P a g e

Page 38: 8086 lab programs

JZ NXT MOV DL,'.' MOV AH,06H INT 21H MOV BL,BH JMP LP2 NXT:RET

DISP ENDP CODE ENDS END START

OUPTUT:

ENTER THE LIMIT: 05ENTER THE NUMBERS: 34,65,24,87,45THE AVERAGE IS : 4E.99

38 | P a g e

Page 39: 8086 lab programs

14. AVERAGE OF 8-BIT NUMBERS (BCD)

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE LIMIT: ''$' MESS2 DB 0AH,0DH,'ENTER THE NUMBER:','$' MESS3 DB 0AH,0DH,'AVERAGE IS : ', '$' QUO DB 00H DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START :MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV CH,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV BL,DL MOV DH,CH MOV BH,00H N1:MOV AL,CH SUB AL,01H DAS MOV CH,AL JZ N2 MOV DL,',' MOV AH,06H INT 21H CALL READ MOV AL,BL ADD AL,DL DAA MOV BL,AL JNC N3 MOV AL,BH ADD AL,01H DAA MOV BH,AL N3:JMP N1

39 | P a g e

Page 40: 8086 lab programs

N2:MOV CH,02H MOV DL,DH MOV DH,00H MOV CL,00H N4: MOV AX,BX SUB AL,DL DAS MOV BL,AL MOV AL,BH SBB AL,00H DAS MOV BH,AL MOV AL,CL ADD AL,01H DAA MOV CL,AL CMP BX,DX JAE N4 DEC CH JZ N5 MOV QUO,CL MOV CL,00H MOV BH,BL JMP N4 N5: MOV BL,QUO MOV BH,CL CALL DISP MOV AH,4CH INT 21HREAD PROC NEARPUBLIC READ

MOV AH,01H INT 21H MOV CL,04H SHL AL,CL MOV DL,AL MOV AH,01H INT 21H AND AL,0FH OR DL,AL RET

READ ENDP

DISP PROC NEAR

40 | P a g e

Page 41: 8086 lab programs

PUBLIC DISP

LEA DX,MESS3 MOV AH,09H INT 21H MOV CH,02H LOP:MOV CL,04H MOV DL,BL SHR DL,CL ADD DL,30H MOV AH,06H INT 21H AND BL,0FH ADD BL,30H MOV DL,BL MOV AH,06H INT 21H DEC CH JZ RT CMP CH,01H JNZ L3 MOV DL,'.' MOV AH,06H INT 21H L3:MOV BL,BH JMP LOP RT:RET

DISP ENDP

CODE ENDS END START

OUPTUT:

ENTER THE LIMIT: 05ENTER THE NUMBERS: 34,45,56,67,78THE AVERAGE IS : 56

41 | P a g e

Page 42: 8086 lab programs

15.ADDITION OF TWO 6-DIGIT NUMBERS (HEXADECIMAL)

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE 1ST NUMBER: ''$' MESS2 DB 0AH,0DH,'ENTER THE 2ND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 6-DIGIT NUMBER IS : ', '$' QUO DB 00H DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START :MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV SI,DX MOV BL,BH LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV CL,00H ADD SI,DX ADC BL,BH JNC NEXT INC CL NEXT: CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV CH,03H X1:MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL

42 | P a g e

Page 43: 8086 lab programs

MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2:AND AL,0FH OR DL,AL DEC CH JZ X2 CMP CH,02H JNZ R3 MOV BH,DL JMP X1 R3:MOV DH,DL JMP X1 X2:RET READ ENDP

DISP PROC NEAR PUBLIC DISP LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CH,03H LP1:MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2:ADD BL,30H MOV DL,BL MOV AH,06H INT 21H

43 | P a g e

Page 44: 8086 lab programs

DEC CH JZ LAST CMP CH,02H JNZ L3 MOV DX,SI L3: MOV BL,DH MOV DH,DL JMP LP1 LAST :RET

DISP ENDP CODE ENDS END START

OUTPUT:ENTER FIRST NUMBER: 23ABCFENTER FIRST NUMBER:F45C24SUM OF TWO NUMBERS:11807F3

ENTER FIRST NUMBER: 111111ENTER FIRST NUMBER:222222SUM OF TWO NUMBERS:0333333

44 | P a g e

Page 45: 8086 lab programs

16.ADDITION OF TWO 6-DIGIT NUMBERS (BCD)

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE 1ST NUMBER: ''$' MESS2 DB 0AH,0DH,'ENTER THE 2ND NUMBER:','$' MESS3 DB 0AH,0DH,'SUM OF TWO 6-DIGIT NUMBER IS : ', '$' QUO DB 00H

DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START :MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV SI,DXMOV BH,BLLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV CL,00HADD AL,DLDAAMOV DL,ALMOV AL,AHADC BH,BLMOV DH,DLMOV SI,DXADC BH,BLMOV AL,BHDAAMOV BH,ALJNC NEXINC CLNEXT: CALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ MOV CH,03H X1:MOV AH,01H INT 21H

45 | P a g e

Page 46: 8086 lab programs

MOV DL,AL MOV CL,04H SUB DL,30H R1:SHL DL,CL MOV AH,01H INT 21H R2:AND AL,0FH OR DL,AL DEC CH JZ X2 CMP CH,01H JZ R3 R3:MOV DH,DL JMP X1 X2:RET READ ENDP DISP PROC NEAR PUBLIC DISP LEA DX,MESS3 MOV AH,09H INT 21H MOV DL,CL ADD DL,30H MOV AH,06H INT 21H MOV CH,03H LP1:MOV CL,04H MOV DL,BH SHR DL,CL L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH ADD BH,30H MOV DL,BH MOV AH,06H INT 21H DEC CH JZ LAST CMP CH,02H JNZ L3 MOV DX,SI L3: MOV BH,DH MOV DH,DL JMP LP1

46 | P a g e

Page 47: 8086 lab programs

LAST :RET

DISP ENDP CODE ENDS END START

OUTPUT:ENTER FIRST NUMBER: 234567ENTER FIRST NUMBER:954132SUM OF TWO NUMBERS:1188699

ENTER FIRST NUMBER: 111111ENTER FIRST NUMBER:222222SUM OF TWO NUMBERS:0333333

17.TO FIND MAXIMUM AND MINIMUM OF GIVEN NUMBERS.

47 | P a g e

Page 48: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER LIMIT :''$' MESS2 DB 0AH,0DH,'ENTER NUMBERS :''$' MESS3 DB 0AH,0DH,'MAXIMUM IS :''$' MESS4 DB 0AH,0DH,'MINIMUM IS :''$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV CH,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV BH,DL MOV BL,DL L1:DEC CH JZ L2 MOV DL,',' MOV AH,06H INT 21H CALL READ MOV DH,DL CMP BH,DL JAE L3 XCHG BH,DL L3:CMP BL,DH JBE L4 XCHG BL,DH L4:JMP L1 L2:LEA DX,MESS3 MOV AH,09H INT 21H CALL DISP LEA DX,MESS4 MOV AH,09H INT 21H

48 | P a g e

Page 49: 8086 lab programs

MOV BH,BL CALL DISP MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV CL,04H MOV DL,AL SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H AND AL,0FH R2:OR DL,AL RET READ ENDP

DISP PROC NEAR PUBLIC DISP MOV CL,04H MOV DL,BH SHR DL,CL CMP DL,0AH JC N1 ADD DL,07H N1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC N2 ADD BH,07H N2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21H

49 | P a g e

Page 50: 8086 lab programs

RET

DISP ENDP CODE ENDS END START

OUTPUT:

ENTER LIMIT : 05ENTER NUMBERS : 22, 78, 96, 30, 12MAXIMUM IS : 96MINIMUM IS : 12

ENTER LIMIT : 07ENTER NUMBERS : 32,12,F4,09,67,F5,8DMAXIMUM IS : F5MINIMUM IS : 09

18. SORTING OF ‘N’NUMBERS

50 | P a g e

Page 51: 8086 lab programs

DATA SEGMENT M1 DB 0AH,0DH,'ENTER THE LIMIT:' , '$' M2 DB 0AH,0DH,'THE NUMBERS IS:' , '$' M3 DB 0AH,0DH,'THE SORTED NUMBERS ARE :' , '$' ARRAY DB 20 DUP(0) DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START : MOV AX,DATA MOV DS,AX LEA DX,M1 MOV AH,09H INT 21H CALL READ MOV BL,CH MOV BH,CH MOV DI,BX LEA DX,M2 MOV AH,09H INT 21H LEA SI ,ARRAY L1: CALL READ MOV [SI],CH INC SI DEC BL JNZ L1 LEA DX,M3 MOV AH,09H INT 21H LEA BP,ARRAY L2: MOV BL,BH MOV SI,BP L4: DEC BL JZ L3 INC SI MOV AL,[BP] CMP AL,[SI] JNA L4 MOV AH,[SI] MOV [SI],AL MOV [BP],AH JMP L4 L3:INC BP

51 | P a g e

Page 52: 8086 lab programs

DEC BH JNZ L2 LEA SI,ARRAY MOV BX,DI L5:CALL DISP INC SI DEC BH JNZ L5 MOV AX,4C00H INT 21HREAD PROC NEARPUBLIC READ

MOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R1SUB AL,07HR1:MOV CL,04HSHL AL,CLMOV CH,ALMOV AH,01HINT 21HSUB AL,30HCMP AL, 0AHJC R2SUB AL,07HAND AL,0FHR2:OR CH,ALMOV DL,' 'MOV AH,06HINT 21HRET

READ ENDP

DISP PROC NEAR PUBLIC DISP MOV CL,04H

MOV BL,[SI]MOV DL,BLSHR DL,CLCMP DL,0AHJC X1ADD DL,07HX1:ADD DL,30H

52 | P a g e

Page 53: 8086 lab programs

MOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC X2ADD BL,07HX2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HMOV DL,' 'MOV AH,06HINT 21HRET

DISP ENDPCODE ENDSEND START

OUTPUT:

ENTER THE LIMIT : 05THE NO IS : 65 41 37 82 04THE SORTED NUMBERS ARE : 04 37 41 65 82

ENTER THE LIMIT : 06THE NO IS : 23 ,06,14,98,67,25THE SORTED NUMBERS ARE : 06,14,23,25,67,98

19.ADDITION OF TWO MATRICES (HEXADECIMAL)

53 | P a g e

Page 54: 8086 lab programs

DATA SEGMENT

M1 DB 'ENTER THE ORDER OF FIRST MATRIX:','$' M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$' M3 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF FIRST MATRIX:',0AH,0DH,'$' M4 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF SECOND MATRIX:',0AH,0DH,'$' M5 DB 0AH,0DH,0AH,' SUM OF TWO MATRICES: ',0AH,0DH, '$' M6 DB 0AH,0DH,0AH,' MATRICES CANNOT BE ADDED: ','$' MAT1 DB 10 DUP(0) MAT2 DB 10 DUP(0) MAT3 DB 30 DUP(0) ROW DB 00H COL DB 00H

DATA ENDS

MESSAGE MACRO MESS LEA DX,MESS MOV AH,09H INT 21H ENDM

BSPCE MACRO ASC MOV DL,ASC MOV AH,06H INT 21H ENDM

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MESSAGE M1 CALL READO MOV BX,DX MOV ROW,DH MOV COL,DL MESSAGE M2 CALL READO CMP BX,DX JZ L1 MESSAGE M6 JMP L7 L1:MESSAGE M3 LEA SI,MAT1 CALL READ1 MESSAGE M4

54 | P a g e

Page 55: 8086 lab programs

LEA SI,MAT2 CALL READ1 MESSAGE M5 BSPCE 0AH LEA DI,MAT1 LEA SI,MAT2 LEA BX,MAT3 MOV CH,ROW L6:MOV CL,COL L2:MOV DH,00H MOV DL,[SI] ADD DL,[DI] JNC L5 INC DH L5:MOV [BX],DH INC BX MOV [BX],DL INC DI INC SI INC BX DEC CL JNZ L2 DEC CH JZ L3 JMP L6 L3: CALL DISP L7: MOV AH,4CH INT 21H

READO PROC NEAR PUBLIC READO MOV AH,01H INT 21H MOV DH,AL SUB DH,30H BSPCE ' ' MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET READO ENDP READ1 PROC NEARPUBLIC READ1

55 | P a g e

Page 56: 8086 lab programs

BSPCE 0AH MOV CH,ROW N2:MOV BH,COL N1:CALL READ MOV [SI],DL INC SI BSPCE ' ' DEC BH JNZ N1 DEC CH JZ N3 BSPCE 0AH BSPCE 0DH JMP N2 N3:RET READ1 ENDP

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL, 0AHJC R2SUB AL,07HAND AL,0FHR2:OR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP LEA BX,MAT3 MOV CH,ROW D4:MOV DH,COL LOP:MOV CL,04H MOV DL,[BX]

56 | P a g e

Page 57: 8086 lab programs

ADD DL,30H MOV AH,06H INT 21H INC BX MOV CL,04H MOV DL,[BX] SHR DL,CL CMP DL,0AH JC D1 ADD DL,07H D1: ADD DL,30H MOV AH,06H INT 21H MOV DL,[BX] AND DL,0FH CMP DL,0AH JC D2 ADD DL,07H D2: ADD DL,30H MOV AH,06H INT 21H INC BX BSPCE ' ' DEC DH JNZ LOP DEC CH JZ D3 BSPCE 0AH BSPCE 0DH JMP D4 D3: RET

DISP ENDP

CODE ENDS END START

OUTPUT 1:

57 | P a g e

Page 58: 8086 lab programs

ENTER THE ORDER OF FIRST MATRIX : 2 2

ENTER THE ORDER OF SECOND MATRIX : 2 2

ENTER THE ELEMENTS OF FIRST MATRIX:11 1111 11

ENTER THE ORDER OF SECOND MATRIX02 0202 02

SUM OF TWO MATRICES:013 013014 014

OUTPUT 2:ENTER THE ORDER OF FIRST MATRIX : 2 3

ENTER THE ORDER OF SECOND MATRIX : 2 2

MATRICES CANNOT BE ADDED

20.ADDITION OF TWO MATRICES (BCD)

58 | P a g e

Page 59: 8086 lab programs

DATA SEGMENT

M1 DB 'ENTER THE ORDER OF FIRST MATRIX:','$'M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$'M3 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF FIRST MATRIX:',0AH,0DH,'$'M4 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF SECOND MATRIX:',0AH,0DH,'$'M5 DB 0AH,0DH,0AH,' SUM OF TWO MATRICES: ',0AH,0DH, '$'M6 DB 0AH,0DH,0AH,' MATRICES CANNOT BE ADDED: ','$'MAT1 DB 10 DUP(0)MAT2 DB 10 DUP(0)MAT3 DB 30 DUP(0)ROW DB 00HCOL DB 00H

DATA ENDS

MESSAGE MACRO MESS LEA DX,MESS MOV AH,09H INT 21H ENDM

BSPCE MACRO ASC MOV DL,ASC MOV AH,06H INT 21H ENDM

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MESSAGE M1 CALL READO MOV BX,DX MOV ROW,DH MOV COL,DL MESSAGE M2 CALL READO CMP BX,DX JZ L1 MESSAGE M6 JMP L7 L1:MESSAGE M3 LEA SI,MAT1 CALL READ1 MESSAGE M4 LEA SI,MAT2

59 | P a g e

Page 60: 8086 lab programs

CALL READ1 MESSAGE M5 BSPCE 0AH LEA DI,MAT1 LEA SI,MAT2 LEA BX,MAT3 MOV CH,ROW L6:MOV CL,COL L2:MOV DH,00H MOV AL,[SI] ADD AL,[DI]

DAA JNC L5 INC DH L5:MOV [BX],DH INC BX MOV [BX],AL INC DI INC SI INC BX DEC CL JNZ L2 DEC CH JZ L3 JMP l6 L3: CALL DISP L7: MOV AH,4CH INT 21H

READO PROC NEAR PUBLIC READO MOV AH,01H INT 21H MOV DH,AL SUB DH,30H BSPCE ' ' MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET READO ENDP

READ1 PROC NEAR BSPCE 0AH

60 | P a g e

Page 61: 8086 lab programs

MOV CH,ROW N2:MOV BH,COL N1:CALL READ MOV [SI],DL INC SI BSPCE ' ' DEC BH JNZ N1 DEC CH JZ N3 BSPCE 0AH BSPCE 0DH JMP N2 N3:RET READ1 ENDP

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HSHL DL,CLMOV AH,01HINT 21HAND AL,0FHOR DL,ALRET READ ENDP

DISP PROC NEAR PUBLIC DISP LEA BX,MAT3 MOV CH,ROW D4:MOV DH,COL LOP:MOV CL,04H MOV DL,[BX] ADD DL,30H MOV AH,06HINT 21HINC BXMOV CL,04HMOV DL,[BX]SHR DL,CL

61 | P a g e

Page 62: 8086 lab programs

ADD DL,30HMOV AH,06HINT 21HMOV DL,[BX]AND DL,0FHADD DL,30HMOV AH,06HINT 21HINC BXBSPCE ' 'DEC DHJNZ LOPDEC CHJZ D3BSPCE 0AHBSPCE 0DHJMP D4D3: RET DISP ENDP

CODE ENDS

END START

ENTER THE ORDER OF FIRST MATRIX : 2 2

ENTER THE ORDER OF SECOND MATRIX : 2 2

ENTER THE ELEMENTS OF FIRST MATRIX:12 1315 14

ENTER THE ORDER OF SECOND MATRIX02 0202 02

SUM OF TWO MATRICES:014 016017 016

21. SUBTRACTION OF TWO MATRICES (HEXADECIMAL)

DATA SEGMENT

62 | P a g e

Page 63: 8086 lab programs

M1 DB 'ENTER THE ORDER OF FIRST MATRIX:','$'M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$'M3 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF FIRST MATRIX:',0AH,0DH,'$'M4 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF SECOND MATRIX:',0AH,0DH,'$'M5 DB 0AH,0DH,0AH,' DIFFERENCE OF TWO MATRICES: ',0AH,0DH, '$'M6 DB 0AH,0DH,0AH,' MATRICES CANNOT BE ADDED: ','$'MAT1 DB 10 DUP(0)MAT2 DB 10 DUP(0)MAT3 DB 30 DUP(0)ROW DB 00HCOL DB 00H

DATA ENDS

MESSAGE MACRO MESS LEA DX,MESS MOV AH,09H INT 21H ENDM

BSPCE MACRO ASC MOV DL,ASC MOV AH,06H INT 21H ENDM

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MESSAGE M1 CALL READO MOV BX,DX MOV ROW,DH MOV COL,DL MESSAGE M2 CALL READO CMP BX,DX JZ L1 MESSAGE M6 JMP L7 L1:MESSAGE M3 LEA SI,MAT1 CALL READ1 MESSAGE M4 LEA SI,MAT2 CALL READ1

63 | P a g e

Page 64: 8086 lab programs

MESSAGE M5 BSPCE 0AH LEA DI,MAT1 LEA SI,MAT2 LEA BX,MAT3 MOV CH,ROW L6:MOV CL,COL L2:MOV DH,' ' MOV DL,[DI] SUB DL,[SI] JNC L52 NEG DL MOV DH,'-' L5:MOV [BX],DH INC BX MOV [BX],DL INC DI INC SI INC BX DEC CL JNZ L2 DEC CH JZ L3 JMP L6 L3: CALL DISP L7: MOV AH,4CH INT 21H

READO PROC NEAR PUBLIC READO MOV AH,01H INT 21H MOV DH,AL SUB DH,30H BSPCE ' ' MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET READO ENDP READ1 PROC NEAR BSPCE 0AH MOV CH,ROW N2:MOV BH,COL

64 | P a g e

Page 65: 8086 lab programs

N1:CALL READ MOV [SI],DL INC SI BSPCE ' ' DEC BH JNZ N1 DEC CH JZ N3 BSPCE 0AH BSPCE 0DH JMP N2 N3:RET READ1 ENDP

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HAND DL,0FHR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL, 0AHJC R2SUB AL,07HAND AL,0FHR2:OR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP LEA BX,MAT3 MOV CH,ROW D4:MOV DH,COL LOP:MOV CL,04H MOV DL,[BX] MOV AH,06H INT 21H

65 | P a g e

Page 66: 8086 lab programs

INC BX MOV DL,[BX] SHR DL,CL CMP DL,0AH JC D1 ADD DL,07H D1: ADD DL,30H MOV AH,06H INT 21H MOV DL,[BX] AND DL,0FH CMP DL,0AH JC D2 ADD DL,07H D2: ADD DL,30H MOV AH,06H INT 21H INC BX BSPCE ' ' DEC DH JNZ LOP DEC CH JZ D3 BSPCE 0AH BSPCE 0DH JMP D4 D3: RET DISP ENDP

CODE ENDS

END START

OUTPUT

ENTER THE ORDER OF FIRST MATRIX : 2 2

66 | P a g e

Page 67: 8086 lab programs

ENTER THE ORDER OF SECOND MATRIX : 2 2

ENTER THE ELEMENTS OF FIRST MATRIX:

55 6575 85

ENTER THE ORDER OF SECOND MATRIX02 0202 02

DIFFERENCE OF TWO MATRICES:053 063073 083

OUTPUT

ENTER THE ORDER OF FIRST MATRIX : 2 2

ENTER THE ORDER OF SECOND MATRIX : 2 3

MATRICES CANNOT BE SUBTRACTED

22. SUBTRACTION OF TWO MATRICES (BCD)

67 | P a g e

Page 68: 8086 lab programs

DATA SEGMENT

M1 DB 'ENTER THE ORDER OF FIRST MATRIX:','$'M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$'M3 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF FIRST MATRIX:',0AH,0DH,'$ M4 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF SECOND MATRIX:',0AH,0DH,'$'M5 DB 0AH,0DH,0AH,' DIFFERENCE OF TWO MATRICES: ',0AH,0DH, '$'M6 DB 0AH,0DH,0AH,' MATRICES CANNOT BE ADDED: ','$'MAT1 DB 10 DUP(0)MAT2 DB 10 DUP(0)MAT3 DB 30 DUP(0)ROW DB 00HCOL DB 00H

DATA ENDS

MESSAGE MACRO MESS LEA DX,MESS MOV AH,09H INT 21H ENDM

BSPCE MACRO ASC MOV DL,ASC MOV AH,06H INT 21H ENDM

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AXMESSAGE M1CALL READOMOV BX,DXMOV ROW,DHMOV COL,DLMESSAGE M2CALL READOCMP BX,DXJZ L1MESSAGE M6JMP L7L1:MESSAGE M3LEA SI,MAT1CALL READ1MESSAGE M4LEA SI,MAT2

68 | P a g e

Page 69: 8086 lab programs

CALL READ1MESSAGE M5BSPCE 0AHLEA DI,MAT1LEA SI,MAT2LEA BX,MAT3MOV CH,ROWL6:MOV CL,COLL2:MOV DH,' 'MOV AL,[DI]SUB AL,[SI]DASJNC L5MOV DL,99HSUB DL,ALMOV AL,DLADD AL,01HDAAMOV DH,'-'L5:MOV [BX],DHINC BXMOV [BX],ALINC DIINC SIINC BXDEC CLJNZ L2DEC CHJZ L3JMP L6L3: CALL DISPL7: MOV AH,4CHINT 21H

READO PROC NEAR PUBLIC READO MOV AH,01H INT 21H MOV DH,AL SUB DH,30H BSPCE ' ' MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET

69 | P a g e

Page 70: 8086 lab programs

READO ENDP

READ1 PROC NEAR BSPCE 0AH MOV CH,ROW N2:MOV BH,COL N1:CALL READ MOV [SI],DL INC SI BSPCE ' ' DEC BH JNZ N1 DEC CH JZ N3 BSPCE 0AH BSPCE 0DH JMP N2 N3:RET READ1 ENDP

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HSHL DL,CLMOV AH,01HINT 21HAND AL,0FHOR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP LEA BX,MAT3 MOV CH,ROW D4:MOV DH,COL LOP:MOV CL,04H MOV DL,[BX] MOV AH,06H INT 21H INC BX

70 | P a g e

Page 71: 8086 lab programs

MOV DL,[BX] SHR DL,CL D1: ADD DL,30H MOV AH,06H INT 21H MOV DL,[BX] AND DL,0FH D2: ADD DL,30H MOV AH,06H INT 21H INC BX BSPCE ' ' DEC DH JNZ LOP DEC CH JZ D3 BSPCE 0AH BSPCE 0DH JMP D4 D3: RET DISP ENDP CODE ENDS END START

OUTPUT

ENTER THE ORDER OF FIRST MATRIX : 2 2

ENTER THE ORDER OF SECOND MATRIX : 2 2

ENTER THE ELEMENTS OF FIRST MATRIX:

10 1010 10

ENTER THE ORDER OF SECOND MATRIX02 0202 02

DIFFERENCE OF TWO MATRICES:08 0808 08

23.TRANSPOSE OF THE MATRIX

71 | P a g e

Page 72: 8086 lab programs

DATA SEGMENT M1 DB 'ENTER THE ORDER OF THE MATRIX:','$' M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$' M3 DB 0AH,0DH,0AH,'TRANSPOSE MATRIX:',0AH,0DH,'$' MAT1 DB 10 DUP(0) MAT2 DB 10 DUP(0) ROW DB 00H COL DB 00H DATA ENDS

MESSAGE MACRO MESS LEA DX,MESS MOV AH,09H INT 21H ENDM

BSPCE MACRO ASC MOV DL,ASC MOV AH,06H INT 21H ENDM

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AXMESSAGE M1CALL READOMOV BX,DXMOV ROW,DHMOV COL,DLMESSAGE M2LEA SI,MAT1CALL READ1LEA DI,MAT1LEA SI,MAT2MOV DH,00HMOV DL,COLMOV AH,COLL3:MOV AL,ROWMOV BX,DIL1:MOV CL,[BX]MOV [SI],CLADD BX,DXINC SIDEC AL

72 | P a g e

Page 73: 8086 lab programs

JNZ L1INC DIDEC AHJNZ L3LEA SI,MAT2CALL DISPMOV AH,4CHINT 21H

READO PROC NEAR PUBLIC READO MOV AH,01H INT 21H MOV DH,AL SUB DH,30H BSPCE ' ' MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET READO ENDP

READ1 PROC NEAR BSPCE 0AH MOV CH,ROW N2:MOV BH,COL N1:CALL READ MOV [SI],DL INC SI BSPCE ' ' DEC BH JNZ N1 DEC CH JZ N3 BSPCE 0AH BSPCE 0DH JMP N2 N3:RET READ1 ENDP

READ PROC NEAR PUBLIC READ

73 | P a g e

Page 74: 8086 lab programs

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HAND DL,0FHR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL, 0AHJC R2SUB AL,07HAND AL,0FHR2:OR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP

MESSAGE M3BSPCE 0AHMOV DH,COLD4:MOV BH,ROWLOP:MOV CL,04HMOV DL,[SI]SHR DL,CLCMP DL,0AHJC D1ADD DL,07HD1: ADD DL,30HMOV AH,06HINT 21HMOV DL,[SI]AND DL,0FHCMP DL,0AHJC D2ADD DL,07HD2: ADD DL,30HMOV AH,06HINT 21H

74 | P a g e

Page 75: 8086 lab programs

INC SIBSPCE ' 'DEC BHJNZ LOPDEC DHJZ D3BSPCE 0AHBSPCE 0DHJMP D4

D3: RET DISP ENDP CODE ENDS END START

OUTPUT :

ENTER THE ORDER OF THE MATRIX : 2 3

ENTER THE ELEMENTS OF THE MATRIX:11 55 9922 74 51

TRANSPOSE MATRIX :11 2255 7499 51

24.GENERATION OF PRIME NUMBERS(HEXADECIMAL)

DATA SEGMENT

75 | P a g e

Page 76: 8086 lab programs

MESS1 DB 0AH,0DH,'ENTER LIMIT :''$' MESS2 DB 0AH,0DH,'PRIME NUMBERS UPTO LIMIT :''$' MESS3 DB 0AH,0DH,'NO OF ELEMENTS IN PRIME SERIES= ''$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV CH,DLLEA DX,MESS2MOV AH,09HINT 21HXOR SI,SIMOV DH,00HL1: INC DHJZ L3CMP DH,CHJA L3CALL SQRTMOV BH,01HL2:MOV AL,DHMOV AH,00HINC BHCMP BH,DLJA L4DIV BHCMP AH,00HJNZ L2JMP L1L4:MOV BL,DHCALL DISPMOV DL,','MOV AH,06HINT 21HINC SIJMP L1L3:LEA DX,MESS3MOV AH,09HINT 21HMOV BX,SICALL DISP

76 | P a g e

Page 77: 8086 lab programs

MOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HAND AL,0FHR2: OR DL,ALRET

READ ENDP DISP PROC NEAR PUBLIC DISP

MOV CL,04HMOV DL,BLSHR DL,CLCMP DL,0AHJC N1ADD DL,07HN1: ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC N2ADD BL,07HN2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HRET

DISP ENDP

77 | P a g e

Page 78: 8086 lab programs

SQRT PROC NEAR PUBLIC DISP MOV DL,00H T1:INC DL MOV AL,DH MOV AH,00H DIV DL CMP DL,AL JC T1 JZ T2 DEC DL T2:RET SQRT ENDP

CODE ENDS END START

OUTPUT:

ENTER LIMIT : 0FPRIME NUMBERS UPTO LIMIT : 01,02,03,05,07,0B,0DNO. OF ELEMENTS IN PRIME SERIES : 07

25.GENERATION OF PRIME NUMBERS (BCD)

DATA SEGMENT

78 | P a g e

Page 79: 8086 lab programs

MESS1 DB 0AH,0DH,'ENTER LIMIT :''$' MESS2 DB 0AH,0DH,'PRIME NUMBERS UPTO LIMIT :''$' MESS3 DB 0AH,0DH,'NO OF ELEMENTS IN PRIME SERIES= ''$' NUM DB 00H DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV CH,DLLEA DX,MESS2MOV AH,09HINT 21HMOV DH,00HMOV SI,0000HL1:MOV AL,DHADD AL,01HDAAJC L3MOV DH,ALCMP DH,CHJA L3CALL SQRTMOV BH,01HL2:MOV AL,BHADD AL,01HDAAMOV BH,ALCMP BH,DLJA L4MOV AH,00HMOV NUM,DHL5:MOV AL,NUMSUB AL,BHDASMOV NUM,ALMOV AL,AH

ADD AL,01HDAAMOV AH,ALCMP NUM,BH

79 | P a g e

Page 80: 8086 lab programs

JAE L5CMP NUM,00HJZ L1JMP L2L4: MOV BL,DHCALL DISPMOV DL,'.'MOV AH,06HINT 21HMOV AX,SIADD AL,01HDAAMOV SI,AXJMP L1L3:LEA DX,MESS3MOV AH,09HINT 21HMOV BX,SICALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV DL,ALMOV CL,04HSUB DL,30HSHL DL,CLMOV AH,01HINT 21HSUB AL,30HOR DL,ALRET

READ ENDP DISP PROC NEAR PUBLIC DISP

MOV CL,04H MOV DL,BL SHR DL,CL ADD DL,30H MOV AH,06H INT 21H

80 | P a g e

Page 81: 8086 lab programs

AND BL,0FH ADD BL,30H MOV DL,BL MOV AH,06H INT 21H RET DISP ENDP

SQRT PROC NEAR PUBLIC DISP MOV DL,00H T1:INC DL MOV BL,00H MOV CL,DH T2:MOV AL,CL SUB AL,DL DAS MOV CL,AL INC BL CMP CL,DL JAE T2 CMP DL,BL JC T1 JE T3 DEC DL T3:RET

SQRT ENDP

CODE ENDS END START

OUTPUT:

ENTER LIMIT : 09PRIME NUMBERS UPTO LIMIT : 01,02,03,05,07NO. OF ELEMENTS IN PRIME SERIES : 05

26.GENERATION OF PERFECT DIVIDING NUMBERS(HEXADECIMAL)

DATA SEGMENT MESS1 DB 'ENTER THE LIMIT :','$'

81 | P a g e

Page 82: 8086 lab programs

MESS2 DB 0AH,0DH,'PERFECT DIVISORS:','$' MESS3 DB 0AH,0DH,'NUMBER OF PERFECT DIVISORS UPTO THE LIMIT=','$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV CH,DL LEA DX,MESS2 MOV AH,09H INT 21H XOR SI,SI MOV DH,01H L1: INC DH JZ L3 CMP DH,CH JA L3 CALL SQRT MOV BL,01H MOV BH,01H L2: INC BH CMP BH,DL JA L4 MOV AH,00H MOV AL,DH DIV BH CMP AH,00H JNE L2 ADD AL,BH ADD BL,AL JMP L2 L4: CMP BL,DH JNE L1 CALL DISP MOV DL,' ' MOV AH,06H INT 21H INC SI JMP L1 L3:LEA DX,MESS3

82 | P a g e

Page 83: 8086 lab programs

MOV AH,09H INT 21H MOV BX,SI CALL DISP MOV AH,4CH INT 21H READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2: AND AL,0FH OR DL,AL RET

READ ENDP

DISP PROC NEAR PUBLIC DISP MOV CL,04H MOV DL,BL SHR DL,CL CMP DL,0AH JC N1 ADD DL,07H N1:ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC N2 ADD BL,07H N2:ADD BL,30H

83 | P a g e

Page 84: 8086 lab programs

MOV DL,BL MOV AH,06H INT 21H RET DISP ENDP

SQRT PROC NEAR PUBLIC SQRT MOV DL,00H T1:INC DL MOV AL,DH MOV AH,00H DIV DL CMP DL,AL JC T1 JZ T2 DEC DL T2:RET

SQRT ENDP CODE ENDS END START

OUTPUT:

ENTER LIMIT : FFPERFECT DIVISORS ARE: 06 1CNO. OF ELEMENTS : 02

27.GENERATION OF PERFECT DIVIDING NUMBERS(HEXADECIMAL)

DATA SEGMENT

84 | P a g e

Page 85: 8086 lab programs

MESS1 DB 'ENTER THE LIMIT :','$' MESS2 DB 0AH,0DH,'PERFECT DIVISORS :','$' MESS3 DB 0AH,0DH,'NUMBER OF PERFECT DIVISORS UPTO THE LIMIT=','$' LIM DB 00H DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READLEA DX,MESS2MOV AH,09HINT 21HXOR DI,DICALL PERFECTLEA DX,MESS3MOV AH,09HINT 21HMOV CX,DIMOV BL,CLCALL DISPMOV AH,4CHINT 21H

PERFECT PROC NEARPUBLIC PERFECT

MOV BL,01HP1:CMP BH,BLJA P3RETP3: CALL SQRTMOV DL,01HMOV CH,CLMOV CL,02HP4: CMP CH,CLJC P5MOV AH,BLXOR DH,DHCALL DIVDCMP AH,00HJNZ P7MOV AL,DL

85 | P a g e

Page 86: 8086 lab programs

ADD AL,DHDAAADD AL,CLDAAMOV DL,ALP7: MOV AL,CLADD AL,01HDAAMOV CL,ALJMP P4P5: CMP DL,01HJE P6CMP BL,DLJNE P6CALL DISPMOV AX,DIADD AL,01HDAAMOV DI,AXP6: MOV AL,BLADD AL,01HDAAMOV BL,ALJMP P1

PERFECT ENDP

SQRT PROC NEARPUBLIC SQRT

MOV CL,01HB3: XOR DH,DHMOV AH,BLMOV AL,CLADD AL,01HDAAMOV CL,ALCALL DIVDCMP DH,CLJAE B3MOV AL,CLSUB AL,01HDASMOV CL,ALRET

SQRT ENDP

DIVD PROC NEAR

86 | P a g e

Page 87: 8086 lab programs

PUBLIC DIVDB1: CMP AH,CLJB B2MOV AL,AHSUB AL,CLDASMOV AH,ALMOV AL,DHADD AL,01HDAAMOV DH,ALJMP B1B2:RET

DIVD ENDP

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV BH,ALSUB BH,30HMOV CL,04HSHL BH,CLMOV AH,01HINT 21HSUB AL,30HOR BH,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP

MOV AH,BLMOV DL,AHMOV CL,04HSHR AH,CLADD AH,30HMOV DL,AHMOV AH,06HINT 21HMOV AH,BLAND AH,0FHADD AH,30HMOV DL,AHMOV AH,06HINT 21H

87 | P a g e

Page 88: 8086 lab programs

MOV DL,' 'MOV AH,06HINT 21HRET

DISP ENDP

CODE ENDSEND START

OUTPUT:

ENTER LIMIT : 99PERFECT DIVISORS ARE: 06 28NO. OF ELEMENTS : 02

ENTER LIMIT : 20PERFECT DIVISORS ARE: 06 NO. OF ELEMENTS : 01

27.GENERATION OF FIBONACCI SERIES (HEXADECIMAL)

DATA SEGMENT

MESS1 DB 0AH,0DH,'ENTER THE LIMIT:''$'MESS2 DB 0AH,0DH,'FIBONACCI SERIES UPTO THE LIMIT ','$'

88 | P a g e

Page 89: 8086 lab programs

MESS3 DB 0AH,0DH,'THE NUMBER OF ELEMENTS IN FIBONACCI SERIES IS: ','$'MESS4 DB 'IS: ','$'TEMP DB 01HCOUNT DB 00H

DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV CH,DL LEA DX,MESS2 MOV AH,09H INT 21H CALL READ MOV BL,CH CALL DISP LEA DX,MESS4 MOV AH,09H INT 21H XOR BX,BX AGAIN: INC COUNT CALL DISP ADD TEMP,BH JC NEXT MOV BL,TEMP MOV TEMP,BH MOV BH,BL CMP BL,CH JA NEXT JMP AGAIN NEXT:LEA DX,MESS3 MOV AH,09H INT 21H MOV AL,COUNT ADD AL,00H DAA MOV BL,AL CALL DISP MOV AH,4CH INT 21H

89 | P a g e

Page 90: 8086 lab programs

READ PROC NEAR PUBLIC READ MOV CL,04H MOV AH,01H INT 21H MOV DL,AL MOV CL,04H SUB DL,30H CMP DL,0AH JC R1 SUB DL,07H R1:SHL DL,CL MOV AH,01H INT 21H SUB AL,30H CMP AL,0AH JC R2 SUB AL,07H R2: AND AL,0FH OR DL,AL RET

READ ENDP

DISP PROC NEAR PUBLIC DISP MOV DL,' ' MOV AH,06H INT 21H MOV DL,BL SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1: ADD DL,30H MOV AH,06H INT 21H AND BL,0FH CMP BL,0AH JC L2 ADD BL,07H L2: ADD BL,30H MOV DL,BL MOV AH,06H

90 | P a g e

Page 91: 8086 lab programs

INT 21H RET

DISP ENDP CODE ENDS END START

OUTPUT

ENTER THE LIMIT: AAFIBONACCI SERIES UPTO THE LIMIT AA IS : 00 01 01 02 03 05 08 0D 15 22 37 59 90NUMBERS OF ELEMENTS IN FIBONACCI SERIES : 13

28.GENERATION OF FIBONACCI SERIES (BCD)

DATA SEGMENT

MESS1 DB 0AH,0DH,'ENTER THE LIMIT:''$'

91 | P a g e

Page 92: 8086 lab programs

MESS2 DB 0AH,ODH'FIBONACCI SERIES UPTO THE LIMIT ','$'MESS3 DB 0AH,0DH,'THE NUMBER OF ELEMENTS IN FIBONACCI SERIES IS: ','$'MESS4 DB 'IS: ','$'TEMP DB 01HCOUNT DB 00H

DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV CH,DLLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV BL,CHCALL DISPLEA DX,MESS4MOV AH,09HINT 21HXOR BX,BXAGAIN: INC COUNTCALL DISPADD TEMP,BHJC NEXTMOV BL,TEMPMOV TEMP,BHMOV BH,BLCMP BL,CHJA NEXTJMP AGAINNEXT:LEA DX,MESS3MOV AH,09HINT 21HMOV AL,COUNTADD AL,00HDAAMOV BL,ALCALL DISPMOV AH,4CHINT 21H

92 | P a g e

Page 93: 8086 lab programs

READ PROC NEAR PUBLIC READ

MOV CL,04HMOV AH,01HINT 21HMOV DL,ALMOV CL,04HSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP

MOV DL,' 'MOV AH,06HINT 21HMOV DL,BLSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1: ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC L2ADD BL,07HL2: ADD BL,30HMOV DL,BLMOV AH,06HINT 21H

93 | P a g e

Page 94: 8086 lab programs

RET DISP ENDP CODE ENDS END START

OUTPUT:

ENTER LIMIT : FFPERFECT DIVISORS ARE: 06 1CNO. OF ELEMENTS IN PRIME SERIES : 02

ENTER THE LIMIT: 08THE FIBONACCI SERIES UPTO THE LIMIT 09 IS: 00,01,01,02,03,05,08NUMBERS OF ELEMENTS IN THE FIBONACCI SERIES:07

29.GENERATION OF FIBONACCI SERIES (BCD)

DATA SEGMENT

MESS1 DB 0AH,0DH,'ENTER THE LIMIT:''$'

94 | P a g e

Page 95: 8086 lab programs

MESS2 DB 0AH,0DH,'FIBONACCI SERIES UPTO THE LIMIT ','$'MESS3 DB 0AH,0DH,'THE NUMBER OF ELEMENTS IN FIBONACCI SERIES IS: ','$'MESS4 DB 'IS: ','$'TEMP DB 01HCOUNT DB 00H

DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV CH,DLLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV BL,CHCALL DISPLEA DX,MESS4MOV AH, 09HINT 21HXOR BX,BX

AGAIN: INC COUNTCALL DISPMOV AL,TEMPADD AL,BHDAAJC NEXTMOV BL,ALMOV TEMP,BHMOV BH,BLCMP BL,CHJA NEXTJMP AGAIN

NEXT:LEA DX,MESS3MOV AH,09HINT 21HMOV AL,COUNTADD AL,00HDAAMOV BL,ALCALL DISP

95 | P a g e

Page 96: 8086 lab programs

MOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READMOV CL,04HMOV AH,01HINT 21HSHL AL,CLMOV DL,ALMOV AH,01HINT 21H AND AL,0FHOR DL,ALRET

READ ENDP DISP PROC NEAR PUBLIC DISP

MOV DL,' 'MOV AH,06HINT 21HMOV DL,BLSHR DL,CLADD DL,30HMOV AH,06HINT 21HAND BL,0FHADD BL,30HMOV DL,BLMOV AH,06HINT 21HRET

DISP ENDP CODE ENDS END START

OUTPUT

ENTER THE LIMIT: 99FIBONACCI SERIES UPTO THE LIMIT 99 IS : 00 01 01 02 03 05 08 13 21 34 55 89NUMBER OF ELEMENTS IN THE FIBONACCI SERIES :12

30.FACTORIAL OF A NUMBER USING RECURSION TECHNIQUE

DATA SEGMENT MESS1 DB 'ENTER THE NUMBER(0-8):''$' MESS2 DB 0AH,0DH, ' FACTORIAL OF THE GIVEN NUMBER=''$'

96 | P a g e

Page 97: 8086 lab programs

DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BL,DL MOV AX,0001H MOV BH,00H CALL FACT MOV BX,AX CALL DISP MOV AH,4CH INT 21H

FACT PROC NEAR PUBLIC FACT CMP BX,0001H JBE NEXT MUL BX DEC BX CALL FACT NEXT:RET FACT ENDP

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET READ ENDP

DISP PROC NEARPUBLIC DISP LEA DX,MESS2 MOV AH,09H INT 21H MOV CL,04H MOV CH,02H BACK:MOV DL,BH

97 | P a g e

Page 98: 8086 lab programs

SHR DL,CL CMP DL,0AH JC L1 ADD DL,07H L1:ADD DL,30H MOV AH,06H INT 21H AND BH,0FH CMP BH,0AH JC L2 ADD BH,07H L2:ADD BH,30H MOV DL,BH MOV AH,06H INT 21H DEC CH JZ L3 MOV BH,BL JMP BACK L3:RET

DISP ENDP

CODE ENDS END START

OUTPUT:

ENTER THE NO<0-8> : 7FACTORIAL OF THE GIVEN NUMBER : 13B0

ENTER THE NO<0-8> : 5FACTORIAL OF THE GIVEN NUMBER : 0078

31. CONVERSION FROM BINARY TO GRAY ( HEXADECIMAL )

98 | P a g e

Page 99: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER BINARY CODE :''$' MESS2 DB 0AH,0DH,'EQUIVALENT GRAY CODE :''$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BL,DLSHR DL,01HXOR BL,DLLEA DX,MESS2MOV AH,09HINT 21HCALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALRET

READ ENDP

DISP PROC NEAR

99 | P a g e

Page 100: 8086 lab programs

PUBLIC DISPMOV CL,04HMOV DL,BLSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1:ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC L2ADD BL,07HL2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HRET DISP ENDP

CODE ENDSEND START

OUTPUT:

ENTER BINARY CODE: 10EQUIVALENT GRAY CODE: 18

ENTER BINARY CODE: 80EQUIVALENT GRAY CODE: C0

ENTER BINARY CODE: F0EQUIVALENT GRAY CODE: 88

32.CONVERSION FROM GRAY CODE TO BINARY CODE(HEXADECIMAL)

100 | P a g e

Page 101: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER GRAY CODE :''$' MESS2 DB 0AH,0DH,'EQUIVALENT BINARY CODE :''$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BL,DLMOV CH,07HM1:SHR DL,01HXOR BL,DLDEC CHJNZ M1LEA DX,MESS2MOV AH,09HINT 21HCALL DISPMOV AH,4CHINT 21H

READ PROC NEAR

PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,AL

101 | P a g e

Page 102: 8086 lab programs

RETREAD ENDP

DISP PROC NEAR PUBLIC DISP

MOV CL,04HMOV DL,BLSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1:ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC L2ADD BL,07HL2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HRET

DISP ENDPCODE ENDSEND START

OUTPUT:

ENTER GRAY CODE: ‘21EQUIVALENT BINARY CODE: ‘3E

ENTER GRAY CODE: 80EQUIVALENT BINARY CODE: FF

33.CONVERSION OF ARRAY OF BINARY CODE TO GRAY CODE(HEXADECIMAL)

DATA SEGMENT

102 | P a g e

Page 103: 8086 lab programs

MESS1 DB 0AH,0DH,'ENTER LIMIT :''$' MESS2 DB 0AH,0DH,'BINARY CODE GRAY CODE :''$' NL DB 0AH,0DH,' ','$' BSP DB' ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BH,DLLEA DX,MESS2MOV AH,09HINT 21HM1:LEA DX,NLMOV AH,09HINT 21HCALL READMOV BL,DLSHR DL,01HXOR BL,DLLEA DX,BSPMOV AH,09HINT 21HCALL DISPDEC BHJNZ M1MOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30H

103 | P a g e

Page 104: 8086 lab programs

CMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALRET

READ ENDP DISP PROC NEAR PUBLIC DISP

MOV CL,04HMOV DL,BLSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1:ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC L2ADD BL,07HL2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HRET

DISP ENDP

CODE ENDSEND START

OUTPUT:ENTER LIMIT : 05BINARY CODE GRAY CODE 3E 21 21 31 16 1D 10 18 02 03

34. CONVERSION OF ARRAY OF GRAYCODE TO BINARY CODE(HEXADECIMAL)

DATA SEGMENT

104 | P a g e

Page 105: 8086 lab programs

MESS1 DB 0AH,0DH,'ENTER LIMIT :''$' MESS2 DB 0AH,0DH,'GRAY CODE BINARY CODE :''$' NL DB 0AH,0DH,' ','$' BSP DB' ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BH,DLLEA DX,MESS2MOV AH,09HINT 21HM2:LEA DX,NLMOV AH,09HINT 21HCALL READMOV BL,DLMOV CH,07HM1: SHR DL,01HXOR BL,DLDEC CHJNZ M1LEA DX,BSPMOV AH,09HINT 21HCALL DISPDEC BHJNZ M2MOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CL

105 | P a g e

Page 106: 8086 lab programs

MOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALRET

READ ENDP DISP PROC NEAR PUBLIC DISP

MOV CL,04HMOV DL,BLSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1:ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC L2ADD BL,07HL2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21H

RET DISP ENDP

CODE ENDSEND START

OUTPUT:ENTER LIMIT : 05GRAY BINARY 03 02 14 18 21 3E C2 83 A5 C6

35.GCD OF TWO 8-BIT HEXADECIMAL NUMBERS.

106 | P a g e

Page 107: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER :''$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER :''$' MESS3 DB 0AH,0DH,'GCD OF TWO NUMBER IS :''$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BH,DLLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV BL,DLT1:MOV AL,BHMOV AH,00HDIV BLMOV BH,BLMOV BL,AHCMP AH,00HJNE T1CALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2

107 | P a g e

Page 108: 8086 lab programs

SUB AL,07HR2: AND AL,0FHOR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3MOV AH,09HINT 21HMOV CL,04HMOV DL,BHSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1: ADD DL,30HMOV AH,06HINT 21HAND BH,0FHCMP BH,0AHJC L2ADD BH,07HL2:ADD BH,30HMOV DL,BHMOV AH,06HINT 21HRET

DISP ENDP CODE ENDS END START

OUTPUT:

ENTER FIRST NUMBER : 0AENTER SECOND NUMBER : 05GCD OF TWO NUMBER IS : 05

ENTER FIRST NUMBER : 0CENTER SECOND NUMBER : 06GCD OF TWO NUMBER IS : 06

36.GCD OF TWO 8-BIT NUMBERS(BCD).

108 | P a g e

Page 109: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER FIRST NUMBER :''$' MESS2 DB 0AH,0DH,'ENTER SECOND NUMBER :''$' MESS3 DB 0AH,0DH,'GCD OF TWO NUMBER IS :''$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BH,DLLEA DX,MESS2MOV AH,09HINT 21HCALL READMOV BL,DLN1:CMP BH,BLJZ N3JNB N2MOV AL,BLSUB AL,BHDASMOV BL,ALJMP N1N2:MOV AL,BHSUB AL,BLDASMOV BH,ALJMP N1N3:CALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1

109 | P a g e

Page 110: 8086 lab programs

SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3MOV AH,09HINT 21HMOV CL,04HMOV DL,BHSHR DL,CLADD DL,30HMOV AH,06HINT 21HAND BH,0FHADD BH,30HMOV DL,BHMOV AH,06HINT 21HRET

DISP ENDP CODE ENDS END START

OUTPUT:

ENTER FIRST NUMBER : ‘08ENTER SECOND NUMBER : ‘12GCD OF TWO NUMBER IS : ‘04

ENTER FIRST NUMBER : ‘09ENTER SECOND NUMBER : ‘06GCD OF TWO NUMBER IS : ‘03

37.REVERSE OF A BYTE

110 | P a g e

Page 111: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE NUMBER :','$' MESS2 DB 0AH,0DH,'REVERSE OF A GIVEN BYTE :','$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX

LEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BL,00HMOV CH,08HN1: SHL DL,01HRCR BL,01HDEC CHJNZ N1CALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV CL,04HMOV DL,' 'MOV AH,06HINT 21HMOV AH,01HINT 21HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,AL

111 | P a g e

Page 112: 8086 lab programs

RETREAD ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS2MOV AH,09HINT 21HMOV CL,04HMOV DL,BLSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1: ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AHJC L2ADD BL,07HL2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HRET DISP ENDP

CODE ENDS

END START

OUTPUT:

ENTER THE NUMBER : 12REVERSE OF GIVEN BYTE: 48

ENTER THE NUMBER:F8REVERSE OF GIVEN BYTE:1F

38.REVERSAL OF WORD

112 | P a g e

Page 113: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER THE NUMBER :','$' MESS2 DB 0AH,0DH,'REVERSE OF A GIVEN NUMBER :','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV BX,DXMOV BX,0000HMOV CH,10HN1: SHL DX,01HRCR BX,01HDEC CHJNZ N1CALL DISPMOV AH,4CHINT 21H

READ PROC NEAR PUBLIC READ

MOV CH,02HR3:MOV AH,01HINT 21HMOV CL,04HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HR2: AND AL,0FHOR DL,ALDEC CHJZ R4MOV DH,DL

113 | P a g e

Page 114: 8086 lab programs

JMP R3R4: RET

READ ENDP DISP PROC NEAR PUBLIC DISP

LEA DX,MESS2MOV AH,09HINT 21HMOV CH,02HL3:MOV CL,04HMOV DL,BHSHR DL,CLCMP DL,0AHJC L1ADD DL,07HL1: ADD DL,30HMOV AH,06HINT 21HAND BH,0FHCMP BH,0AHJC L2ADD BH,07HL2:ADD BH,30HMOV DL,BH

MOV AH,06HINT 21HDEC CHJZ L4MOV BH,BLJMP L3L4:RET

DISP ENDPCODE ENDS

END START

OUTPUT:ENTER THE NUMBER: F4C9REVERSE OF THE GIVEN WORD:932F

ENTER THE NUMBER: B27AREVERSE OF THE GIVEN WORD:5E4D

39.REVERSAL OF AN ARRAY

114 | P a g e

Page 115: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'ENTER LIMIT :''$' MESS2 DB 0AH,0DH,'ENTER THE ARRAY ELEMENTS :''$' MESS3 DB 0AH,0DH,'REVERSE OF THE STRING :''$' NUM DB 10 DUP (0) RNUM DB 10 DUP (0) DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AXLEA DX,MESS1MOV AH,09HINT 21HCALL READMOV CH,DLLEA DX,MESS2MOV AH,09HINT 21HMOV DH,CHLEA BX,NUML1:CALL READMOV [BX],DLINC BXDEC DHJNZ L1LEA SI,RNUMLEA BX,NUMMOV DL,CHMOV DH,00HADD BX,DXMOV DH,CHL2:DEC BXMOV DL,[BX]MOV [SI],DLDEC DHJZ NEXTINC SIJMP L2NEXT:CALL DISPMOV AH,4CHINT 21H

READ PROC NEAR

115 | P a g e

Page 116: 8086 lab programs

PUBLIC READMOV CL,04HMOV DL,','MOV AH,06HINT 21HMOV AH,01HINT 21HMOV DL,ALSUB DL,30HCMP DL,0AHJC R1SUB DL,07HR1:SHL DL,CLMOV AH,01HINT 21HSUB AL,30HCMP AL,0AHJC R2SUB AL,07HAND AL,0FHR2: OR DL,ALRET

READ ENDP

DISP PROC NEAR PUBLIC DISP

LEA DX,MESS3MOV AH,09HINT 21HLEA SI,RNUMMOV CL,04HM3:MOV DL,','MOV AH,06HINT 21HMOV bL,[SI]MOV DL,BLSHR DL,CLCMP DL,0AHJC M1ADD DL,07HM1:ADD DL,30HMOV AH,06HINT 21HAND BL,0FHCMP BL,0AH

116 | P a g e

Page 117: 8086 lab programs

JC M2ADD BL,07HM2:ADD BL,30HMOV DL,BLMOV AH,06HINT 21HDEC CHJZ M4INC SIJMP M3M4: RET

DISP ENDPCODE ENDSEND START

OUTPUTENTER THE LIMIT OF AN ARRAY:05ENTER THE ARRAY ELEMENTS:12,4C,DB,D5REVERSE OF THE GIVEN ARRAY:D5,DB,4C,12

40.TO DISPLAY CURRENT TIME.

117 | P a g e

Page 118: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'TIME IS:'0AH,0DH,'$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H L1:MOV AH,2CH INT 21H MOV AL,CH CALL CONV CALL DISP MOV DL,':' MOV AH,06H INT 21H MOV AL,CL CALL CONV CALL DISP MOV DL,':' MOV AH,06H INT 21H MOV DL,0DH MOV AH,06H INT 21H JMP L1 MOV AH,4CH INT 21H

DISP PROC NEAR PUBLIC DISP

MOV BL,AH MOV DL,AL ADD DL,30H MOV AH,06H INT 21H MOV DL,BL ADD DL,30H MOV AH,06H INT 21H

118 | P a g e

Page 119: 8086 lab programs

RET

DISP ENDP

CONV PROC NEAR PUBLIC CONV

MOV AH,00H MOV BH,0AH DIV BH RET

CONV ENDP CODE ENDS END START

OUTPUT:

THE CURRENT TIME IS: 23:37:23.85

41.TO DISPLAY CURRENT DATE.

119 | P a g e

Page 120: 8086 lab programs

DATA SEGMENT MESS1 DB 0AH,0DH,'THE CURRENT DATE IS:'$'DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H MOV AH,2AH INT 21H MOV SI,CX MOV BL,DH MOV BH,DL CALL DISP MOV DL,'-' MOV AH,06H INT 21H MOV BL,BH CALL DISP MOV DL,'-' MOV AH,06H INT 21H XOR DX,DX MOV AX,SI MOV CX,0064H DIV CX MOV DH,DL MOV BL,AL CALL DISP MOV BL,DH MOV AH,4CH INT 21H

CONV PROC NEAR PUBLIC CONV

MOV CL,04H XOR AH,AH MOV AL,BL MOV BL,0AH

120 | P a g e

Page 121: 8086 lab programs

DIV BL SHL AL,CL ADD AL,AH DAA MOV BL,AL RET

CONV ENDP

DISP PROC NEAR PUBLIC DISP

MOV CL,04H CALL CONV MOV DL,BL SHR DL,CL ADD DL,30H MOV AH,06H INT 21H AND BL,0FH ADD BL,30H MOV DL,BL MOV AH,06H INT 21H RET

DISP ENDP CODE ENDS END START

OUTPUT:

THE CURRENT DATE IS: MON 07/11/2011

121 | P a g e

Page 122: 8086 lab programs

INTERFACING PROGRAMS

1.SEVEN SEGMENT DISPLAY

122 | P a g e

Page 123: 8086 lab programs

CONFIGURATION PORT A OUTPUTPORT B OUTPUTPORT C LOW OUTPUTPORT C UP OUTPUTADDRESSES

PORTA EQU 0D800HPORTB EQU 0D801HPORTC EQU 0D802H

CONTROL WORD For 8255, Port A and B are used as output ports. The control word format of 8255 according to hardware connections is:

123 | P a g e

Page 124: 8086 lab programs

1.SEVEN SEGMENT DISPLAY

124 | P a g e

Page 125: 8086 lab programs

DATA SEGMENT MESS1 DB 'ENTER A 4-DIGIT NUMBER: ','$' SEVSEG DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH NUMAR DB 5 DUP(0) DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H MOV DX,0D883H MOV AL,80H OUT DX,AL LEA SI,NUMAR CALL READ L2:LEA SI,NUMAR MOV CH,03H L1:MOV DX,0D882H MOV AL,CH OUT DX,AL MOV AL,[SI] MOV DX,0D880H OUT DX,AL CALL DELAY INC SI SUB CH,01H JNC L1 JMP L2 MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ LEA BX,SEVSEG MOV CL,04H R2:MOV AH,01H INT 21H SUB AL,30H XLAT MOV [SI],AL INC SI DEC CL JNZ R2

125 | P a g e

Page 126: 8086 lab programs

RET READ ENDP

DELAY PROC NEAR PUBLIC DELAY MOV DI,00FFH D2:MOV BP,0FFFH D1:DEC BP JNZ D1 DEC DI JNZ D2 RET DELAY ENDP

CODE ENDS END START

2.GENERATE VARIABLE SQUARE WAVE GENERATOR USING 8253

126 | P a g e

Page 127: 8086 lab programs

CONFIGURATION BINARY COUNTER, MODE 3, R/W LSB FIRST THEN MSB COUNTER 0

ADDRESSESCOUNTER 0---À 0D888COUNTER 1---À 0D889COUNTER 2---À 0D88ACONTROL REGISTER ---À 0D88BCONTROL WORD IS 36H

D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 RW1 RW0 M2 M1 M0 BCD

0 0 1 1 0 1 1 0

3 6

PROGRAM

127 | P a g e

Page 128: 8086 lab programs

DATA SEGMENTMESS DB 'ENTER THE FREQUENCY IN KHZ (01-65KHZ):','$'DATA ENDS

CODE SEGMENTASSUME CS: CODE, DS: DATA

START: MOV AX, DATA MOV DS, AX LEA DX, MESS MOV AH, 09H INT 21H CALL READ XOR AH, AH MOV BX, 03E8H MUL BX MOV BX, AX MOV DX, 001FH MOV AX, 3E0CH DIV BX MOV BX, AX MOV AL, 36H MOV DX, 0D88BH OUT DX, AL MOV DX, 0D888H MOV AL, BL OUT DX, AL MOV AL, BH OUT DX, AL MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV AH, 01H INT 21H MOV DH, AL SUB DH, 30H MOV AH, 01H INT 21H MOV DL, AL SUB DL, 30H MOV AL, DH MOV DH, 0AH MUL DH ADD AL, DL

128 | P a g e

Page 129: 8086 lab programs

RET READ ENDP

CODE ENDS END START

129 | P a g e

Page 130: 8086 lab programs

3.GENERATE SQUARE WAVE,SINE ,SAW,TRIANGULAR,STAIRCASE WAVEFORM USING

DAC INTERFACE

CONFIGURATION: PORT A ----> OUTPUT, ADDRESS IS 0D880PORT B ----> OUTPUT ADDRESS IS 0D881PORT C LOW ---> OUTPUT ADDRESS IS D882PORT C HIGH--> OUPTUT ADDRESS IS 0D882 CONTROL PORT ADDRESS IS 0D883S

CONTROL WORD IS 80

D7 D6 D5 D4 D3 D2 D1 D0

BSR orI/O

MODE

MODE FOR

PORTA

PORT A

PORT C (UPPER)

MODE FOR

PORTA

MODE FOR

PORTB

PORT B PORT C (LOWER)

1 0 0 0 0 0 0 0

8 0

130 | P a g e

Page 131: 8086 lab programs

PROGRAM :

DATA SEGMENT MESS1 DB 0AH,0DH,' *****************************',0AH,0DH DB ' 1) SQUARE WAVE',0AH,0DH DB ' 2) TRIANGULAR WAVE', 0AH,0DH DB ' 3) STAIRCASE WAVE',0AH,0DH DB ' 4) SAWTOOTH WAVE',0AH,0DH DB ' 5) SINE WAVE',0AH,0DH DB ' ******************************************' DB 0AH,0DH, ' ENTER THE CHOICE :','$' MESS2 DB 0AH,0DH,'INVALID CHOICE','$'

SINTT DB 00H,00H,00H,00H,01H,02H,03H,04H,05H,06H,08H,09H,0BH,0DH,0FHDB 11H,13H,16H,18H,1BH,1EH,21H,24H,27H,2AH,2EH,31H,34H,38H,3CHDB 40H,44H,47H,4BH,50H,54H,58H,5CH,61H,65H,69H,6EH,72H,77H,7BHDB 7FH,81H,88H,8DH,91H,96H,9AH,9EH,0A3H,0A7H,0ABH,0AFH,0B3H,0B7HDB 0BBH,0BFH,0C3H,0C7H,0CAH,0CEH,0D1H,0D4H,0D8H,0DBH,0DEH,0E1HDB 0E4H,0E7H,0E9H,0EBH,0EEH,0F2H,0F4H,0F6H,0F7H,0F9H,0FAHDB 0FBH,0FCH,0FDH,0FEH,0FFH,0FFH,0FFH

DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,80H MOV DX,0D883H OUT DX,AL LEA DX,MESS1 MOV AH,09H INT 21H CALL READ CMP DL,01H JNE L1 CALL SQWAVE JMP L6 L1: CMP DL,02H JNE L2 CALL TRWAVE JMP L6

131 | P a g e

Page 132: 8086 lab programs

L2:CMP DL,3H; SHOULD BE CMP DL,03 NOT CALL DL,30H JNE L3 CALL STCASE JMP L6 L3:CMP DL,04H JNE L4 CALL SAWT JMP L6 L4:CMP DL,05H JNE L5 CALL SINWAVE JMP L6 L5:LEA DX,MESS2 MOV AH,09H INT 21H L6: MOV AH,4CH INT 21H

READ PROC NEAR PUBLIC READ MOV AH,01H INT 21H MOV DL,AL SUB DL,30H RET READ ENDP

SQWAVE PROC NEAR PUBLIC SQWAVE LOOP1: MOV AL,00H MOV DX,0D880H OUT DX,AL CALL DELAYS MOV AL,0FFH MOV DX,0D880H OUT DX,AL CALL DELAYS JMP LOOP1 RET SQWAVE ENDP

TRWAVE PROC NEAR PUBLIC TRWAVE

T3: MOV CL,00H MOV BL,0FFH

132 | P a g e

Page 133: 8086 lab programs

T1:MOV AL,CL MOV DX,0D880H OUT DX,AL INC CL CMP CL,BL JC T1 T2:MOV AL,CL MOV DX,0D880H OUT DX,AL DEC CL JNZ T2 JMP T3 RET TRWAVE ENDP

STCASE PROC NEAR PUBLIC STCASE MOV AL,00H S2: MOV DX,0D880H OUT DX,AL CALL DELAYS ADD AL,40H JMP S2 RET STCASE ENDP

SAWT PROC NEAR PUBLIC SAWT

N2: MOV AL,00H MOV BL,02H N1:;MOV AL,CL MOV DX,0D880H OUT DX,AL CALL DELAY INC AL CMP CL,BL JNC N1 JMP N1 RET SAWT ENDP

SINWAVE PROC NEAR PUBLIC SINWAVE P3:LEA SI,SINTT P1:MOV AL,[SI]

133 | P a g e

Page 134: 8086 lab programs

MOV DX,0D880H OUT DX,AL INC SI CMP AL,0FFH JNZ P1 P2:MOV AL,[SI] MOV DX,0D880H OUT DX,AL DEC SI CMP AL,00H JNZ P2 JMP P3 RET SINWAVE ENDP DELAYS PROC NEAR PUBLIC DELAYS MOV DI,0004H G2:MOV BP,0FFFFH G1:DEC BP JNZ G1 DEC DI JNZ G2 RET DELAYS ENDP

DELAY PROC NEAR PUBLIC DELAY MOV BP,0FFFFH D1:DEC BP JNZ D1 RET DELAY ENDP

CODE ENDSEND STARTEND

134 | P a g e

Page 135: 8086 lab programs

4.TO TEST ALL THE GATES OF A GIVEN IC 74XX IS GOOD OR BAD

CONFIGURATION: PORT A ----> OUTPUT, ADDRESS IS 0D880PORT B ----> OUTPUT ADDRESS IS 0D881PORT C LOW ---> OUTPUT ADDRESS IS D882PORT C HIGH--> OUPTUT ADDRESS IS 0D882 CONTROL PORT ADDRESS IS 0D883

CONTROL WORD IS 80

D7 D6 D5 D4 D3 D2 D1 D0

BSR orI/O

MODE

MODE FOR

PORTA

PORT A

PORT C (UPPER)

MODE FOR

PORTA

MODE FOR

PORTB

PORT B PORT C (LOWER)

1 0 0 0 0 0 1 0

8 2

135 | P a g e

Page 136: 8086 lab programs

DATA SEGMENT NANDTT DB 0FH,0FH,0FH,00H ANDTT DB 00H,00H,00H,0FH ORTT DB 00H,0FH,0FH,0FH XORTT DB 00H,0FH,0FH,00H MESS1 DB 0AH,0DH,'ENTER THE IC NUMBER (7400/7408/7432/7486):','$' MESS2 DB 0AH,0DH,'IC IS GOOD.','$' MESS3 DB 0AH,0DH,'IC IS BAD.','$' MESS4 DB 0AH,0DH,'IC IS NOT MATCHING.','$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H CALL READ MOV BX,DX CMP BX,7400H JNE G1 LEA BX,NANDTT CALL TEST1 JMP AHEAD G1: CMP BX,7408H JNE G2

136 | P a g e

Page 137: 8086 lab programs

LEA BX,ANDTT CALL TEST1 JMP AHEAD G2:CMP BX,7432H JNE G3 LEA BX,ORTT CALL TEST1 JMP AHEAD G3: CMP BX,7486H JNE G4 LEA BX,XORTT CALL TEST1 JMP AHEAD G4: LEA DX,MESS4 MOV AH,09H INT 21H AHEAD: MOV AH,4CH INT 21H

TEST1 PROC NEAR PUBLIC TEST1 MOV DX,0D883H MOV AL,82H OUT DX,AL MOV CL,04H MOV CH,00H T1:MOV AL,CH MOV DX,0D880H OUT DX,AL PUSH CX MOV CX,0002HBACKRP: CALL DELAY DEC CX JNZ BACKRP POP CX MOV DX,0D881H IN AL,DX AND AL,0FH CMP AL,[BX] JNE T2 ADD CH,55H INC BX DEC CL JNZ T1 LEA DX,MESS2 MOV AH,09H

137 | P a g e

Page 138: 8086 lab programs

INT 21H JMP T3 T2: LEA DX,MESS3 MOV AH,09H INT 21H T3:RET

TEST1 ENDP

READ PROC NEAR PUBLIC READ MOV CH,02H AGAIN : MOV CL,04H MOV AH,01H INT 21H SHL AL,CL MOV DL,AL MOV AH,01H INT 21H AND AL,0FH OR DL,AL DEC CH JZ NXT MOV DH,DL JMP AGAIN NXT:RET READ ENDP DELAY PROC NEAR PUBLIC DELAY MOV BP,0FFFFH D1: DEC BP JNZ D1 RET

DELAY ENDP CODE ENDS END START

138 | P a g e