Professional Documents
Culture Documents
TPC
032
III YEAR B.TECH ECE &EIE –II SEMESTER
(EC 05401)MICROPROCESSORS LAB
I. Microprocessor 8086:
1. Introduction to MASM/TASM.
2. Arithmetic operation – Multi byte Addition and Subtraction, Multiplication
and Division – Signed and unsigned Arithmetic operation, ASCII – arithmetic
operation.
3. Logic operations – Shift and rotate – Converting packed BCD to unpacked
BCD, BCD to ASCII conversion.
4. By using string operation and Instruction prefix: Move Block, Reverse string,
Sorting, Inserting, Deleting, Length of the string, String comparison.
5. DOS/BIOS programming: Reading keyboard (Buffered with and without
echo) – Display characters, Strings.
II. Interfacing:
I. Microprocessor 8086:
1. Introduction to MASM/TASM.
2. Arithmetic operation – Multi byte Addition and Subtraction, Multiplication
and Division – Signed and unsigned Arithmetic operation, ASCII – arithmetic
operation.
3. Logic operations – Shift and rotate – Converting packed BCD to unpacked
BCD, BCD to ASCII conversion.
4. By using string operation and Instruction prefix: Move Block, Reverse string,
Sorting, Inserting, Deleting, Length of the string, String comparison.
5. DOS/BIOS programming: Reading keyboard (Buffered with and without
echo) – Display characters, Strings.
II. Interfacing:
3. Interfacing of DAC
EXPT NO.1
INTRODUCTION TO TASM/MASM
1. ENTERING A PROGRAM
2. ASSEMBLING A PROGRAM
3. LINKING A PROGRAM
4. USING DEBUG
ENTERING A PROGRAM:
BEFORE STARTING THE PROCESS, ENSURE THE ALL THE FILES i.e.,
EDITOR, ASSEMBLER, LINKER AND DEBUGGER ARE AVAILABLE IN THE SAME
DIRECTORY IN WHICH YOU ARE WORKING.
C>NE→GET DISPLAY
THEN TYPE THE PROGRAM AND CHECK ANY TYPING MISTAKE AND
SYNTAX ERRORS. BEFORE QUIT THE EDITOR PROGRAM DO NOT FORGET TO
SAVE IT. A NUMBER OF TEXT EDITORS ARE AVAILABLE IN THE MARKET EX:
NORTON EDITOR (NE), TURBO C (FTC), EDLIN etc.
DATA SEGMENT
.
.
DATA ENDS
CODE SEGMENT
START:
.
.
.
CODE ENDS
END START
ASSEMBLING A PROGRAM:
MICROSOFT MACRO ASSEMBLER IS ONE OF THE EASY TO USE AND
POPULAR ASSEMBLERS. ASSEMBLER ACCEPTS THE TEXT ASSEMBLY
LANGUAGE PROGRAM FILE AS INPUT AND PREPARES AN OBJECT FILE. i.e.,
MASM ACCEPTS THE FILE NAMES ONLY WITH THE EXTENSION.ASM.
THE OBJECT FILE IS CREATED WITH THE ENTERED NAME WITH .OBJ
EXTENSION. THE .OBJ FILE CONTAINS THE CODED OBJECT MODULES OF THE
PROGRAM TO BE ASSEMBLED.
LINKING A PROGRAM:
USING DEBUG:
PRESS R THEN
T
.
.
.
.
Q
DEBUG COMMANDS:
ADDITION:
DATA SEGMENT
A DB 02H, 20H, 08H, 70H
B DB 03H, 04H, 05H, 06H
SUM DB 5 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
LEA SI, A+3
LEA DI, B+3
LEA BX, SUM+4
MOV CX, COUNT
CLC
LP: MOV AL, [SI]
ADC AL, [DI]
MOV BYTE PTR [BX],AL
DEC SI
DEC DI
DEC BX
LOOP LP
JNC LP1
MOV BYTE PTR [BX], 01H
LP1: MOV AH, 4CH
INT 21H
CODE ENDS
END START
SUBTRACTION:
DATA SEGMENT
A DB 02H, 20H, 08H, 70H
B DB 03H, 04H, 05H, 06H
SUM DB 5 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A+3
LEA DI,B+3
LEA BX,SUM+4
MOV CX,COUNT
CLC
LP: MOV AL,[SI]
SBB AL,[DI]
MOV BYTE PTR[BX],AL
DEC SI
DEC DI
DEC BX
LOOP LP
JNB LP1
MOV BYTE PTR[BX],01H
LP1: MOV AH,4CH
INT 21H
CODE ENDS
END START
MULTIPLICATION:
DATA SEGMENT
A DB 02H, 20H, 08H, 70H
B DB 03H, 04H, 05H, 06H
SUM DB 8 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A
LEA DI,B
LEA BX,SUM
MOV CX,COUNT
CLC
LP: MOV AL,[SI]
MUL BYTE PTR[DI]
MOV WORD PTR[BX],AX
INC SI
INC DI
INC BX
INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
DIVISION:
DATA SEGMENT
A DW 0282H, 0820H, 0678H, 0790H
B DB 30H, 40H, 50H, 60H
SUM DB 8 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A
LEA DI,B
LEA BX,SUM
MOV CX,COUNT
CLC
LP: MOV AX,[SI]
DIV BYTE PTR[DI]
MOV WORD PTR[BX],AX
INC SI
INC SI
INC DI
INC BX
INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
ARITHEMATIC OPERATIONS ON MULTIBYTE SIGNED NUMBERS
ADDITION:
DATA SEGMENT
A DB 92H, 80H, 88H, 87H
B DB 03H, 04H, 05H, 06H
SUM DB 5 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A+3
LEA DI,B+3
LEA BX,SUM+4
MOV CX,COUNT
CLC
LP: MOV AL,[SI]
ADC AL,[DI]
MOV BYTE PTR[BX],AL
DEC SI
DEC DI
DEC BX
LOOP LP
JNC LP1
MOV BYTE PTR[BX],01H
LP1: MOV AH,4CH
INT 21H
CODE ENDS
END START
SUBSTRACTION:
DATA SEGMENT
A DB 02H, 20H, 08H, 70H
B DB 93H, 84H, 95H, 86H
SUM DB 5 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A+3
LEA DI,B+3
LEA BX,SUM+4
MOV CX,COUNT
CLC
LP: MOV AL,[SI]
SBB AL,[DI]
MOV BYTE PTR[BX],AL
DEC SI
DEC DI
DEC BX
LOOP LP
JNB LP1
MOV BYTE PTR[BX],01H
LP1: MOV AH,4CH
INT 21H
CODE ENDS
END START
MULTIPLICATION:
DATA SEGMENT
A DB 92H, 80H, 88H, 97H
B DB 03H, 04H, 05H, 06H
SUM DB 8 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A
LEA DI,B
LEA BX,SUM
MOV CX,COUNT
CLC
LP: MOV AL,[SI]
IMUL BYTE PTR[DI]
MOV WORD PTR[BX],AX
INC SI
INC DI
INC BX
INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
DIVISION:
DATA SEGMENT
A DW 0282H, 0820H, 0678H, 0790H
B DB 30H, 40H, 50H, 60H
SUM DB 8 DUP(0)
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A
LEA DI,B
LEA BX,SUM
MOV CX,COUNT
CLC
LP: MOV AX,[SI]
IDIV BYTE PTR[DI]
MOV WORD PTR[BX],AX
INC SI
INC SI
INC DI
INC BX
INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
ARITHEMATIC OPERATIONS ON MULTIBYTE ASCII NUMBERS
ASCII ADDITION:
DATA SEGMENT
ASC1 DB ‘568’
ASC2 DB ‘684’
ASCSUM DB ‘0000’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
CLC
LEA SI,ASC1+2
LEA DI,ASC2+2
LEA BX,ASCSUM+3
MOV CX,03
A20: MOV AH,00
MOV AL,[SI]
ADC AL,[DI]
AAA
MOV [BX],AL
DEC SI
DEC DI
DEC BX
LOOP A20
MOV [BX],AH
LEA BX,ASCSUM+3
MOV CX,04
A30: OR BYTE PTR[BX],30H
DEC BX
LOOP A30
MOV AX,4C00H
INT 21H
CODE ENDS
END START
ASCII SUBSTRACTION:
DATA SEGMENT
ASC1 DB ‘568’
ASC2 DB ‘684’
ASCSUM DB ‘0000’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
CLC
LEA SI,ASC1+2
LEA DI,ASC2+2
LEA BX,ASCSUM+3
MOV CX,03
A20: MOV AH,00
MOV AL,[SI]
SBB AL,[DI]
AAS
MOV [BX],AL
DEC SI
DEC DI
DEC BX
LOOP A20
JNB LP
MOV [BX],01H
LP: LEA BX,ASCSUM+3
MOV CX,04
A30: OR BYTE PTR[BX],30H
DEC BX
LOOP A30
MOV AX,4C00H
INT 21H
CODE ENDS
END START
ASCII MULTIPLICATION:
DATA SEGMENT
MULCND DB ‘3657’
MULTPLR DB ‘6’
PRODUCT DB 5 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,04
LEA SI,MULCND+3
LEA DI,PRODUCT+4
AND MULTPLR,0FH
A20: MOV AL,[SI]
AND AL,0FH
MUL MULTPLR
AAM
ADD AL,[DI]
AAA
MOV [DI],AL
DEC DI
MOV [DI],AH
DEC SI
LOOP A20
LEA BX,PRODUCT+4
MOV CX,05
A30: OR BYTE PTR[BX],30H
DEC BX
LOOP A30
MOV AX,4C00H
INT 21H
CODE ENDS
END START
ASCII DIVISION:
DATA SEGMENT
DIVDND DB ‘3698’
DIVSOR DB ‘4’
QUOTNT DB 4 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,04
SUB AH,AH
AND DIVSOR 0FH
LEA SI,DIVDND
LEA DI,QUOTNT
A20: MOV AL,[SI]
AND AL,0FH
AAD
DIV DIVSOR
MOV [DI],AL
INC SI
INC DI
LOOP A20
MOV [DI],AH
LEA DI,QUOTNT
MO0V CX,05
LP: OR BYTE PTR[DI],AH
DEC DI
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
EXPT.NO.3
DATA SEGMENT
BCD DB 35H
UNBCD DB ‘00’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,BCD
LEA DI,UNBCD
MOV AL,[SI]
MOV AH,00
MOV CL,04
SHL AX,CL
ROL AL,CL
MOV [DI],AH
INC DI
MOV [DI],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
BCD TO ASCII:
DATA SEGMENT
BCD DB 57H
ASC DB ‘00’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,BCD
LEA DI,ASC
MOV AL,[SI]
MOV AH,33H
MOV CL,04
ROL AX,CL
ROL AL,CL
MOV [DI],AH
INC DI
MOV [DI],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
EXPT.NO.4
BY USING THE STRING OPERATION AND INSTRUCTION
PREFIX MOVE BLOCK, REVERSE STRING, SORTING,
INSERTING, DELETING, LENGTH OF THE STRING,STRING
COMPARISION.
DATA SEGMENT
STR1 DB “ENTER ANY STRING”, “$”
STR2 DB “DO YOU WANT TO CENTRE POSITION”,”$”
PARLIST LABEL BYTE
MAXLEN DB 20
NAMELEN DB ?
NAMEFLD 21 DUP(“$”)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
XOR AX,AX
MOV AH,09H
LEA DX,STR1 ; display the string1
INT 21H
MOV AH,0AH
LEA DX,PARLIST ; read the string
INT 21H
MOV AX,0600H
MOV BH,30
MOV CX,0000 ;screen settings
MOV DX,384FH
INT 10H
MOV AH,09H
LEA DX,STR2 ; display the string2
INT 10H
MOV AH,01H ; 01 for read with echo,
INT 21H 07 for without echo
CMP AL, ‘Y’
JNZ LP1
MOV AH,02H
MOV BH,00 :page no.1
MOV DH,12 :12th row in page1
MOV DL,40 :40TH column in page1
INT 10H
LP1: MOV AH,09H
LEA DX,NAMEFLD
INT 21H
MOV AH,4CH
CODE ENDS
END START
EXPT NO: 6
8259 -INTERRUPT CONTROLER
; FILENAME : I8259_1.ASM
; PROCESSOR : I8086
; VER. : V1.1
CODE SEGMENT
ASSUME CS: CODE, DS:CODE,ES:CODE,SS:CODE
INTA EQU 007CH
INTA2 EQU INTA+2
LCDC EQU 00H
LCDC_S EQU 02H
LCDD EQU 04H
INT_V EQU 040H*4
INT_V1 EQU 041H*4
STACK EQU 0540H
ORG 1000H
XOR BX,BX
MOV ES,BX
MOV SS,BX
MOV DS,AX
MOV SP,STACK
MOV AX,OFFSET INTR0
MOV BX,INT_V
MOV WORD PTR ES:[BX],AX
XOR AX,AX
MOV WORD PTR ES:[BX+2],A
MOV AX,OFFSET INTR1
MOV BX,INT_V1
MOV WORD PTR ES:[BX],AX
CALL INIT
STI
L2: NOP
JMP L2
ORG 1100H
INTR0: CLI
MOV DX,OFFSET CUSOR1
JMP DISP
INT 03
ORG 1110H
INIT : ICW1
MOV AL, 0010011B
OUT INTA,AL ;ICW2 interrupt vector
MOV AL,40H
OUT INTA2,AL ;ICW4
MOV AL,00000011B
OUT INTA2,AL ;interrupt mask
MOV AL,11000000B
OUT INTA2,AL
RET
ORG 1180H
DISP: CALL LCD
NOP
STI
RET
LCD: CALL ALLCLR
MOV SI,DX
CALL STRING
RET
ORG 1220H
CUSOR1 DB 'INTERRUPT IR0',00H,00H
ORG 1240H
CUSOR2 DB 'INTERRUPT IR1',00H,00H
LCD instruction
ALLCLR: MOV AH,01H
JMP LNXX
DISPOFF:
MOV AH,08H
JMP LNXX
CODE ENDS
END
EXPT NO: 7
CODE SEGMENT
ASSUME CS: CODE, DS: CODE, SS: CODE, ES: CODE
ORG 1000H
MOV CX,08H
MOV AL,00H
MOV DX,007EH ; Routine to clear
OUT DX,AL ; all displays
MOV AL,90H
OUT DX,AL
RPT: MOV AL,00H ; 8 8-bit character
MOV DX,007CH ; display Left
OUT DX,AL ; entry, Encoded
LOOP RPT ; scan keyboard
MOV DX,007EH
MOV AL,10H
OUT DX,AL
MOV DX,007FH
MOV AL,90H ; Write to 8279
OUT DX,AL ; display RAM
BCK: MOV SI,1100H ; Routine to
MOV CX,08H ; display Hi-q
BCO: MOV AL,[SI] ; Electronics
MOV DX,007CH
OUT DX,AL
INC SI
CALL DLY ; Provide some
LOOP BCO ; delay
MOV CX,08H
BC1: MOV AL,[SI]
MOV DX,007CH
OUT DX,AL
INC SI
CALL DLY
LOOP BC1
JMP BCK
DLY: PUSH CX
MOV CX,0000H
ZZ: LOOP ZZ
POP CX
RET
;Display lookup table
ORG 1100H
DB 67H,03H,04H,76H
DB 97H,83H,97H,93H
DB 87H,13H,0F3H,073H
DB 03H,93H,0D6H,04H
CODE ENDS
END
EXPT NO: 8
8255 – PPI
AIM: To generate sinusoidal signal using DAC
MOVW AX,0000
MOVW SI,9000
MOVW CX,0000
MOVB AL,80
MOVW DX,0FFE6
OUTB AL,DX
MOVW DX,0FFE2
R1: MOVB AL,[SI]
OUTB DX,AL
MOVW CX,000F
L1: LOOP L1
INCW SI
CMPW SI,903D
JNE R1
MOVW SI,9000
JMP R1
EXPT NO: 8
8255 – PPI
AIM: To interface switch
NOTES:
THE INTERFACE IS CONNECTED TO J4 TRAINER.
THE PROGRAM DISPLAYS THE POSITION OF THE SWITCH
THE PROGRAM VERIFIES THE SWITCH IN OFF POSITION
THE PROGRAM VERIFIES THE SWITCH IN ON POSITION.
THE PROGRAM STARTS AT MEMORY LOCATION 0000:4000H
PROGRAM:
8251-USART
AIM: To establish communication between two processors.
READING DATA:
THEORY: To Read a Pin of a Port on the 8051 requires that a logic 1 first be
written to that Pin . Hence FF should be written to port 1 to read all
the 8 bits.
PROGRAM:
4100 75 90 FF MOV P1 ,# FF
4103 E5 90 MOV A, P1
WRITING DATA:
THEORY: 8051 has four parallel ports. But, only port 1 is user – free as Port
2 outputs the high byte of the external memory address and port 0
outputs the low byte of the external memory address, time-
multiplexed with the byte being written or read and port 3 pins
have alternate functions.
PROGRAM:
4100 75 45 MOV A, # 45
MODE 0:
MODE 1:
#include<8051.h>
#include<serial_IO.h>
unsigned char c;
void serial_init() // Initialize UART baud rate to 9600
{
TMOD = 0X20;
TH1 = 0XFD;
TI = 1;
TR1 = 1;
SCON = 0X52;
//PCON =0x80;
}
void main()
{
serial_init();
while(1)
{
c = getchar();
putchar(c);
}
}
EXPT. NO: 13
AIM: Interface the traffic light controller and control the traffic in
different roads
ORG 2038
2038 88H,83H,F2H ;State1
88H,87H,F2H ;All ambers ON
38H,88H,F4H ;State2
78H,88H,F4H ;All ambers ON
83H,88H,F8H ;State3
87H,88H,F8H ;All ambers ON
88H,38H,F1H ;State4
88H,78H,F1H ;All ambers ON
88H,88H,00H ;State5
44H,44H,00H ;All ambers ON
2056 00H ;Dummy
EXPT. NO: 14