ANURAG COLLEGE OF ENGINEERING · Program for digital clock design using 8086. 6. Interfacing ADC...

147
ANURAG COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRONICS & COMMUNICATION ENGINEERING III B.Tech. ECE- II SEM L T/P/D C 0 -/3/- 2 (56606)MICROPROCESSORS AND MICROCONTROLLERS LAB List of Experiments: 1. Programs for 16 bit arithmetic operations for 8086 (using Various Addressing Modes). 2. Program for sorting an array for 8086. 3. Program for searching for a number or character in a string for 8086. 4. Program for string manipulations for 8086. 5. Program for digital clock design using 8086. 6. Interfacing ADC and DAC to 8086. 7. Parallel communication between two microprocessors using 8255. 8. Serial communication between two microprocessor kits using 8251. 9. Interfacing to 8086 and programming to control stepper motor. 10. Programming using arithmetic, logical and bit manipulation instructions of 8051. 11. Program and verify Timer/Counter in 8051. 12. Program and verify Interrupt handling in 8051. 13. UART Operation in 8051. 14. Communication between 8051 kit and PC. 15. Interfacing LCD to 8051. 16. Interfacing Matrix/Keyboard to 8051. 17. Data Transfer from Peripheral to Memory through DMA controller 8237/8257. Note: Minimum of 12 experiments to be conducted. 1

Transcript of ANURAG COLLEGE OF ENGINEERING · Program for digital clock design using 8086. 6. Interfacing ADC...

  • ANURAG COLLEGE OF ENGINEERINGDEPARTMENT OF ELECTRONICS & COMMUNICATION ENGINEERING

    III B.Tech. ECE- II SEM L T/P/D C0 -/3/- 2(56606)MICROPROCESSORS AND MICROCONTROLLERS LABList of Experiments:

    1. Programs for 16 bit arithmetic operations for 8086 (using Various Addressing Modes).

    2. Program for sorting an array for 8086.

    3. Program for searching for a number or character in a string for 8086.

    4. Program for string manipulations for 8086.

    5. Program for digital clock design using 8086.

    6. Interfacing ADC and DAC to 8086.

    7. Parallel communication between two microprocessors using 8255.

    8. Serial communication between two microprocessor kits using 8251.

    9. Interfacing to 8086 and programming to control stepper motor.

    10. Programming using arithmetic, logical and bit manipulation instructions of 8051.

    11. Program and verify Timer/Counter in 8051.

    12. Program and verify Interrupt handling in 8051.

    13. UART Operation in 8051.

    14. Communication between 8051 kit and PC.

    15. Interfacing LCD to 8051.

    16. Interfacing Matrix/Keyboard to 8051.

    17. Data Transfer from Peripheral to Memory through DMA controller 8237/8257.

    Note: Minimum of 12 experiments to be conducted.

    1

  • EXP NO.1: PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS FOR8086 (USING VARIOUS ADDRESSING MODES).

    A) ADDITION:i) 16 BIT ADDITION (DIRECT ADDERESSING MODE):

    AIM: - To write an assembly language program for Addition of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS: CODE, DS :DATA

    DATA SEGMENT

    NUM DW 1232H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX ,DATA

    MOV DS, AX

    MOV AX,4562H

    ADD AX,NUM

    INT 03H

    CODE ENDS

    END START

    2

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1443:0000 B84214 MOV AX,14421443:0003 8ED8 MOV DS,AX1443:0005 B86245 MOV AX,45621443:0008 03060000 ADD AX,[0000]1443:000C CC INT 3

    AX=5794 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000DI=0000 DS=1442 ES=1432 SS=1442 CS=1443 IP=000C NV UP EI PLNZ NA PO NC

    3

  • ii) 16 BIT ADDITION(IMMEDIATE ADDERESSING MODE):

    AIM: - To write an assembly language program for Addition of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM: ASSUME CS:CODE

    CODE SEGMENT

    START:

    MOV BX,5678H

    ADD AX,1234H

    INT 03H

    CODE ENDS

    END START

    4

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1442:0000 B87856 MOV AX,56781442:0003 053412 ADD AX,12341442:0006 CC INT 3

    AX=68AC BX=0000 CX=0007 DX=0000 SP=0000 BP=0000 SI=0000DI=0000 DS=1432 ES=1432 SS=1442 CS=1442 IP=0006 NV UP EI PLNZ NA PE NC

    5

  • iii) 16 BIT ADDITION(INDIRECTADDERESSING MODE):

    AIM: - To write an assembly language program for Addition of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    NUM DW 02H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,4444H

    MOV BX,OFFSET NUM

    ADD AX,[BX]

    INT 03H

    CODE ENDS

    END START

    6

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1443:0000 B84214 MOV AX,14421443:0003 8ED8 MOV DS,AX1443:0005 B84444 MOV AX,44441443:0008 BB0000 MOV AX,44441443:000B 0307 MOV BX,00001443:000D CC ADD AX,[BX]

    AX=4446 BX=0000 CX=001E DX=0000 SP=0000 BP=0000 SI=0000DI=0000 DS=1442 ES=1432 SS=1442 CS=1443 IP=000D NV UP EI PLNZ NA PO NC

    7

  • iv) 16 BIT ADDITION (REGISTERADDERESSING MODE):

    AIM: - To write an assembly language program for Addition of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1PROGRAM:

    ASSUME CS:CODE

    CODE SEGMENT

    START:

    MOV BX,5678H

    MOV AX,1234H

    ADD AX,BX

    INT 03H

    CODE ENDS

    END START

    8

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1442:0000 BB7856 MOV BX,56781442:0003 B83412 MOV AX,12341442:0006 03C3 ADD AX,BX1442:0008 CC INT 3

    AX=68AC BX=5678 CX=0009 DX=0000 SP=0000 BP=0000 SI=0000DI=0000DS=1432 ES=1432 SS=1442 CS=1442 IP=0008 NV UP EI PLNZ NA PE NC

    9

  • B) SUBTRACTION:i) 16 BIT SUBTRACTION (DIRECT ADDRESSING MODE):

    AIM: - To write an assembly language program for subtraction of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1PROGRAM:

    ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    NUM DW 1232H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,4562H

    SUB AX,NUM

    INT 03H

    CODE ENDS

    END START

    10

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1443:0000 B84214 MOV AX,14421443:0003 8ED8 MOV DS,AX1443:0005 B86245 MOV AX,45621443:0008 2B060000 SUB AX,[0000]1443:000C CC INT 3

    AX=3330 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000DI=0000 DS=1442 ES=1432 SS=1442 CS=1443 IP=000C NV UP EI PLNZ NA PE NC

    11

  • ii) 16 BIT SUBTRACTION (IMMEDIATE ADDRESSING MODE):

    AIM: - To write an assembly language program for subtraction of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE

    CODE SEGMENT

    START:

    MOV AX,5678H

    SUB AX,1234H

    INT 03H

    CODE ENDS

    END START

    12

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1442:0000 B87856 MOV AX,56781442:0003 2D3412 SUB AX,12341442:0006 CC INT 3

    AX=4444 BX=0000 CX=0007 DX=0000 SP=0000 BP=0000 SI=0000DI=0000 DS=1432 ES=1432 SS=1442 CS=1442 IP=0006 NV UP EI PLNZ NA PE NC

    13

  • iii) 16 BIT SUBTRACTION (INDIRECTADDRESSING MODE):

    AIM: - To write an assembly language program for subtraction of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    NUM DW 02H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,4444H

    MOV BX,OFFSET NUM

    SUB AX,[BX]

    INT 03H

    CODE ENDS

    END START

    14

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1443:0000 B84214 MOV AX,14421443:0003 8ED8 MOV DS,AX1443:0005 B84444 MOV AX,44441443:0008 BB0000 MOV BX,00001443:000B 2B07 SUB AX,[BX]1443:000D CC INT 3

    AX=4442 BX=0000 CX=001E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

    DS=1442 ES=1432 SS=1442 CS=1443 IP=000D NV UP EI PL NZ NA PE NC

    15

  • iv) 16 BIT SUBTRACTION (REGISTERADDRESSING MODE):

    AIM: - To write an assembly language program for subtraction of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE

    CODE SEGMENT

    START:

    MOV BX,5678H

    MOV AX,1234H

    SUB AX,BX

    INT 03H

    CODE ENDS

    END START

    16

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1442:0000 BB7856 MOV BX,56781442:0003 B83412 MOV AX,12341442:0006 2BC3 SUB AX,BX1442:0008 CC INT 3

    AX=BBBC BX=5678 CX=0009 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

    DS=1432 ES=1432 SS=1442 CS=1442 IP=0008 NV UP EI NG NZ AC PO CY

    17

  • C) MULTIPLICATION:

    i) 16 BIT MULTIPLICATION (DIRECT ADDERESSING MODE):

    AIM: - To write an assembly language program for multiplication of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----12. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    X DB 02H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,0002H

    MUL X

    INT 03H

    CODE ENDS

    END START

    18

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1443:0000 B84214 MOV AX,14421443:0003 8ED8 MOV DS,AX1443:0005 B80200 MOV AX,00021443:0008 F6260000 MUL BYTE PTR [0000]1443:000C CC INT 3

    AX=0004 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

    DS=1442 ES=1432 SS=1442 CS=1443 IP=000C NV UP EI PL NZ NA PO NC

    19

  • C) MULTIPLICATION:

    ii) 16 BIT MULTIPLICATION (REGISTER ADDERESSING MODE):

    AIM: - To write an assembly language program for multiplication of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE

    CODE SEGMENT

    START:

    MOV BX,1234H

    MOV AX,1234H

    MUL BX

    INT 03H

    CODE ENDS

    END START

    20

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1442:0000 BB3412 MOV BX,1234H1442:0003 B83412 MOV AX,1234H1442:0006 F7E3 MUL BX1442:0008 CC INT 03H

    AX=5A90 BX=1234 CX=0009 DX=014B SP=0000 BP=0000 SI=0000 DI=0000

    DS=1432 ES=1432 SS=1442 CS=1442 IP=0008 OV UP EI PL NZ NA PE CY

    21

  • D) DIVISION:

    i) 16 BIT DIVISION (DIRECT ADDRESSING MODE):

    AIM: - To write an assembly language program for multiplication of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    NUM DW 02H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,4444H

    DIV NUM

    INT 03H

    CODE ENDS

    END START

    22

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1443:0000 B84214 MOV AX,14421443:0003 8ED8 MOV DS,AX1443:0005 B84444 MOV AX,44441443:0008 F7360000 DIV WORD PTR [0000]1443:000C CC INT 3

    AX=2222 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

    DS=1442 ES=1432 SS=1442 CS=1443 IP=000C NV UP EI PL NZ NA PO NC

    23

  • D) DIVISION:

    ii) 16 BIT DIVISION (REGISTER ADDRESSING MODE):

    AIM: - To write an assembly language program for multiplication of two 16-bit numbers.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE

    CODE SEGMENT

    START:

    MOV BX,0022H

    MOV AX,4444H

    DIV BX

    INT 03H

    CODE ENDS

    END START

    24

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1442:0000 BB2200 MOV BX,00221442:0003 B84444 MOV AX,44441442:0006 F7F3 DIV BX1442:0008 CC INT 3

    AX=0202 BX=0022 CX=0009 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

    DS=1432 ES=1432 SS=1442 CS=1442 IP=0008 NV UP EI PL NZ NA PO NC

    25

  • EXP NO.2: PROGRAM FOR SORTING AN ARRAY FOR 8086

    A) ASCENDING ORDER

    AIM:-Program to sort the given numbers in ascending order

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    LIST DW 55H,67H,23H,45H

    COUNT EQU 04H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV DX,COUNT-1

    L1:MOV CX,DX

    MOV SI,OFFSET LIST

    L2:MOV AX,[SI]

    CMP AX,[SI+2]

    JL L3

    XCHG [SI+2],AX

    26

  • XCHG [SI],AX

    L3:ADD SI,02

    LOOP L2

    DEC DX

    JNZ L1

    INT 03H

    CODE ENDS

    END START

    OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    145F:0000 B85E14 MOV AX,145E145F:0003 8ED8 MOV DS,AX145F:0005 BA0300 MOV DX,0003145F:0008 8BCA L1 MOV CX,DX145F:000A BE0000 MOV SI,0000145F:000D 8B04 L2 MOV AX,[SI]145F:000F 3B4402 CMP AX,[SI+02]145F:0012 7C05 JL 0019145F:0014 874402 XCHG AX,[SI+02]145F:0017 8704 XCHG AX,[SI]145F:0019 83C602 L3 ADD SI,+02145F:001C E2EF LOOP 000D145F:001E 4A DEC DX145F:001F 75E7 JNZ 0008145F:0021 CC INT 3

    AX=0023BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0002 DI=0000

    DS=145E ES=144E SS=145E CS=145F IP=0021 NV UP EI PL ZR NA PE NC

    -D 145E:0000

    27

  • 145E:0000 23 00 45 00 55 00 67 00-00 00 00 00 00 00 00 00

    B) DECENDING ORDER

    AIM:-Program to sort the given numbers in decending order

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    LIST DW 55H,67H,23H,45H

    COUNT EQU 04H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV DX,COUNT-1

    L1:MOV CX,DX

    MOV SI,OFFSET LIST

    L2:MOV AX,[SI]

    CMP AX,[SI+2]

    JA L3

    XCHG [SI+2],AX

    XCHG [SI],AX

    L3:ADD SI,02

    28

  • LOOP L2

    DEC DX

    JNZ L1

    INT 03H

    CODE ENDS

    END START

    OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    145F:0000 B85E14 MOV AX,145E145F:0003 8ED8 MOV DS,AX145F:0005 BA0300 MOV DX,0003145F:0008 8BCA L1 MOV CX,DX145F:000A BE0000 MOV SI,0000145F:000D 8B04 L2 MOV AX,[SI]145F:000F 3B4402 CMP AX,[SI+02]145F:0012 7705 JA 0019145F:0014 874402 XCHG AX,[SI+02]145F:0017 8704 XCHG AX,[SI]145F:0019 83C602 L3 ADD SI,+02145F:001C E2EF LOOP 000D145F:001E 4A DEC DX145F:001F 75E7 JNZ 0008145F:0021 CC INT 3

    AX=0093 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0002 DI=0000 DS=145E ES=144E SS=145E CS=145F IP=0021 NV UP EI PL ZR NA PE NC

    -D 145E:0000 000A

    145E:0000 93 00 67 00 45 00 05 00-00 00 00

    29

  • EXP NO: 3 PROGRAM FOR SEARCHING FOR A NUMBER ORCHARACTER IN A STRING FOR 8086.

    A) SERCHING OF AN ARRAY

    AIM: Write an alp program for to search a number or character from an array.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1PROGRAM:

    SEARCHING AN ARRAY CASE: EQUAL

    ASSUME CS: CODE, DS: DATA

    DATA SEGMENT

    ARRAY DB 27H, 0A9H, 82H, 4DH, 36H

    N1 DB 82H

    N2 DB 25H

    COUNT DB 05H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX, DATA

    MOV DS, AX

    MOV CL, COUNT

    MOV BX, OFFSET ARRAY

    LEA BX, ARRAY

    MOV DL, N1

    30

  • BACK: CMP DL,[BX]

    JE EXIT

    INC BX

    LOOP BACK

    MOV AX, 0FFFFH

    INT 03H

    EXIT: MOV AX, 00H

    INT 03H

    CODE ENDS

    END START

    SEARCHING AN ARRAY CASE: NOT EQUAL

    ASSUME CS: CODE, DS: DATA

    DATA SEGMENT

    ARRAY DB 27H, 0A9H, 82H, 4DH, 36H

    N1 DB 82H

    N2 DB 25H

    COUNT DB 05H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX, DATA

    MOV DS, AX

    MOV CL, COUNT

    31

  • MOV BX, OFFSET ARRAY

    LEA BX, ARRAY

    MOV DL, N2

    BACK: CMP DL, [BX]

    JE EXIT

    INC BX

    LOOP BACK

    MOV AX, 0FFFFH

    INT 03H

    EXIT: MOV AX, 00H

    INT 03H

    CODE ENDS

    END START

    32

  • OUTPUT:(CASE:EQUAL)

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    145F:0000 B85E14 MOV AX,145E145F:0003 8ED8 MOV DS,AX145F:0005 8A0E0700 MOV CL,[0007]145F:0009 BB0000 MOV BX,0000145F:000C 8D1E0000 LEA BX,[0000]145F:0010 8A160500 MOV DL,[0005]145F:0014 3A17 BACK CMP DL,[BX]145F:0016 7407 JZ 001F145F:0018 43 INC BX145F:0019 E2F9 LOOP 0014145F:001B B8FFFF MOV AX,FFFF145F:001E CC INT 3145F:001F B80000 EXIT MOV AX,0000145F:0022 CC INT 3

    AX=0000 BX=0002 CX=0003 DX=0082 SP=0000 BP=0000 SI=0000DI=0000 DS=145E ES=144E SS=145E CS=145F IP=0022 NV UP EIPL ZR NA PE NC

    -D 145E:0000 0004

    145E:0000 27 A9 82 4D 36

    33

  • OUTPUT(CASE:NOT EQUAL)

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    145F:0000 B85E14 MOV AX,145E145F:0003 8ED8 MOV DS,AX145F:0005 8A0E0700 MOV CL,[0007]145F:0009 BB0000 MOV BX,0000145F:000C 8D1E0000 LEA BX,[0000]145F:0010 8A160600 MOV DL,[0006]145F:0014 3A17 BACK CMP DL,[BX]145F:0016 7407 JZ 001F145F:0018 43 INC BX145F:0019 E2F9 LOOP 0014145F:001B B8FFFF MOV AX,FFFF145F:001E CC INT 3145F:001F B80000 EXIT MOV AX,0000145F:0022 CC INT 3

    AX=FFFF BX=0005 CX=0000 DX=0025 SP=0000 BP=0000 SI=0000 DI=0000 DS=145E ES=144E SS=145E CS=145F IP=001E NV UP EI PL NZ NA PE CY

    -D 145E:0000 0004

    145E:0000 27 A9 82 4D 36

    34

  • B)SERCHING A CHARACTER

    AIM: Write an alp program for to search a number or character from a string.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1PROGRAM:

    ASSUME CS:CODE,ES:DATA

    DATA SEGMENT

    STG DB "ANURAG COLLEGE OF ENGINEERING"

    CHAR1 DB "C"

    CHAR2 DB "Z"

    M1 DB "CHARACTER FOUND $"

    M2 DB "CHARACTER NOT FOUND$"

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV ES,AX

    STD

    LEA DI,[STG+0AH]

    MOV AL,CHAR1

    35

  • MOV CX,28

    REPNZ SCASB

    JZ FOUND

    LEA DX,M2

    JMP XYZ

    FOUND:LEA DX,M1

    XYZ:MOV AH,09H

    INT 21H

    MOV AH,4CH

    INT 21H

    CODE ENDS

    END START

    36

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1463:0000 B85E14 MOV AX,145E1463:0003 8EC0 MOV ES,AX1463:0005 FD STD1463:0006 8D3E0A00 LEA DI,[000A]1463:000A 26 ES:1463:000B A01D00 MOV AL,[001D]1463:000E B91C00 MOV CX,001C1463:0011 F2 REPNZ1463:0012 AE SCASB1463:0013 7406 JZ 001B1463:0015 8D163000 LEA DX,[0030]1463:0019 EB04 JMP 001F1463:001B 8D161F00 LEA DX,[001F]1463:001F B409 MOV AH,091463:0021 CD21 INT 211463:0023 B44C MOV AH,4C1463:0025 CD21 INT 21

    ANURAG COLLEGE OF ENGINEERINGCZ

    CHARACTER FOUND

    Program terminated normally

    37

  • EXP NO.4: PROGRAM FOR STRING MANIPULATIONS FOR 8086.

    A) MOVING BLOCK OF DATA FROM ONE MEMORY LOCATION TO ANOTHER MEMORY LOCATION

    AIM: To write an alp for transfer block of data from one memory location to anothermemory location.

    APPARATUS: 1. 8086 microprocessor kit/MASM ----1 2. RPS (+5V) ----1

    PROGRAM:

    ASSUME CS:CODE,DS:DATA,ES:EXTRA

    DATA SEGMENT

    STG1 DB "ELECTRONICS"

    DATA ENDS

    EXTRA SEGMENT

    STG2 DB 11 DUP(?)

    EXTRA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,EXTRA

    MOV ES,AX

    CLD

    38

  • LEA SI,STG1

    LEA DI,STG2

    MOV CX,11

    REP MOVSB

    INT 03H

    CODE ENDS

    END START

    39

  • OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1460:0000 B85E14 MOV AX,145E1460:0003 8ED8 MOV DS,AX1460:0005 B85F14 MOV AX,145F1460:0008 8EC0 MOV ES,AX1460:000A FC CLD1460:000B 8D360000 LEA SI,[0000]1460:000F 8D3E0000 LEA DI,[0000]1460:0013 B90B00 MOV CX,000B1460:0016 F3 REPZ1460:0017 A4 MOVSB1460:0018 CC CC INT 3

    -D 145E:0000 000B

    145E:0000 45 4C 45 43 54 52 4F 4E-49 43 53 00 ELECTRONICS.

    -D 145F:0000 000B

    145F:0000 45 4C 45 43 54 52 4F 4E-49 43 53 00 ELECTRONICS.

    40

  • B) INSERT A STRING

    PROGRAM

    ASSUME CS:CODE,DS:DATA,ES:DATA

    DATA SEGMENT

    S1 DB "ANURAGLEGE"

    S2 DB "COL"

    S3 DB 0DH DUP(?)

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    STD

    LEA SI,[S1+09H]

    LEA DI,[S3+0CH]

    MOV CX,04H

    REP MOVSB

    LEA SI,[S2+2]

    MOV CX,3

    REP MOVSB

    41

  • LEA SI,[S1+5]

    MOV CX,6

    REP MOVSB

    INT 03H

    CODE ENDS

    END START

    42

  • OUTPUT:

    145E:0000 000C

    145E:0000 41 4E 55 52 41 47 4C 45-47 45 43 4F 4C ANURAGLEGECOL

    -D 145E:000D 0020

    145E:000D 41 4E 55 52 41 47 43 4F 4C 4C 45-47 45 ANURAGCOLLEGE......

    43

    MEMORYLOCATION OP-CODE LABEL INSTRUCTION1460:0000 B85E14 MOV AX,145E1460:0003 8ED8 MOV DS,AX1460:0005 8EC0 MOV ES,AX1460:0007 FD STD1460:0008 8D360900 LEA SI,[0009]1460:000C 8D3E1900 LEA DI,[0019]1460:0010 B90400 MOV CX,00041460:0013 F3 REPZ1460:0014 A4 MOVSB1460:0015 8D360C00 LEA SI,[000C]1460:0019 B90300 MOV CX,00031460:001C F3 REPZ1460:001D A4 MOVSB1460:001E 8D360500 LEA SI,[0005]1460:0022 B90600 MOV CX,00061460:0025 F3 REPZ1460:0026 A4 MOVSB1460:0027 CC INT 3

  • C) REVERSING A STRING

    PROGRAM

    ASSUME CS: CODE, DS: DATA ,ES: DATA

    DATA SEGMENT

    S1 DB "KNOWLEDGE"

    S2 DB 09H DUP (?)

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    LEA SI,[S1]

    LEA DI,[S2+8]

    MOV CX,9

    BACK:CLD

    LODSB

    44

  • STD

    STOSB

    DEC CX

    JNZ BACK

    INT 03H

    CODE ENDS END START

    OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1460:0000 B85E14 MOV AX,145E1460:0003 8ED8 MOV DS,AX1460:0005 8EC0 MOV ES,AX1460:0007 8D360000 LEA SI,[0000]1460:000B 8D3E1100 LEA DI,[0011]1460:000F B90900 MOV CX,00091460:0012 FC CLD1460:0013 AC LODSB1460:0014 FD STD1460:0015 AA STOSB1460:0016 49 DEC CX1460:0017 75F9 JNZ 00121460:0019 CC INT 3

    -D 145E:0000 0008

    145E:0000 4B 4E 4F 57 4C 45 44 47-45 KNOWLEDGE

    -D 145E:0009 0017

    145E:0000 45 47 44 45 4C 57 4F 4E 4B EGDELWONK

    45

  • D) DELETE CHARACTER OF STRING

    PROGRAM : ASSUME CS:CODE,DS:DATA,ES:DATA

    DATA SEGMENT

    S1 DB "UNIVERSITY"

    S2 DB 07H DUP (?)

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    CLD

    LEA SI,S1

    LEA DI,S2

    MOV CX,04H

    REP MOVSB

    46

  • LEA SI,[S1+7]

    MOV CX,03H

    REP MOVSB

    INT 03H

    CODE ENDS

    END START

    OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    1460:0000 B85E14 MOV AX,145E1460:0003 8ED8 MOV DS,AX1460:0005 8EC0 MOV ES,AX1460:0007 FC CLD1460:0008 8D360000 LEA SI,[0000]1460:000C 8D3E0A00 LEA DI,[000A]1460:0010 B90400 MOV CX,00041460:0013 F3 REPZ1460:0014 A4 MOVSB1460:0015 8D360700 LEA SI,[0007]1460:0019 B90300 MOV CX,00031460:001C F3 REPZ1460:001D A4 REPZ1460:001E CC INT 3

    AX=145E BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=000A DI=0011

    DS=145E ES=145E SS=145E CS=1460 IP=001E NV UP EI PL NZ NA PO NC

    1460:001E CC INT 3

    47

  • -D 145E:0000 0009

    145E:0000 55 4E 49 56 45 52 53 49-54 59 UNIVERSITY

    -D 145E:000A 0010

    145E:0000 55 4E 49 56 49 54 UNIVITY

    E) STRING LENGTH

    PROGRAM

    ASSUME CS:CODE,ES:DATA

    DATA SEGMENT

    STG DB "ANURAG#"

    CHAR DB "#"

    LEN DW 00H

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV ES,AX

    CLD

    LEA DI,STG

    MOV AL,CHAR

    MOV CX,14

    48

  • REPNE SCASB

    MOV LEN,DI

    INT 03H

    CODE ENDS

    END START

    OUTPUT:

    MEMORY LOCATION

    OP-CODE LABEL INSTRUCTION

    145F:0000 B85E14 MOV AX,145E145F:0003 8ECO MOV ES,AX145F:0005 FC CLD145F:0006 8D3E0000 LEA DI,[0000]145F:000A 26 ES: 145F:000B A00700 MOV AL,[0007] 145F:000E B90E00 MOV CX,000E145F:0011 F2 REPNZ145F:0012 AE SCASB145F:0013 26 ES:145F:0014 893E0800 MOV [0008],DI145F:0018 CC INT 3

    AX=1423 BX=0000 CX=0007 DX=0000 SP=0000 BP=0000 SI=0000 DI=0007

    DS=144E ES=145E SS=145E CS=145F IP=0018 NV UP EI PL ZR NA PE NC

    145F:0018 CC INT 3

    49

  • F) STRING COMPARISION

    CASE: STRINGS ARE EQUAL

    ASSUME CS:CODE, DS: DATA, ES: DATA

    DATA SEGMENT

    S1 DB "ELECTRONICS $"

    S2 DB "ELECTRONICS $"

    S3 DB "COMPUTER $"

    MSG1 DB "STRINGS ARE EQUAL $"

    MSG2 DB "STRINGS ARE NOT EQUAL $"

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    LEA SI,S1

    50

  • LEA DI,S2

    MOV CX,11

    CLD

    REP CMPSB

    JNZ ABC

    LEA DX,MSG1

    LAST:MOV AH,09H

    INT 21H

    MOV AH,4CH

    INT 21H

    ABC:LEA DX,MSG2

    JMP LAST

    CODE ENDS

    END START

    CASE: STRINGS ARE NOT EQUAL

    ;COMPARE STRINGS

    ASSUME CS: CODE, DS:DATA,ES:DATA

    DATA SEGMENT

    S1 DB "ELECTRONICS $"

    S2 DB "ELECTRONICS $"

    S3 DB "COMPUTER $"

    MSG1 DB "STRINGS ARE EQUAL $"

    MSG2 DB "STRINGS ARE NOT EQUAL $"

    51

  • DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    LEA SI,S1

    LEA DI,S3

    MOV CX,11

    CLD

    REP CMPSB

    JNZ ABC

    LEA DX,MSG1

    LAST:MOV AH,09H

    INT 21H

    MOV AH,4CH

    INT 21H

    ABC:LEA DX,MSG2

    JMP LAST

    CODE ENDS

    END START

    52

  • OUTPUT:

    1463:0000 B85E14 MOV AX,145E

    1463:0003 8ED8 MOV DS,AX

    1463:0005 8EC0 MOV ES,AX

    1463:0007 8D360000 LEA SI,[0000]

    1463:000B 8D3E0D00 LEA DI,[000D]

    1463:000F B90B00 MOV CX,000B

    1463:0012 FC CLD

    1463:0013 F3 REPZ

    1463:0014 A6 CMPSB

    1463:0015 750C JNZ 0023

    1463:0017 8D162400 LEA DX,[0024]

    1463:001B B409 MOV AH,09

    1463:001D CD21 INT 21

    1463:001F B44C MOV AH,4C

    -1463:0014 A6 CMPSB

    53

  • 1463:0015 750C JNZ 0023

    1463:0017 8D162400 LEA DX,[0024]

    1463:001B B409 MOV AH,09

    1463:001D CD21 INT 21

    1463:001F B44C MOV AH,4C

    1463:0021 CD21 INT 21

    STRINGS ARE EQUAL

    1463:0000 B85E14 MOV AX,145E

    1463:0003 8ED8 MOV DS,AX

    1463:0005 8EC0 MOV ES,AX

    1463:0007 8D360000 LEA SI,[0000]

    1463:000B 8D3E1A00 LEA DI,[001A]

    1463:000F B90B00 MOV CX,000B

    1463:0012 FC CLD

    1463:0013 F3 REPZ

    1463:0014 A6 CMPSB

    1463:0015 750C JNZ 0023

    1463:0017 8D162400 LEA DX,[0024]

    1463:001B B409 MOV AH,09

    1463:001D CD21 INT 21

    1463:001F B44C MOV AH,4C

    1463:0021 CD21 INT 21

    54

  • STRINGS ARE NOT EQUAL

    55

  • EXP.NO.5: PROGRAM FOR DIGITAL CLOCK DESIGN USING8086.

    AIM: To write an ALP program for displaying the system clock.

    APPARATUS: 1.MASM

    PROGRAM:

    ASSUME CS:CODE,DS:DATA

    DATA SEGMENT

    MESSAGE DB 'CURRENT TIME IS:$'

    HR DB ?

    MIN DB ?

    SEC DB ?

    MSEC DB ?

    DATA ENDS

    CODE SEGMENT

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV AH,2CH

    INT 21H

    MOV HR,CH

    MOV MIN,CL

    MOV SEC,DH

    MOV MSEC,DL

    MOV AH,09H

    LEA DX,MESSAGE

    56

  • INT 21H

    MOV AL,HR

    AND AL,AL

    AAM

    MOV BX,AX

    CALL DISPLAY

    MOV DL,':'

    MOV AH,02H

    INT 21H

    MOV AL,MIN

    AAM

    MOV BX,AX

    CALL DISPLAY

    MOV DL,':'

    MOV AH,02H

    INT 21H

    MOV AL,SEC

    AAM

    MOV BX,AX

    CALL DISPLAY

    MOV DL,'.'

    MOV AH,02H

    INT 21H

    MOV AL,MSEC

    AAM

    57

  • MOV BX,AX

    CALL DISPLAY

    MOV AH,4CH

    INT 21H

    DISPLAY PROC NEAR

    MOV DL,BH

    ADD DL,30H

    MOV AH,02H

    INT 21H

    MOV DL,BL

    ADD DL,30H

    MOV AH,02H

    INT 21H

    RET

    DISPLAY ENDP

    CODE ENDS

    END START

    OUTPUT:

    1444:0000 B84214 MOV AX,1442

    1444:0003 8ED8 MOV DS,AX

    1444:0005 B42C MOV AH,2C

    1444:0007 CD21 INT 21

    1444:0009 882E1100 MOV [0011],CH

    1444:000D 880E1200 MOV [0012],CL

    58

  • 1444:0011 88361300 MOV [0013],DH

    1444:0015 88161400 MOV [0014],DL

    1444:0019 B409 MOV AH,09

    1444:001B 8D160000 LEA DX,[0000]

    1444:001F CD21 INT 21

    1444:0021 A01100 MOV AL,[0011]

    1444:0024 22C0 AND AL,AL

    1444:0026 D40A AAM

    1444:0028 8BD8 MOV BX,AX

    1444:002A 83400 CALL 0061

    1444:002D B23A MOV DL,3A

    1444:002F B402 MOV AH,02

    1444:0031 CD21 INT 21

    1444:0033 A01200 MOV AL,[0012]

    1444:0036 D40A AAM

    1444:0038 8BD8 MOV BX,AX

    1444:003A E82400 CALL 0061

    1444:003D B23A MOV DL,3A

    1444:003F B402 MOV AH,02

    1444:0041 CD21 INT 21

    1444:0043 A01300 MOV AL,[0013]

    1444:0046 D40A AAM

    1444:0048 8BD8 MOV BX,AX

    59

  • 1444:004A E81400 CALL 0061

    1444:004D B22E MOV DL,2E

    1444:004F B402 MOV AH,02

    1444:0051 CD21 INT 21

    1444:0053 A01400 MOV AL,[0014]

    1444:0056 D40A AAM

    1444:0058 8BD8 MOV BX,AX

    1444:005A E80400 CALL 0061

    1444:005D B44C MOV AH,4C

    1444:005F CD21 INT 21

    1444:0061 8AD7 MOV DL,BH

    1444:0063 80C230 ADD DL,30

    1444:0066 B402 MOV AH,02

    1444:0068 CD21 INT 21

    1444:006A 8AD3 MOV DL,BL

    1444:006C 80C230 ADD DL,30

    1444:006F B402 MOV AH,02

    1444:0071 CD21 INT 21

    1444:0073 C3 RET

    CURRENT TIME IS:14:40:47.44

    60

  • EXP.NO.6: INTERFACING ADC AND DAC TO 8086.

    AIM:1. To write a program for conversion of analog data to digital output.2. To write a program for conversion of digital data to analog output. The analog outputwill be in the form of triangular wave, saw tooth wave, square wave/rectangular wave.

    APPARATUS:1. 8086 Trainer.2. Power supply for trainer and interface module.3. A/D, D/A interface module.4. Power mate connector.5. FRC connector.6. Cathode ray oscilloscope.

    PROGRAM:

    ;8 bit ADC 0809 (SUCCESIVE APPROX. METHOD), 100 microsec.

    ;convertion time is used to convert voltage signal

    ;simulated by on board pot. It provided varying voltage

    ;0 to 5v,connected to channel no.1. Processor interface

    ;is provided via 26 pin FRC.

    ADC SEGMENT

    ASSUME CS:ADC

    CR55 EQU 8807H

    PORTB EQU 8803H

    PORTC EQU 8805H

    ORG 100H

    START:

    MOV AX,0000H

    MOV ES,AX

    61

  • MOV SS,AX

    MOV AX,11F0H ;Init .SP

    MOV SP,AX

    PUSH CS ;Set CS=DS

    POP DS

    MOV DX,CR55 ;Init port A,B

    MOV AL,81H ;C(upper) as OP

    OUT DX,AL ;C(lower) as IP

    MOV DX,PORTB

    MOV AL,00H

    OUT DX,AL

    MOV DX,CR55

    MOV AL,09H ;Set PC4(ALE) bit

    OUT DX,AL ;high

    MOV AL,08H ;Set PC4 bit to

    OUT DX,AL ;latch

    MOV AL,83H ;Set portB as IP

    OUT DX,AL ;rest same as before

    INT 0ACH

    COVN: MOV DX,CR55 ;Set PC6(start of

    MOV AL,0DH ;convertion)

    OUT DX,AL

    MOV AL,0CH

    62

  • OUT DX, AL

    MOV DX, PORTC

    BACK: IN AL, DX ;Check PC1(EOC) low

    AND AL, 02H ;to insure convertion

    JNZ BACK

    COVNCHK: IN AL, DX ;Convertion really

    AND AL, 02H ;Completed

    JZ COVNCHK ;Yes, then set

    MOV AL, 0BH ; PC5(OE) to read

    MOV DX, CR55

    OUT DX, AL

    MOV DX, PORTB ;Read digital data

    IN AL, DX

    MOV CL, AL

    MOV DX, CR55

    MOV AL, 0AH

    OUT DX, AL

    INT 0ABH

    MOV AL, 02H

    MOV DX, CX

    NOP

    MOV DH,00H

    INT 0AEH

    63

  • MOV AH,0BH

    INT 0A1H

    AND AL,0FFH

    JZ COVN ;Start next sample

    INT 0A3H ;Return to monitor

    ADC ENDS

    END STRT

    OUTPUT: By changing the POT we can observe the equal lent digital value on the lcd screen

    0100 B8 0000 START: MOV AX,0000H

    0103 8E C0 MOV ES,AX

    0105 8E D0 MOV SS,AX

    0107 B8 F0 11 MOV AX,11F0H ;Init .SP

    010A 89 C4 MOV SP,AX

    010C 0E PUSH CS ;Set CS=DS

    010D 1F POP DS

    010E BA 07 88 MOV DX,CR55 ;Init port A,B

    0111 B0 81 MOV AL,81H ;C(upper) as OP

    0113 EE OUT DX,AL ;C(lower) as IP

    0114 BA 03 88 MOV DX,PORTB

    0117 B0 00 MOV AL,00H

    0119 EE OUT DX,AL

    011A BA 07 88 MOV DX,CR55

    011D B0 09 MOV AL,09H ;Set PC4(ALE) bit

    011F EE OUT DX,AL ;high

    64

  • 0120 B0 08 MOV AL,08H ;Set PC4 bit to

    0122 EE OUT DX,AL ;latch

    0123 B0 83 MOV AL,83H ;Set portB as IP

    0125 EE OUT DX,AL ;rest same as before

    0126 CD AC INT 0ACH

    0128 BA 07 88 COVN: MOV DX,CR55 ;Set PC6(start of

    012B B0 0D MOV AL,0DH ;convertion)

    012D EE OUT DX,AL

    012E B0 0C MOV AL,0CH

    0130 EE OUT DX,AL

    0131 BA 05 88 MOV DX,PORTC

    0134 EC BACK: IN AL,DX ;Check PC1(EOC) low

    0135 24 02 AND AL,02H ;to insure convertion

    0137 75 FB JNZ BACK

    0139 EC COVNCHK: IN AL,DX ;Convertion really

    013A 24 02 AND AL,02H ;Completed

    013C 74 FB JZ COVNCHK ;Yes, then set

    013E B0 0B MOV AL,0BH ;PC5(OE) to read

    0140 BA 07 88 MOV DX,CR55

    0143 EE OUT DX,AL

    0144 BA 03 88 MOV DX,PORTB ;Read digital data

    0147 EC IN AL,DX

    0148 88 C1 MOV CL,AL

    014A BA 07 88 MOV DX,CR55

    65

  • 014D B0 0A MOV AL,0AH

    014F EE OUT DX,AL

    0150 CD AB INT 0ABH

    0152 B0 02 MOV AL,02H

    0154 89 CA MOV DX,CX

    0156 90 NOP

    0157 B6 00 MOV DH,00H

    0159 CD AE INT 0AEH

    015B B4 0B MOV AH,0BH

    015D CD A1 INT 0A1H

    015F 24 FF AND AL,0FFH

    0161 74 C5 JZ COVN ;Start next sample

    0163 CD A3 INT 0A3H ;Return to monitor

    0165 90 ADC ENDS

    END STRT

    66

  • PROGRAM FOR DIGITAL TO ANALOG CONVERTOR

    PROGRAM:

    ASSUME CS: CODE

    CODE SEGMENT

    START:

    MOV DX, 8006H

    MOV AL, 80H

    OUT DX.AL

    MOV AL, 00H

    MOV DX, 8000H

    UP: OUT DX, AL

    INC AL

    JMP UP

    RET

    CODE ENDS

    END START

    67

  • OUTPUT :we can observe the output on CRO

    1442:0000 BA0680 MOV DX,8006

    1442:0003 B080 MOV AL,80

    1442:0005 EE OUT DX,AL

    1442:0006 BA0080 MOV DX,8000

    1442:0009 B000 MOV AL,00

    1442:000B EE OUT DX,AL

    1442:000C FEC0 INC AL

    1442:000E EBFB JMP 000B

    1442:0010 C3 RET

    68

  • EXP.NO.7: PARALLEL COMMUNICATION BETWEEN TWOMICROPROCESSORS

    USING 8255.AIM: To write an alp for parallel communication between two microprocessors by using 8255.

    APPARATUS: 8086 Trainer kit-2, 8255, Power Supply and connectors.

    PROCEDURE:1) Connect 8255 card (Periware – 3) to your kit through 50 pin FRC.2) Connect port A tags to GND, and Vcc through patch cords, 3) Make S1 towards you to enable Single Stepping.4) Connect PC4 tag with patch cord to Vcc.5) Connect PC3 tag to RST 5.5 tag through patch cord.6) L18 (on MB) position should be 2-3 short & L3 on converter card position should be 1-2.7) Enter the software code as given in list 3(A).8) Execute the program by pressing G, CR, CR, SR_SEGM 145E, CR, ADDR 0100, CR &

    observe

    PROGRAM:

    0103 B8 10FF MOV AX,10FFH ;Init of SP for Kit

    0106 8B E0 MOV SP,AX ;On PC

    0108 0E PUSH CS ;Init for DS

    0109 58 POP AX ;Load kit INTS

    010A 8E D8 MOV DS,AX ;(A0-BF)

    010C 90 NOP ;In PC using

    010D 90 NOP ;CALL in place

    010E 90 NOP ;of 3 NOP`S

    010F B8 0000 MOV AX,0000H ;Load ES as 0000H

    0112 8E C0 MOV ES,AX

    0114 B0 90 MOV AL,90H ; Control Word for Mode 0, ;A-input

    0116 BA 01E6 MOV DX,01E6H ; CSW Address in DX

    0119 EE OUT DX,AL ; Write csw (OUT 90 to 01E6H)

    69

  • 011A BA 01E0 MOV DX,01E0H ; Port A Address in DX

    011D EC IN AL,DX ; Read port A ( IN from 01E0H)

    011E ISR055:

    011E 26: A2 1000 MOV ES:[1000H],AL ; Store received data in memory.

    0122 CD AC INT 0ACH ;Clear display

    0124 BB 0140 R MOV BX,OFFSET MSG ;LXI H,00H 43H, Pointer for

    ;look up table.

    0127 CD AF INT 0AFH ;CALL OUTMSG, Calls display

    ;routine.

    0129 B3 01 MOV BL,01H ; Set counter for delay.(C)

    012B B9 00FF LOOP: MOV CX,00FFH ;LXI D,FFH FFH, Wait to stabilise

    the display.

    012E CD AA INT 0AAH ;Call delay, Calls delay routine.

    0130 26: A0 1000 MOV AL,ES:[1000H] ;Retrive port A received data for

    ;display purpose.

    0134 8A D0 MOV DL,AL

    0136 B0 02 MOV AL,02H ; Number of digits to be

    ; displayed in data segment.

    0138 CD AE INT 0AEH ;CALL NMOUT, NM OUT routine is013A FE CB DEC BL

    013C 75 ED JNZ LOOP

    013E CD A4 INT 0A4H ;GOTO Command Mode.

    0140 50 4F 54 41 20 20 MSG: DB "POTA ",03H ; End of text. 03

    0147 X86P55A1 ENDS

    END STRT

    70

  • OUTPUT:

    Data CS RD WR A0 A1 Comments

    Bus

    Start 90 L - L 1 1 Control Word Mode 0,

    port A - input.

    Step1 DATA L L - - - Read data from port A.

    Step2 - - - - - - Shows input data on kit display .

    71

  • EXP.NO.8: Serial communication between two microprocessor kits using8251

    AIM: Interface the 8251 USART to the two 8086 microprocessor kits.

    APPARATUS:1. 8086 Trainer kit - 2no s‟2. 8251 USART3. Power Supply4. Connectors.

    PROCEDURE: 1) Connect the 8251 card to your kit through pin FRC. As shown in interfacing diagram.2) Connect TxC tag to clk SRC tag, DSR tag to GND, TxD tag to RxD tag.3) Make S1 towards you to enable Single Stepping.4) Check 2-3 of L18 is shorted using short link on MB.5) Check 1-2 of L3 is shorted using short link on converter card.6) Check 1-2 of L35 is open (should not short)7) Enter the software code as given in list 1(A).8) Execute the program by pressing G, CR, CR, 149F, CR, 0100 CR & observe

    following results on the LEDs.

    PROGRAM:

    MOV AX,10FFH ;Initof SP for Kit

    MOV SP,AX ;On PC

    PUSH CS ;Init for DS

    POP AX ;Load kit INTS

    MOV DS,AX ;(A0-BF)

    NOP ;In PC using

    NOP ;CALL in place

    NOP ;of 3 NOP`S

    MOV AX,0000H

    MOV ES,AX

    MOV AL,00H ; Dummy code.

    72

  • MOV DX,01E2H

    OUT DX,AL

    INT 0ACH ; Clear screen. Give delay.

    OUT DX,AL ; Dummy code.

    INT 0ACH

    OUT DX,AL ; Dummy code.

    INT 0ACH

    MOV AL,40H

    OUT DX,AL ; Reset code

    INT 0ACH

    MOV AL,4DH

    OUT DX,AL ; Mode word, Stop Bits=1,

    ; Character Length=8 Bits

    INT 0ACH ; Baud Rate Factor = 1

    MOV AL,27H

    OUT DX,AL ; Command Word, Rx

    ; Enable=1, TxEnable=1

    ; DSR=1

    LOOP1:

    IN AL,DX ; Check for transmitter ready.

    AND AL,81H; If no then remain in loop and ; wait.

    CMP AL,81H

    JNZ LOOP1

    POP BX ; Remove programme counter ; from stack.

    INT 0ACH ; Set cursor to left.

    73

  • MOV BX,OFFSET MSGBY ; Pointer for look up table

    MOV AL, 02H

    MOV AH,10H

    INT 0B9H ; Routine to receive number

    MOV AL,DL

    MOV DX,01E0H

    OUT DX,AL ; Send data to Transmitter Buffer

    LOOP2:

    MOV DX,01E2H

    IN AL,DX ; Check for receiver ready.

    AND AL,02H; If no then remain in loop and ; wait.

    CMP AL,02H

    JNZ LOOP2

    MOV DX,01E0H

    IN AL,DX ; Receive the data from; receiver output.

    CALL DSPLY; Displays the byte on seven ; segments

    INT 0A4H ; Go to Command Mode.; without disturbing display.

    DSPLY PROC NEAR

    INT 0ACH

    MOV ES:[1000H],AL ; Store received data in memory

    MOV BX,OFFSET MSGDA; Pointer for look up table.

    INT 0AFH ; Calls display routine

    MOV DL,20H ;Out ascii space charater

    MOV AH,02H

    INT 0A2H

    74

  • MOV DL,20H ;Out ascii space char.

    MOV AH,02H

    INT 0A2H

    LOOP3:

    MOV CX,0FFFFH ; Wait to stabilise the display

    INT 0AAH ; Calls delay routine

    MOV AL,02H ; Number of digits to be displayed ; in data segment.

    MOV DL,ES:[1000H] ; Load the data back to the ACC

    INT 0AEH ; NMOUT routine is called

    RET

    DSPLY ENDP

    MSGDA: DB "DATA", 03H

    MSGBY: DB "BYTE", 03H

    X86P511A ENDS

    END STRT

    75

  • OUTPUT:

    0103 SKIP_DATA:

    0103 B8 10FF MOV AX,10FFH ;Initof SP for Kit

    0106 8B E0 MOV SP,AX ;On PC

    0108 0E PUSH CS ;Init for DS

    0109 58 POP AX ;Load kit INTS

    010A 8E D8 MOV DS,AX ;(A0-BF)

    010C 90 NOP ;In PC using

    010D 90 NOP ;CALL in place

    010E 90 NOP ;of 3 NOP`S

    010F B8 0000 MOV AX,0000H

    0112 8E C0 MOV ES,AX

    0114 B0 00 MOV AL,00H ; Dummy code.

    0116 BA 01E2 MOV DX,01E2H

    0119 EE OUT DX,AL

    011A CD AC INT 0ACH ; Clear screen. Give delay.

    011C EE OUT DX,AL ; Dummy code.

    011D CD AC INT 0ACH

    011F EE OUT DX,AL ; Dummy code.

    0120 CD AC INT 0ACH

    0122 B0 40 MOV AL,40H

    0124 EE OUT DX,AL ; Reset code

    0125 CD AC INT 0ACH

    0127 B0 4D MOV AL,4DH

    0129 EE OUT DX,AL; Mode word, Stop Bits=1, Character Length=8 Bits

    76

  • 012A CD AC INT 0ACH ; Baud Rate Factor = 1

    012C B0 27 MOV AL,27H

    012E EE OUT DX,AL ; Command Word, Rx ; Enable=1, TxEnable=1 ; DSR=1

    012F LOOP1:

    012F EC IN AL,DX ; Check for transmitter ready.

    0130 24 81 AND AL,81H; If no then remain in loop and; wait.

    0132 3C 81 CMP AL,81H

    0134 75 F9 JNZ LOOP1

    0136 5B POP BX ; Remove programme counter ; from stack.

    0137 CD AC INT 0ACH ; Set cursor to left.

    0139 BB 0186 R MOV BX,OFFSET MSGBY ; Pointer for look up table

    013C B0 02 MOV AL, 02H

    013E B4 10 MOV AH,10H

    0140 CD B9 INT 0B9H ; Routine to receive number

    0142 8A C2 MOV AL,DL

    0144 BA 01E0 MOV DX,01E0H

    0147 EE OUT DX,AL ; Send data to Transmitter Buffer

    0148 LOOP2:

    0148 BA 01E2 MOV DX,01E2H

    014B EC IN AL,DX ; Check for receiver ready.

    014C 24 02 AND AL,02H; If no then remain in loop and; wait.

    014E 3C 02 CMP AL,02H

    0150 75 F6 JNZ LOOP2

    0152 BA 01E0 MOV DX,01E0H

    0155 EC IN AL,DX; Receive the data from; receiver output.

    77

  • 0156 E8 015B R CALL DSPLY; Displays the byte on seven ; segments

    0159 CD A4 INT 0A4H ; Go to Command Mode.; without disturbing display.

    015B DSPLY PROC NEAR

    015B CD AC INT 0ACH

    015D 26: A2 1000 MOV ES:[1000H],AL ; Store received data in mem

    0161 BB 0181 R MOV BX,OFFSET MSGDA; Pointer for look up table

    0164 CD AF INT 0AFH ; Calls display routine

    0166 B2 20 MOV DL,20H ;Out ascii space charater

    0168 B4 02 MOV AH,02H

    016A CD A2 INT 0A2H

    016C B2 20 MOV DL,20H ;Out ascii space char.

    016E B4 02 MOV AH,02H

    0170 CD A2 INT 0A2H

    0172 LOOP3:

    0172 B9 0FFF MOV CX,0FFFH ; Wait to stabilise the display

    0175 CD AA INT 0AAH ; Calls delay routine

    0177 B0 02 MOV AL,02H; Number of digits to be displayed ; in datasegment.

    0179 26: 8A 16 1000 MOV DL,ES:[1000H] ; Load the data back to the ACC

    017E CD AE INT 0AEH ; NMOUT routine is called

    0180 C3 RET

    0181 DSPLY ENDP

    0181 44 41 54 41 03 MSGDA: DB "DATA", 03H

    0186 42 59 54 45 03 MSGBY: DB "BYTE", 03H

    018B X86P511A ENDS

    END START

    78

  • Data

    Bus CS C/D

    RD

    Rx

    RDy

    Tx

    RDy

    WR

    TxC

    IO/M

    RxD

    DTR

    RTS DSR

    TxD TxE

    CTS

    SYN/BD

    Comments

    Start 00 L 1 - - - L - 1 1 - - L 1 1 - - Dummy Code

    Step1 00 L 1 - - - L - 1 1 - - L 1 1 - - Dummy Code

    Step2 00 L 1 - - - L - 1 1 - - L 1 1 - - Dummy Code

    Step3 40 L 1 - - - L - 1 1 - - L 1 1 - - Reset 8251

    Step4 4D L 1 - - - L - 1 1 - - L 1 1 - - Mode word, 8 Bit no. no of stop Bits=1 Baud rate factor = 1

    Step5 27 L 1 - - - L - 1 1 - - L 1 - - - Command word, RTS output=0, DTR output=0, Enable Receiver, Transmitter

    Step6 85 L 1 L - 1 - - 1 1 L L L 1 1 - - Reads status ofBit “TxRDy” it can be visualised on LED.

    Step7 - - - - - Displays “BYTE” on XPO kit Enterdata through keyboard and press “CR” forEx. “AA”-“CR”

    Step8 80 L 1 L - - - - 1 1 L L L 1 - - - Data is ready in Trasmitter Buffer to be transmitted

    Step9 81 L 1 L - 1 - - 1 1 L L L 1 - - - Checking the

    79

  • status of TxD pin for “ONE”before sendingthe Start Bit.

    Step10 81 L 1 L - 1 - - 1 0 L L L 0 - - - The data is serially being transmitted and received through serial port. Start Bit=0

    Step11 81 L 1 L - 1 - - 1 0 L L L 0 - - - D0=0

    Step12 81 L 1 L - 1 - - 1 1 L L L 1 - - - D1=1

    Step13 81 L 1 1 - 1 - - 1 0 L L L 0 - - - D2=0

    Step14 81 L 1 1 - 1 - - 1 1 L L L 1 - - - D3=1

    Step15 81 L 1 1 - 1 - - 1 0 L L L 0 - - - D4=0

    Step16 81 L 1 1 - 1 - - 1 1 L L L 1 - - - D5=1

    Step17 81 L 1 1 - 1 - - 1 0 L L L 0 - - - D6=0

    Step18 81 L 1 1 - 1 - - 1 1 L L L 1 - - - D7=1

    Step19 87 L 1 1 1 1 - - 1 1 L L L 1 1 - - Stop Bit=1 data is available on 8251 which is to be read

    Step20 AA L 0 L - 1 - - 1 1 L L L 1 1 - - Data is being read from Receiver Buffer.

    Step21 ------------ Data will be displayed on display of XPO kit

    .EXP.NO.9: INTERFACING TO 8086 AND PROGRAMMING TO CONTROL STEPPER MOTOR

    AIM: Write an Assembly Language Program to rotate the Stepper Motor in clockwise as wellas anti-clockwise direction.

    80

  • APPARATUS: 8086 Trainer kit, Stepper,Motor Interface Card,Stepper Motor,Power supply.

    PROGRAM:(STEPPER CLOCK WISE)

    ASSUME CS:CODE

    CODE SEGMENT

    START: MOV DX,8006H

    MOV AL,80H

    OUT DX,AL

    MOV DX,8000H

    MOV AL,88H

    BACK:OUT DX,AL

    CALL DELAY

    ROR AL,01H

    JMP BACK

    DELAY:MOV CX,0FFFH

    L1:DEC CX

    JNZ L1

    RET

    CODE ENDS

    END START

    PROGRAM: (ANTICLOCK WISE)

    ASSUME CS: CODE

    CODE SEGMENT

    START:

    81

  • MOV DX,8006H

    MOV AL,80H

    OUT DX,AL

    MOV DX,8000H

    MOV AL,88H

    BACK:OUT DX,AL

    CALL DELAY

    ROL AL,01H

    JMP BACK

    DELAY:MOV CX,0FFFH

    L1:DEC CX

    JNZ L1

    RET

    CODE ENDS

    END START

    OUTPUT: (STEPPER CLOCK WISE)

    145E:0000 BA0680 MOV DX,8006

    145E:0003 B080 MOV AL,80

    145E:0005 EE OUT DX,AL

    82

  • 145E:0006 BA0080 MOV DX,8000

    145E:0009 B088 MOV AL,88

    145E:000B EE OUT DX,AL

    145E:000C E80400 CALL 0013

    145E:000F D0C8 ROR AL,1

    145E:0011 EBF8 JMP 000B

    145E:0013 B9FF0F MOV CX,0FFF

    145E:0016 49 DEC CX

    145E:0017 75FD JNZ 0016

    145E:0019 C3 RET

    OUTPUT: (STEPPER ANTI-CLOCK WISE )

    145E:0000 BA0680 MOV DX,8006

    145E:0003 B080 MOV AL,80

    145E:0005 EE OUT DX,AL

    83

  • 145E:0006 BA0080 MOV DX,8000

    145E:0009 B088 MOV AL,88

    145E:000B EE OUT DX,AL

    145E:000C E80400 CALL 0013

    145E:000F D0C0 ROL AL,1

    145E:0011 EBF8 JMP 000B

    145E:0013 B9FF0F MOV CX,0FFF

    145E:0016 49 DEC CX

    145E:0017 75FD JNZ 0016

    145E:0019 C3 RET

    84

  • EXP.NO.10: PROGRAMMING USING ARITHMETIC, LOGICALAND BIT MANIPULATIONINSTRUCTIONS OF 8051.

    A)ARITHMETIC OPERATIONS

    AIM: To perform arithmetic operations by using 8051.

    APPARATUS: 1.8051 with keyboard

    2.keil software

    PROGRAM:

    ORG 00H

    MOV A,#08H

    ADD A,#02H

    MOV R0,A

    SUBB A,#01H

    MOV R1,A

    MOV B,#03H

    MUL AB

    MOV R2,A

    MOV R3,B

    MOV B,#03H

    DIV AB

    MOV R4,A

    MOV R5,B

    HERE:SJMP HERE

    END

    85

  • OUTPUT:

    86

  • 87

  • B) LOGICAL OPERATIONS

    AIM: To perform arithmetic operations by using 8051.

    APPARATUS: 8051 with keyboard & keil software

    PROGRAM:

    ORG 00H

    MOV A,#08H

    ANL A,#02H

    MOV R0,A

    ORL A,#01H

    MOV R1,A

    XRL A,#44H

    MOV R2,A

    CPL A

    MOV R4,A

    SETB C

    CLR P1.3

    HERE:SJMP HERE

    END

    88

  • OUTPUT:

    89

  • EXP.NO.11: PROGRAM AND VERIFY TIMER/COUNTER IN 8051AIM: To Perform Timer 0 and Timer 1 in Counter Mode and Gated Mode Operation.

    APPARATUS: 8051kit with keyboard,& keil software.

    PROGRAM:

    ORG 00H

    MOV TMOD,#01H

    START:MOV TH0,#0FEH

    MOV TL0,#031H

    SETB TR0

    JNB TF0,$

    CPL P1.0

    CLR TR0

    CLR TF0

    SJMP START

    END

    90

  • OUTPUT:

    91

  • EXP.NO.12: PROGRAM AND VERIFY INTERRUPT HANDLING IN8051.

    AIM: Write ALP in 8051 to allow the external interrupt 1.

    APPARATUS: 8051 with keyboard interrupt kit module.

    PROGRAM:

    A: EQU 0E0H

    B: EQU 0F0H

    R0: EQU 00H ;REGISTER BANK-0

    R1: EQU 01H

    R2: EQU 02H

    R3: EQU 03H

    R4: EQU 04H

    R5: EQU 05H

    R6: EQU 06H

    R7: EQU 07H

    SP: EQU 81H ;STACK POINTER

    TMOD: EQU 89H ;TIMER MODE REG.

    TCON: EQU 88H ;TIMER CONTROL REG.

    TH0: EQU 8CH ;TIMER-0 REG.HIGH BYTE

    TL0: EQU 8AH ;TIMER-0 REG.LOW BYTE

    TH1: EQU 8DH ;TIMER-1 REG.HIGH BYTE

    TL1: EQU 8BH ;TIMER-1 REG.LOW BYTE

    DPL: EQU 82H ;16-BIT "DPTR" POINTER

    DPH: EQU 83H

    92

  • DPTR: EQU DPL

    SPDTF0: EQU 2023H ;EXT.MEM.SCPD.VECTOR ADDR.FOR TF0

    SPDTF1: EQU 2029H ;EXT.MEM.SCPD.VECTOR ADDR.FOR TF1

    CUR: EQU 2010H

    IE0: EQU 2020H

    IE1: EQU 2026H

    PERIPHERAL EQUATES

    ; FOR 8031/V51 KIT ; FOR UNI-8 KIT,8031 MODULE

    UPA55: EQU 2808H ; UPA55: EQU 2800H

    UPB55: EQU 2809H ; UPB55: EQU 2801H

    UPC55: EQU 280AH ; UPC55: EQU 2802H

    UCS55: EQU 280BH ; UCS55: EQU 2803H

    DTA79: EQU 2800H ; DTA79: EQU 2810H

    CW79: EQU 2801H ; CW79: EQU 2811H

    ;---- MONITOR UTILITIES USED IN PROGRAMS EQUATES ---

    ;---- ONLY THE NECESSARY MON.UTILITIES ARE LISTED HERE --

    CRLF: EQU 061DH

    WR79: EQU 062CH

    WRSR: EQU 01F3H

    RDBUF: EQU 0230H

    NOUT: EQU 059EH

    DELAY: EQU 0114H

    RCVN: EQU 045FH

    93

  • TST79: EQU 0503H

    MSGOUT: EQU 0606H

    NMIN: EQU 047BH

    CMDMOD: EQU 06D8H

    CMDWDP: EQU 06DBH

    WRTCR: EQU 03D8H

    TERN: EQU 06CDH

    TEST: EQU 2000H

    READ: EQU 2003H

    WRITE: EQU 2006H

    ; * PROGRAM - 5) USING INTERRUPTS OF 8031.

    ; THIS PROGRAM TO BE DOWNLOADED & EXECUTED AT 6280H

    ORG 61E0H

    ;MAIN

    INTRPT: MOV 0A8H,#00H ;PUT OFF ALL INTS.

    SETB 8AH ;INT1 SET FOR FALLING EDGE TRIGGER

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; SETB 88H ;INT-0 SET FOR FALLING EDGE TRIGGER

    MOV DPTR,#ISR1 ;ADDS OF ISR.

    MOV R3,DPL ;LOWER IN R3

    MOV R4,DPH ;HIGHER IN R4

    MOV DPTR,#IE1 ;VECTOR-FOR INT1 IN SCPD.RAM(2026H)

    94

  • ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; MOV DPTR,#IE0 ;INT-0 VECTOR INIT. IN SCPD.RAM (2020H)

    LCALL TERN ;INIT A VECTOR IN SCPD RAM;i.e. 'JMP ISR1'

    LUP1: LCALL CRLF

    MOV DPTR,#MSG1 ;POINT TO MSG ;"JAIHIND"

    LCALL MSGOUT ;O/P A STRING.

    HERE: JB 0B3H,HERE ;WAIT TILL INT1 LINE IS HIGH

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; JB 0B2H,HERE ;WAIT TILL INT0 LINE HIGH

    MOV 0A8H,#84H ;ENABLE INT1

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; MOV 0A8H,#81H ;ENABLE INT-0

    NOP

    NOP ;LET 8031 TAKE

    ;THE INTERUPT

    SJMP LUP1

    ;NOW GIVE A LOW GOING PULSE TO INT1 ON PIN 15 OF HEADER.

    ;YOU MAY APPLY THE PULSE BY MOMENTARY SHORTING PIN 2(GND)

    ;& PIN 15 (INT-1) OF HEADER BY A WIRE.ANY WAY THIS IS A SHORTCUT

    ;& IF YOU ARE USING INT-0 THEN PIN-1(INT-0) IN PLACE OF PIN-15

    ;ISR FOR INT1.

    ISR1: MOV 0A8H,#00H ;DISABLE ALL INTS.

    95

  • ISRN: JNB 0B3H,ISRN ;DEBOUNCE..

    IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; JNB 0B2H,ISRN ;DEBOUNCE...

    MOV R0,#0FFH

    DBON: DJNZ R0,DBON ;DELAY DEBOUNCE

    JNB 0B3H,ISRN ;CHK STILL..

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; JNB 0B2H,ISRN ;CHK STILL..

    LCALL CRLF

    MOV DPTR,#MSG2

    LCALL MSGOUT ;O/P MSG."ANSH 51"

    MOV R0,#05H

    MOV R1,#0FFH

    MOV R2,#0FFH

    MORD: LCALL DELAY ;PASS TIME.

    DJNZ R0,MORD ;MORE DELAY

    RETI ;RETURN FROM INT.

    MSG1:DFB "JAIHIND",03H ;MAIN DISPLAY

    MSG2:DFB "ANSH 51",03H ;ISR DISPLAY

    96

  • OUTPUT:

    . 00E0 = A: EQU 0E0H

    00F0 = B: EQU 0F0H

    0000 = R0: EQU 00H ;REGISTER BANK-0

    0001 = R1: EQU 01H

    0002 = R2: EQU 02H

    0003 = R3: EQU 03H

    0004 = R4: EQU 04H

    0005 = R5: EQU 05H

    0006 = R6: EQU 06H

    0007 = R7: EQU 07H

    0081 = SP: EQU 81H ;STACK POINTER

    0089 = TMOD: EQU 89H ;TIMER MODE REG.

    0088 = TCON: EQU 88H ;TIMER CONTROL REG.

    008C = TH0: EQU 8CH ;TIMER-0 REG.HIGH BYTE

    008A = TL0: EQU 8AH ;TIMER-0 REG.LOW BYTE

    008D = TH1: EQU 8DH ;TIMER-1 REG.HIGH BYTE

    008B = TL1: EQU 8BH ;TIMER-1 REG.LOW BYTE

    0082 = DPL: EQU 82H ;16-BIT "DPTR" POINTER

    0083 = DPH: EQU 83H

    0082 = DPTR: EQU DPL

    2023 = SPDTF0: EQU 2023H ;EXT.MEM.SCPD.VECTOR ADDR.FOR TF0

    2029 = SPDTF1: EQU 2029H ;EXT.MEM.SCPD.VECTOR ADDR.FOR TF1

    2010 = CUR: EQU 2010H

    97

  • 2020 = IE0: EQU 2020H

    2026 = IE1: EQU 2026H

    ;---- PERIPHERAL EQUATES ----------

    ; FOR 8031/V51 KIT ; FOR UNI-8 KIT,8031 MODULE

    2808 = UPA55: EQU 2808H ; UPA55: EQU 2800H

    2809 = UPB55: EQU 2809H ; UPB55: EQU 2801H

    280A = UPC55: EQU 280AH ; UPC55: EQU 2802H

    280B = UCS55: EQU 280BH ; UCS55: EQU 2803H

    2800 = DTA79: EQU 2800H ; DTA79: EQU 2810H

    2801 = CW79: EQU 2801H ; CW79: EQU 2811H

    ;---- MONITOR UTILITIES USED IN PROGRAMS EQUATES ---

    ;---- ONLY THE NECESSARY MON.UTILITIES ARE LISTED HERE --

    061D = CRLF: EQU 061DH

    062C = WR79: EQU 062CH

    01F3 = WRSR: EQU 01F3H

    0230 = RDBUF: EQU 0230H

    059E = NOUT: EQU 059EH

    0114 = DELAY: EQU 0114H

    045F = RCVN: EQU 045FH

    0503 = TST79: EQU 0503H

    0606 = MSGOUT: EQU 0606H

    047B = NMIN: EQU 047BH

    98

  • 06D8 = CMDMOD: EQU 06D8H

    06DB = CMDWDP: EQU 06DBH

    03D8 = WRTCR: EQU 03D8H

    06CD = TERN: EQU 06CDH

    2000 = TEST: EQU 2000H

    2003 = READ: EQU 2003H

    2006 = WRITE: EQU 2006H

    ; * PROGRAM - 5) USING INTERRUPTS OF 8031.

    ;

    ; THIS PROGRAM ILLUSTRATES HOW TO USE EXTERNAL INTERRUPTS

    ; (INT-0 & INT-1) OF 8031. HOW TO INIT & HOW TO WRITE ISR

    ; FOR INTERRUPT. IN THIS PROGRAM IN MAIN LOOP "JAIHIND"

    ; IS DISPLAYED. NOW APPLYING A PULSE (HIGH TO LOW TRANSITION)

    ; TO PIN-15 ON HEADER (i.e. INT1 OF 8031). IN THE "ISR" FOR

    ; "INT-1" IT DISPLAYS "ANSH 51" FOR DURATION SET BY DELAY.

    ; USER CAN ALSO TRY OUT USING "INT-0" LINE OF 8031, BUT IN

    ; THAT CASE "SINGLE STEPPING" CAN NOT BE USED.

    ; THIS PROGRAM TO BE DOWNLOADED & EXECUTED AT 6280H

    61E0 ORG 61E0H

    ;MAIN

    61E0 75A800 INTRPT: MOV 0A8H,#00H ;PUT OFF ALL INTS.

    61E3 D28A SETB 8AH ;INT1 SET FOR FALLING EDGE TRIGGER

    99

  • ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; SETB 88H ;INT-0 SET FOR FALLING EDGE TRIGGER

    61E5 906205 MOV DPTR,#ISR1 ;ADDS OF ISR.

    61E8 AB82 MOV R3,DPL ;LOWER IN R3

    61EA AC83 MOV R4,DPH ;HIGHER IN R4

    61EC 902026 MOV DPTR,#IE1 ;VECTOR-FOR INT1 IN SCPD.RAM(2026H)

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; MOV DPTR,#IE0 ;INT-0 VECTOR INIT. IN SCPD.RAM (2020H)

    61EF 1206CD LCALL TERN ;INIT A VECTOR IN SCPD RAM

    ;i.e. 'JMP ISR1'

    61F2 12061D LUP1: LCALL CRLF

    61F5 906227 MOV DPTR,#MSG1 ;POINT TO MSG

    ;"JAIHIND"

    61F8 120606 LCALL MSGOUT ;O/P A STRING.

    61FB 20B3FD HERE: JB 0B3H,HERE ;WAIT TILL INT1 LINE IS HIGH

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    100

  • ; JB 0B2H,HERE ;WAIT TILL INT0 LINE HIGH

    61FE 75A884 MOV 0A8H,#84H ;ENABLE INT1

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; MOV 0A8H,#81H ;ENABLE INT-0

    6201 00 NOP

    6202 00 NOP ;LET 8031 TAKE

    ;THE INTERUPT

    6203 80ED SJMP LUP1

    ;NOW GIVE A LOW GOING PULSE TO INT1 ON PIN 15 OF HEADER.

    ;YOU MAY APPLY THE PULSE BY MOMENTARY SHORTING PIN 2(GND)

    ;& PIN 15 (INT-1) OF HEADER BY A WIRE.ANY WAY THIS IS A SHORTCUT

    ;& IF YOU ARE USING INT-0 THEN PIN-1(INT-0) IN PLACE OF PIN-15

    ;ISR FOR INT1.

    6205 75A800 ISR1: MOV 0A8H,#00H ;DISABLE ALL INTS.

    6208 30B3FD ISRN: JNB 0B3H,ISRN ;DEBOUNCE..

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    101

  • ; JNB 0B2H,ISRN ;DEBOUNCE...

    620B 78FF MOV R0,#0FFH

    620D D8FE DBON: DJNZ R0,DBON ;DELAY DEBOUNCE

    620F 30B3F6 JNB 0B3H,ISRN ;CHK STILL..

    ; IF YOU WANT TO USE INT-0 IN THE PLACE OF INT-1 THEN

    ; REPLACE THE IMMEDIATLY ABOVE INSTRUCTION WITH

    ; JNB 0B2H,ISRN ;CHK STILL..

    6212 12061D LCALL CRLF

    6215 90622F MOV DPTR,#MSG2

    6218 120606 LCALL MSGOUT ;O/P MSG."ANSH 51"

    621B 7805 MOV R0,#05H

    621D 79FF MOV R1,#0FFH

    621F 7AFF MOV R2,#0FFH

    6221 120114 MORD: LCALL DELAY ;PASS TIME.

    6224 D8FB DJNZ R0,MORD ;MORE DELAY

    6226 32 RETI ;RETURN FROM INT.

    6227 4A41494849MSG1:DFB "JAIHIND",03H ;MAIN DISPLAY

    622F 414E534820MSG2:DFB "ANSH 51",03H ;ISR DISPLAY

    102

  • EXP. NO.13: UART OPERATION IN 8051

    AIM: Write ALP Of UART operation in 8051.

    APPARATUS: PC,KEIL microvision

    PROGRAM:

    ORG 00H

    MOV TMOD,#20H

    MOV TH1,#-3

    MOV SCON,#50H

    SETB TR1

    //AGAIN:

    MOV A,#"A"

    ACALL TRANS

    MOV A,#"N"

    ACALL TRANS

    MOV A,#"U"

    ACALL TRANS

    MOV A,#"R"

    ACALL TRANS

    MOV A,#"A"

    ACALL TRANS

    MOV A,#"G"

    103

  • ACALL TRANS

    MOV A,#"-"

    ACALL TRANS

    MOV A,#"E"

    ACALL TRANS

    MOV A,#"C"

    ACALL TRANS

    MOV A,#"E"

    ACALL TRANS

    AGAIN:

    SJMP AGAIN

    TRANS:MOV SBUF,A

    HERE:JNB TI,HERE

    CLR TI

    RET

    END

    104

  • OUTPUT:

    0000 1 ORG 00H

    0000 758920 2 MOV TMOD,#20H

    0003 758DFD 3 MOV TH1,#-3

    0006 759850 4 MOV SCON,#50H

    0009 D28E 5 SETB TR1

    000B 7441 7 MOV A,#"A"

    000D 1135 8 ACALL TRANS

    000F 744E 9 MOV A,#"N"

    0011 1135 10 ACALL TRANS

    0013 7455 11 MOV A,#"U"

    0015 1135 12 ACALL TRANS

    0017 7452 13 MOV A,#"R"

    0019 1135 14 ACALL TRANS

    001B 7441 15 MOV A,#"A"

    001D 1135 16 ACALL TRANS

    001F 7447 17 MOV A,#"G"

    0021 1135 18 ACALL TRANS

    0023 742D 19 MOV A,#"-"

    0025 1135 20 ACALL TRANS

    0027 7445 21 MOV A,#"E"

    0029 1135 22 ACALL TRANS

    002B 7443 23 MOV A,#"C"

    002D 1135 24 ACALL TRANS

    105

  • 002F 7445 25 MOV A,#"E"

    0031 1135 26 ACALL TRANS

    0033 27 AGAIN:

    0033 80FE 28 SJMP AGAIN

    0035 F599 29 TRANS:MOV SBUF,A

    0037 3099FD 30 HERE:JNB TI,HERE

    003A C299 31 CLR TI

    003C 22 32 RET

    END

    106

  • EXP.NO.15: INTERFACING LCD TO 8051.

    AIM: Interface an LCD with 8051 microcontroller.

    APPARATUS:1. 8051 Trainer kit2. LCD module3. FRC cables4. Power Supply.

    PROGRAM:

    7850 START:7850 7480 MOV A,#80H 7852 90280B MOV DPTR, 7855 F0 MOVX @DPTR, A 7856 7438 MOV A,#38H 7858 127872 LCALL SENDLCDCMD 785B 740C MOV A,#0CH 785D 127872 LCALL SENDLCDCMD 7860 7401 MOV A,#01H 7862 127872 LCALL SENDLCDCMD 7865 7480 MOV A,#80H 7867 127872 LCALL SENDLCDCMD 786A 7441 MOV A,#DISP_CHAR 786C 12788A LCALL SENDLCDDAT 7852 90280B MOV DPTR, 7855 F0 MOVX @DPTR, A 7856 7438 MOV A,#38H 7858 127872 LCALL SENDLCDCMD 785B 740C MOV A,#0CH 785D 127872 LCALL SENDLCDCMD 7860 7401 MOV A,#01H 7862 127872 LCALL SENDLCDCMD 7865 7480 MOV A,#80H 7867 127872 LCALL SENDLCDCMD 786A 7441 MOV A,#DISP_CHAR 786C 12788A LCALL SENDLCDDAT 786F 120006 LCALL 0006H 7872 902809 MOV DPTR, 7875 F0 MOVX @DPTR, A 7876 7408 MOV A,#08H 7878 90280A MOV DPTR,#PORTC_8255 787B F0 MOVX @DPTR, A 787C 7400 MOV A,#00H 787E 90280A MOV DPTR,#PORTC_8255

    107

  • 7881 F0 MOVX @DPTR, A 7882 7964 MOV R1,#100D 7884 7A0A MOV R2, #10D 7886 120114 LCALL DELAY 7889 22 RET 788A 902809 MOV DPTR,#LCD_DATABUS 788D F0 MOVX @DPTR, A 788E 7428 MOV A, #28H 7890 90280A MOV DPTR,#PORTC_8255 7893 F0 MOVX @DPTR, A 7894 7420 MOV A, #20H 7896 90280A MOV DPTR,#PORTC_8255 7899 F0 MOVX @DPTR, A 789A 7901 MOV R1, #01D 789C 7A0A MOV R2, #10D 789E 120114 LCALL DELAY 78A1 22 RET

    OUT PUT: ‘HELLO WORLD’ will be displayed on the lcd

    108

  • EXP.NO.16: Interfacing Matrix/Keyboard to 8051.

    AIM: Interface a Keyboard to 8051 microcontroller.

    APPARATUS: 8051 Trainer kit, keyboard module, FRC cables, & Power Supply.

    PROGRAM:

    UPA55: EQU 280cH

    UPB55: EQU UPA55+01H

    UPC55: EQU UPB55+01H

    UCS55: EQU UPC55+01H

    LPA55: EQU 2808H

    LPB55: EQU LPA55+01H

    LPC55: EQU LPB55+01H

    LCS55: EQU LPC55+01H

    DTA79: EQU 2810H

    CSW79: EQU DTA79+01H

    TMR0: EQU 2818H

    TMR1: EQU TMR0+01H

    TMR2: EQU TMR1+01H

    CSW53: EQU TMR2+01H

    DTA51: EQU 2828H

    CSW51: EQU DTA51+01H

    ;EQUATES

    B: EQU 0F0H

    A: EQU 0E0H

    DPL: EQU 82H

    109

  • DPH: EQU 83H

    TH1: EQU 8DH

    TL1: EQU 8BH

    R0: EQU 00H ;REFER TO BNK 0 ONLY.

    R1: EQU 01H

    R2: EQU 02H

    R3: EQU 03H

    R4: EQU 04H

    R5: EQU 05H

    R6: EQU 06H

    R7: EQU 07H

    P2: EQU 0A0H

    P3: EQU 0B0H

    SP: EQU 81H

    SETPT: EQU 2200H

    LIMITBD:EQU 2201H

    ULB: EQU 2202H

    LLB: EQU 2203H

    TEMP: EQU 2204H

    ;MONITER SUBROUTINES EQUATES

    CRLF: EQU 061DH

    NMOUT: EQU 059EH

    TEST: EQU 2000H

    WRITE: EQU 2006H

    OUTMSG: EQU 0606H

    110

  • DELAY: EQU 0114H

    CMDMOD: EQU 0000H

    MOVD: EQU 031FH

    ORG 7000H

    START: MOV SP,#58H ;INIT USER STACK POINTER

    MOV A,#82H ;INIT 8255 A-AS O/P B-AS I/P

    MOV DPTR,#LCS55

    MOVX @DPTR,A

    LCALL CRLF ;FEED CR WITH NEW LINE.

    MOV DPTR,#20B0H ;SET BASE ADDR OF TRANSITION TABLE.

    MOV R4,#20H ;SET HIGHER END ADDR

    MOV R3,#0BFH ;SET LOWER END ADDR

    MOV A,#0FFH ;DATA TO BE MOVED

    LCALL MOVD ;SUBROUTINE FOR DATA MOVE.

    MOV DPTR,#20C0H ;SET BASE ADDR OF FINAL TABLE.

    MOV R4,#20H ;SET HIGHER END ADDR

    MOV R3,#0CFH ;SET LOWER END ADDR

    MOV A,#0FFH ;DATA TO BE MOVED

    LCALL MOVD ;SUBROUTINE FOR DATA MOVE.

    L738A: MOV A,#07H ;SET MAX SCAN LINE

    MOV DPTR,#20D0H

    MOVX @DPTR,A

    MOV A,#00H ;SET CURRENT SCAN LINE

    MOV DPTR,#20D1H

    MOVX @DPTR,A

    111

  • MOV A,#0FEH

    L7396: MOV DPTR,#20D2H ;DECODED INFO OF CURRENT SCAN

    MOVX @DPTR,A ;LINE SET SCAN LINE.

    MOV DPTR,#LPC55 ;

    MOVX @DPTR,A ;

    MOV DPTR,#20D1H ;

    MOVX A,@DPTR ;

    MOV R1,A ;MOV C,A

    MOV A,#0B0H ;

    ADD A,R1 ;MOVC A,@A+DPTR

    MOV DPL,A ;

    MOV DPH,#20H ;POINTER TO 20B0+

    MOVX A,@DPTR ;MOV A,M

    MOV R2,A ;MOV B,M

    PUSH DPL

    PUSH DPH

    MOV DPTR,#LPB55 ;GET PRESENT KEY ENTRIES

    MOVX A,@DPTR

    ORL A,#0FCH ;DESABLE UNUSED RETURN LINES

    POP DPH

    POP DPL

    MOVX @DPTR,A ;

    ORL A,R2

    MOV R7,A ;STORE ACC

    112

  • MOV A,R1

    MOV A,#0C0H ;GET THE CONTENTS FROM FINAL

    ADD A,R1 ;MOVC A,@A+DPTR,TABLE & SAVE NEW FOR N-KEY ROLLOVER.

    MOV DPL,A

    MOV DPH,#20H

    MOVX A,@DPTR

    MOV R1,A ;

    MOV A,R7 ;

    MOVX @DPTR,A

    CPL A ;COMPLIMENT TO FIND DEBOUNCED KEY ENTRY INDICATED BY

    ANL A,R1 ;0 BIT IN CURRENT SCAN LINE.

    CPL A

    CJNE A,0FFH,YESKEY ;IF ACC=FF NO KEY PRESSED.

    L73F8: PUSH R1

    PUSH R2

    MOV R1,#01H ;DEBOUNCE DELAY IS SET IN

    MOV R2,#00H

    LCALL DELAY ;

    POP R2

    POP R1

    LCALL TEST ;CHECK KBD ONCE FOR KEY PRESSED

    JNC L740A ;JUMP TO GET MAX SCAN LINE IF NO KEYPRESSED

    CJNE A,#1BH,L740A

    LJMP CMDMOD ;IF "ESC" PRESSED GOTO COMMAND MODE

    113

  • L740A: MOV DPTR,#20D0H ;GET MAX SCAN LINE LIMIT

    MOVX A,@DPTR

    MOV R1,A

    MOV DPTR,#20D1H ;GET CURRENT SCAN LINE LIMIT

    MOVX A,@DPTR

    CLR C

    PUSH A

    SUBB A,R1

    POP A

    JNC L738A ;JUMP TO RESET DDLOC & SCAN LINE

    INC A ;ELSE SET FOR NEXT SCAN LINE

    MOV DPTR,#20D1H

    MOVX @DPTR,A

    MOV DPTR,#20D2H

    MOVX A,@DPTR

    RLC A

    LJMP L7396

    YESKEY:

    MOV R1,A ;CORRESPONDING ASCII CODE.

    MOV DPTR,#20D1H ;LOAD CURRENT SCAN LINE LIMIT.

    MOVX A,@DPTR

    INC A ;INCREMENT THE SCAN LINE NO

    MOV R2,A

    MOV DPTR,#L7420 ;POINTER TO KEYLIST TO DISPLAY

    L73C6: MOVX A,@DPTR ;GET SCAN LINE NO FROM TABLE

    114

  • CJNE A,R2,L73CB

    L73E1: INC DPTR

    MOVX A,@DPTR ;GET NEXT KEY CODE

    INC A

    CJNE A,#00H,LOOP3 ;JZ L73F8,END OF PRESENT KEY BUNCH

    LJMP L73F8

    LOOP3: MOV A,R1

    RRC A ;IF CARRY=1 INVALID KEY

    MOV R1,A

    JC L73E1 ;JMP TO CHK NEXT KEY IF CY=1,ELSE FETCH ASCII CODE

    MOVX A,@DPTR

    CJNE A,#00H,LOOP1 ;IS KEY IS VALID

    LJMP DSPLY ;JUMP TO DISPLAY "?" FOR INVALID KEY DETECTION.

    LOOP1: LCALL WRITE ;ELSE DISPLAY ASCII CODE FOR CURRENT KEYCLOSURE.

    LJMP L73E1 ;CHECK FOR NEXT KEY CLOSURE.

    L73CB: INC DPTR

    MOVX A,@DPTR ;GET SCAN LINE NO. FROM NEXT SCAN LINE ENTRY.

    INC A

    CJNE A,#00H,L73CB

    INC DPTR

    MOVX A,@DPTR

    CJNE A,0FFH,L73C6 ;IS IT END OF KEY LIST,IF NOT GO FOR NEXT

    DSPLY: MOV A,#"?" ;ELSE DISPLAY "?" FOR INVALID KEY ENTRY

    LCALL WRITE

    LJMP L73F8

    115

  • DSPLY1: MOV A,#30H ;ELSE DISPLAY "?" FOR INVALID KEY ENTRY

    LCALL WRITE

    LJMP DSPLY1

    L7420: DFB 01H ;SCAN LINE NO.1

    DFB 30H ;R0 FIRST RETURN LINE "0"

    DFB 38H ;R1 SECOND RETURN LINE "8"

    DFB 32H

    DFB 0FFH ;END OF KEYS IN SCAN 1

    DFB 02H ;

    DFB 31H ;RETURN LINE "1"

    DFB 39H ;RETURN LINE "9"

    DFB 0FFH ;END OF KEYS IN SCAN 2

    DFB 03H

    DFB 32H ;ASCII OF "2"

    DFB 41H ;ASCII OF "A"

    DFB 0FFH ;END OF KEYS IN SCAN 3

    DFB 04H

    DFB 33H ;ASCII OF "3"

    DFB 42H ;ASCII OF "B"

    DFB 0FFH ;END OF KEYS IN SCAN 4

    DFB 05H

    DFB 34H ;ASCII OF "4"

    DFB 43H ;ASCII OF "C"

    DFB 0FFH ;END OF KEYS IN SCAN 5

    DFB 06H

    116

  • DFB 35H ;ASCII OF "5"

    DFB 44H ;ASCII OF "D"

    DFB 0FFH ;END OF KEYS IN SCAN 6

    DFB 07H

    DFB 36H ;ASCII OF "6"

    DFB 45H ;ASCII OF "E"

    DFB 0FFH ;END OF KEYS IN SCAN 7

    DFB 08H

    DFB 37H ;ASCII OF "7"

    DFB 46H ;ASCII OF "F"

    DFB 0FFH ;END OF KEYS IN SCAN 8

    DFB 0FFH

    END

    117

  • OUTPUT:

    280C = UPA55: EQU 280cH

    280D = UPB55: EQU UPA55+01H

    280E = UPC55: EQU UPB55+01H

    280F = UCS55: EQU UPC55+01H

    2808 = LPA55: EQU 2808H

    2809 = LPB55: EQU LPA55+01H

    280A = LPC55: EQU LPB55+01H

    280B = LCS55: EQU LPC55+01H

    2810 = DTA79: EQU 2810H

    2811 = CSW79: EQU DTA79+01H

    2818 = TMR0: EQU 2818H

    2819 = TMR1: EQU TMR0+01H

    281A = TMR2: EQU TMR1+01H

    281B = CSW53: EQU TMR2+01H

    2828 = DTA51: EQU 2828H

    2829 = CSW51: EQU DTA51+01H

    ;EQUATES

    00F0 = B: EQU 0F0H

    00E0 = A: EQU 0E0H

    0082 = DPL: EQU 82H

    0083 = DPH: EQU 83H

    008D = TH1: EQU 8DH

    008B = TL1: EQU 8BH

    0000 = R0: EQU 00H ;REFER TO BNK0 ONLY.

    118

  • 0001 = R1: EQU 01H

    0002 = R2: EQU 02H

    0003 = R3: EQU 03H

    0004 = R4: EQU 04H

    0005 = R5: EQU 05H

    0006 = R6: EQU 06H

    0007 = R7: EQU 07H

    00A0 = P2: EQU 0A0H

    00B0 = P3: EQU 0B0H

    0081 = SP: EQU 81H

    2200 = SETPT: EQU 2200H

    2201 = LIMITBD:EQU 2201H

    2202 = ULB: EQU 2202H

    2203 = LLB: EQU 2203H

    2204 = TEMP: EQU 2204H

    ;MONITER SUBROUTINES EQUATES

    061D = CRLF: EQU 061DH

    059E = NMOUT: EQU 059EH

    2000 = TEST: EQU 2000H

    2006 = WRITE: EQU 2006H

    0606 = OUTMSG: EQU 0606H

    0114 = DELAY: EQU 0114H

    0000 = CMDMOD: EQU 0000H

    031F = MOVD: EQU 031FH

    119

  • 7000 758158 START: MOV SP,#58H ;INIT USER STACK POINTER

    7003 7482 MOV A,#82H ;INIT 8255 A-AS O/P B-AS I/P

    7005 90280B MOV DPTR,#LCS55

    7008 F0 MOVX @DPTR,A

    7009 12061D LCALL CRLF ;FEED CR WITH NEW LINE.

    700C 9020B0 MOV DPTR,#20B0H