RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Transcript of RCE MICROPROCESSORS & MICROCONTROLLERS LAB
MICROPROCESSORS & MICROCONTROLLERS
LABORATORY MANUAL
(R13) III – B. Tech., II-Semester
ECE
DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING
RAMACHANDRA COLLEGE OF ENGINEERING, ELURU – 534 007
Accredited by NAAC with “B++” Grade
(Approved by AICTE, New Delhi & Affiliated to JNTUK: Kakinada)
West Godavari District, Andhra Pradesh
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 2
Microprocessors & Microcontrollers Lab
(R13) III – B. Tech., ECE II- Semester
Index
PART-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.
PART-II: INTERFACING WITH MICROPROCESSOR
1.8259 – Interrupt Controller-Generate an interrupt using 8259 timer. 2.8279 – Keyboard Display- Write a program to display a string of characters.
3.8255 – PPI-Write ALP to generate sinusoidal wave using PPI.
4.8251 – USART-Write a program in ALP to establish Communication between two processors.
PART-III:
MICROCONTROLLER 8051
1. Reading and Writing on a parallel port.
2. Timer in different modes. 3. Serial communication implementation.
PART-IV: INTERFACING WITH MICROCONTROLLER
1. Simple Calculator using 6 digit seven segment display and Hex Keyboard interface to 8051. 2. Alphanumeric LCD panel and Hex keypad input interface to 8051.
3. External ADC and Temperature control interface to 8051. 4. Generate different waveforms Sine, Square, Triangular, and Ramp, etc. using DAC interface to 8051; change the frequency and Amplitude.
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 3
EX: No: 1
1. INTRODUCTION
ESA 86/88-2 is a powerful general purpose micro computer system which can be
operated with 8086 CPU. It is generally supplied with 8086 CPU to 8086 uses has to just
remove 8086 as set 8086 into that socket & set an output switch.8086 & 8088 are 3 rd
generation CPU from Intel that differ primary in thirds external data paths 8086 uses 16 bit
can be generated either 8086 or 8088.
The possible difference would be in the speed of execution in either case the CPU is
operated in the max mode 1.5A: 86/88-2 can be used not only as an industrial, instrumental &
learning aid but also a development tool in R & D labs. It is a versatile system and can be
configured in a number ways as per the user requirements various options the basic system
can be easily expanded through the system bus connection. The built in assembled features
supplies the task. Case of entering assembly language program on board provision for 8087
data process makes ESA 86/88-2 useful for a number of on-board provisions is an added
feature to make a care of the frequent power failure while conducting experiment on the
trainer.
To aid the user further various optional attachments like EARUM programming audio
cassettes interface are available. ESA 86/88-2 is operated from circuit terminals or a
computer system is a connection from a keyboard
1. Examine & optionally modify the contents of memory
2. Examine & optionally modify the contents of process register
3. Assemble & de assemble 8086/88 instruction
4. Perform fast numerical computation using the optional 8087 numerical data
5. Execute the user program at the full speed user program through single step and break
Point facilities.
6. Write/read data to/from input/output parts
7. Move a block of data or program within the memory
8. Download user program into ESA 8086/88-2 from fast counter
9. Transfer code and data to/from audio cassettes is a optional audiocassette interface
10. Read the program verify and branch check EPROM or vice optional PROM
Programmable module
11. Obtain a hard copy via controls complicated parallel printer interface
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 4
SPECIFICATIONS:
CONTROL PROCESSOR: 8086 CPU or 8086 operating at 5 MHz with maximum mode
(supplied with 8086 CPU) memory cycles has wait slates and i/o cycles
CO-PROCESSOR: On board 8087 numeric data processor memory EPROM: 4JEDEC
compatible 8 bit EPROM offer the following options: 64k bytes using 27/285 or:128k bytes
using 27/2565 or :256 K bytes using 275/255 System firmware is supplied in 2x27565 the
other two sockets are for user expansion
RAM: 4JEPEC compatible slots after the following 128kb using 622565 64 KB using
2*6022565. The RAM has also a battery backup facility peripherals and controller.
8251A: programmable communications interface for social communication supporting all
standards from 110-19200.
825-3-5: programmable interval time „0‟ is used for generating basic block timer 1 and timer
11 are available for users
8255A: programmable peripherals interface devices provide us programmable I/O devices.
8288: bus controller uses for generating control signal interrupts
EXTERNAL: NMI interrupts for INTR key and keyboard INTR controlled through 8259A
on board interrupts controller provides interrupt vector for B sources complete flexibility for
selecting either off board interrupt source.
8251/JXRD4 and RXRD4
8253/OUT 1 OUT II
8255/PCD and PC3 in hand shake mode
8087/NDDI INT
INTERNAL: Interrupt sector 1-single step &31 break points monitor
CPUSIGNAL: De-multiplexed and fully differentiate signals are available on 2.50 per
ribbon cable connection
PARALLEL I/O: As per programmable I/O line/TTL compatible serial
SERIAL I/O: RS232C on-board b-type formal connection
POWER SUPPLY: +5 V at 3.0A
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 5
DEBUG COMMANDS
Assemble A[address]
Compare c[compare]
Dump d[manage]
Enter E[address list]
Fill F[range list]
Ev G[address][address]
Flux H[value][value]
Load L[address]
Input I[port]
Move M[range address]
Proceed N[path name][org list]
Quit Q
Register R[register]
Search S[range list]
True T[address][value]
Unassembled U[range]
Viva Questions
1. What is Microprocessor? 2. Define Compiler 3. Define Interpreter 4. Define Assembler 5. What is Assembly level language? 6. Abbreviate MASM & TASM 7. Differentiate micro & macro 8. Define two pass assembler 9. What are the advantages of modular programming? 10. What is linking and relocation?
11. Explain about .MODEL SMALL?
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 6
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AL= AL=
BL= BL=
MANUPLATION:
AL=
BL=
START
Copy the immediate
numbers to AX, BX registers
Perform addition on
contents of AX, BX registers
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 7
ARITHMETICOPERATIONS
EX: No: 2
ADDITION
AIM: To write an assembly language program to perform addition operation
REQUIRED SOFTWARE: MASM611
Starting address: Ending address:
ALGORITHM:
1. Start the program
2. Move the input value into the specified register.
3. Move the other value into the other specified register.
4. Perform the arithmetic addition between the two registers & store the result in the
register specified
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operands Comments
MOV AL, Copy immediate number to
AL register
MOV BL, Copy immediate number to
BL register
ADD AL,BL Add contents of AL and BL
registers
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 8
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AL= AL=
BL= BL=
MANUPLATION:
AL=
BL=
Start
Copy the immediate numbers
to AX, BX registers
Perform the subtraction between the contents of AX and BX registers
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 9
SUBTRACTION
AIM: To write an assembly language program to perform subtraction operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Move the specified immediate numbers to AL, BL registers.
3. Subtract the contents of BL from the contents of AL register the result will be stored
in the destination register.
4. Stop the program.
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AL,
Copy the immediate number
to AL register
MOV BL,
Copy the immediate number
to BL register
SUB AL,BL
Subtract content of BL with
the content of AL
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 10
FLOWCHART:
RESULT:
GIVEN INPUT: OUTPUT:
AL= AL=
BL= BL=
MANUPLATION:
AL=
BL=
START
Copy the immediate
numbers to AL, BL registers
Perform multiplication on contents of AL
and BL registers
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 11
MULTIPLICTION
AIM: To write an assembly language program to perform multiplication operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Copy the immediate numbers to AL, BL registers.
3. Perform multiplication operation between the contents of AL and BL register the
result will be stored in the destination register specified.
4. Terminate the program.
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AL,
Copy the immediate number to
AL register
MOV BL,
Copy the immediate number to
BL register
MUL BL
Multiply content of AL with the
contents of BL register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 12
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AL= AL=
BL= BL=
MANUPLATION:
AL=
BL=
START
Copy the immediate
number to AX, BL register
Divide the content of AL register with content of BL register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 13
SIGNED MULTIPLICTION
AIM: To write an assembly language program to perform signed multiplication operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
5. Start the program.
6. Copy the immediate numbers to AL, BL registers.
7. Perform multiplication operation between the contents of AL and BL regis ter the
result will be stored in the destination register specified.
8. Terminate the program.
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX,
Copy the immediate number to
AL register
MOV BX,
Copy the immediate number to
BL register
NEG BX
MUL BX
Multiply content of AL with the
contents of BL register
MOV CX,AX
NEG CX
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 14
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AL= AL=
BL= BL=
MANUPLATION:
AL=
BL=
START
Copy the immediate
number to AX, BL register
Divide the content of AL register with content of BL register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 15
DIVISION
AIM: To write an assembly language program to perform division operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Copy the immediate numbers to AL, BL registers.
3. Divide the content of AL register with content of BL register & store the result in
specified destination register.
4. Terminate the program.
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AL,
Copy the immediate number to AL
register
MOV BL,
Copy the immediate number to BL
register
DIV BL
Divide the content of AL register
with content of BL register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 16
FLOWCHART:
No
Yes
START
Move the immediate number to CX
register
Add the content of DI and the content of
AX with carry
Increment SI & DI address values by
twice
Decrement CX by
once
STOP
Initialize the SI and DI with desired address
values
Copy the content of SI into AX register
CX=0 =
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 17
SIGNED DIVISION
AIM: To write an assembly language program to perform signed division operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
5. Start the program.
6. Copy the immediate numbers to AL, BL registers.
7. Divide the content of AL register with content of BL register & store the result in
specified destination register.
8. Terminate the program.
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX,
Copy the immediate number to AL
register
MOV BX,
Copy the immediate number to BL
register
NEG AX
DIV BX
Divide the content of AL register
with content of BL register
MOV CX,AX
NEG CX
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 18
FLOWCHART:
No
Yes
START
Move the immediate number to CX
register
Add the content of DI and the content of
AX with carry
Increment SI & DI address values by
twice
Decrement CX by
once
STOP
Initialize the SI and DI with desired address
values
Copy the content of SI into AX register
CX=0 =
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 19
MULTI BYTE OPERATIONS
Ex: No: 2
MULTIBYTE ADDITION
AIM: To write an assembly language program to perform Multibyte addition using
MASM611.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Move the immediate number to CX register.
3. Initialize the source index pointer SI and destination index DI with the specified
address value to point out the desired memory locations.
4. Copy the content of SI into AL register.
5. Perform the addition with carry operation between the content of DI and the content
of AL & store the result in specified destination register.
6. Increment the SI and DI address values by 2 times.
7. Decrement the value of CX register by one.
8. Repeat the step5 to step8 until the condition “CX=0” has been satisfied.
9. When “CX=0” then continue the next step of the main program.
10. Terminate the program.
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 20
RESULT:
INPUT:
Source index:
Input address Value
Destination index:
Input address Value
OUTPUT:
Destination index:
Output address Value
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 21
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV CX,0003 Move the immediate number to CX
register
MOV SI, Initialize the source index pointer SI
with desired address value
MOV DI, Initialize the source index pointer DI
with desired address value
Loop1: MOV AX,[SI] Copy the content of SI into AX
register
ADC [DI],AX Add the content of DI and the content
of AX with carry
INC SI Increment SI
INC SI Increment SI
INC DI Increment DI
INC DI Increment DI
DEC CX Decrement CX
JNZ Loop1 Jump to loop1 address if CX register is
not equal to zero
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 22
FLOWCHART:
NO
YES
START
Move the immediate
number to CX register
Subtract the content of AX from the
content of DI with borrow
Increment SI & DI address values by
twice
Decrement CX by
once
STOP
Initialize the SI and DI with desired address
values
Copy the content of SI into AX register
CX=0 =
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 23
MULTIBYTE SUBTRACTION
AIM: To write an assembly language program to perform Multibyte subtraction using
MASM611.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Move the immediate number to CX register.
3. Initialize the source index pointer SI and destination index DI with the specified
address value to point out the desired memory locations.
4. Copy the content of SI into AX register.
5. Perform the subtraction with borrow operation between the content of DI and the
content of AX & store the result in specified destination register.
6. Increment the SI and DI address values by 2 times.
7. Decrement the value of CX register by one.
8. Repeat the step5 to step8 until the condition “CX=0” has been satisfied.
9. When “CX=0” then continue the next step of the main program.
10. Terminate the program.
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 24
RESULT:
INPUT:
Source index:
Input address Value
Destination index:
Input address Value
OUTPUT:
Destination index:
Output address Value
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 25
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV CX,0003 Move the immediate number to CX
register
MOV SI, Initialize the source index pointer SI
with desired address value
MOV DI, Initialize the source index pointer DI
with desired address value
Loop1: MOV AX,[SI] Copy the content of SI into AX
register
SBB [DI],AX Subtract the content of AX from the
content of DI with borrow
INC SI Increment SI
INC SI Increment SI
INC DI Increment DI
INC DI Increment DI
DEC CX Decrement CX
JNZ Loop1 Jump to loop1 address if CX register is
not equal to zero
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 26
MULTI BYTE MULTIPLICATION
DATASEGET
BYTESEQU 08H
NUM1DB 01H,02H,03H,04H,05H,06H,07H,08H
NUM2DB 02H,02H,02H,02H,02H,02H, 02H, 02H
NUM3DB 0AH DUP (00)
DATAENDS
CODESEGMENT
ASSUME CS: CODE,
DS: DATA
START: MOVAX, DATA
MOVDS, AX
MOVCX, BYTES
LEASI, NUM1
LEADI, NUM2
LEABX, NUM3
MOVAX,00
NEXT: MOV AL,[SI]
MOV DL,[DI]
MUL DL
MOV [BX], AL
MOV [BX+1], AH
INC SI
INC DI
INC BX
INC BX
DEC CX
JNZ NEXT
INT 3H
CODE ENDS
END START
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 27
INPUT:
OUT PUT:
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 28
MULTI BYTE DIVISION
DATA SEGMENT
BYTES EQU 08H
NUM2DB 02H,04H,06H,08H,0AH,0CH,0EH,10H
NUM1DB 02H,02H,02H,02H,02H,02H, 02H, 02H
NUM3DB 0AH DUP (00)
DATAENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOVAX, DATA
MOV DS, AX
MOVCX, BYTES
LEA SI, NUM1
LEA DI, NUM2
LEA BX, NUM3
NEXT: MOVAX, 00
MOV AL,[SI]
MOV DL,[DI]
MUL DL
MOV[BX], AL
MOV [BX+1],AH
INC SI
INC DI
INC BX
INC BX
DEC CX
JNZ NEXT
INT 3H
CODE ENDS
ENDSTART
INPUT:
OUTPUT: RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 29
FLOWCHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BL= BL=
START
Copy the immediate contents to AL, BL
register
ADD the contents of AL and BL
registers
Perform ASCII Adjust after
addition operation
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 30
ASCII ARITHMETIC OPERATIONS EX: No: 2
ASCII ADDITION
AIM: To write an assembly language program to perform ASCII adjust after addition.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Move the input byte to specified register.
3. Move another byte to specified register.
4. Add contents of specified registers.
5. Perform AAA operation and store the result in specified destination register.
6. Stop
PROGRAM:
Address Hexadecimal
Code Label Mnemonic Operand Comments
MOV AL,33h Copy immediate number to AL
register.
MOV BL,32h Copy immediate number to BL
register.
ADD AL,BL Add contents of AL and BL
registers
AAA Perform the operation ASCII
adjust after addition
OR AX,3030H
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 31
FLOWCHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BL= BL=
START
Copy the immediate contents to AL, BL
register
Subtract the content of BL from the
content of AL register
Perform the operation ASCII
adjust after subtraction
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 32
ASCII SUBTRACTION
AIM: To write an assembly language program to perform ASCII adjust after subtraction.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
Algorithm:
1. Start the program
2. Move the input byte to specified registers.
3. Move another byte to specified register.
4. Subtract the contents of specified register from the content of another register.
5. Perform AAS operation and store the result in specified register.
6. Stop.
PROGRAM:
Address Hexadecimal
Code Label Mnemonic Operand Comments
MOV AL,39H Copy immediate number to
AL register.
MOV BL,36H Copy immediate number to
BL register.
SUB AL,BL
Subtract the content of BL
from the content of AL
register.
AAS Perform the operation ASCII
adjust after subtraction
OR AX,3030H
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 33
FLOWCHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BL= BL=
START
Copy the immediate
contents to AL, BL register
Multiply the content of BL with the content of AL register
Perform the operation ASCII adjust after multiplication
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 34
ASCII MULTIPLICATION
AIM: To write an assembly language program to perform ASCII adjust after multiplication.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the input byte to specified registers.
3. Move another byte to specified register.
4. Multiply the contents of specified register with the content of another register.
5. Perform AAM operation and store the result in specified register.
6. Stop.
PROGRAM:
Address Hexadecimal
Code Label Mnemonic Operand Comments
MOV AL,36H Copy immediate number to AL
register
MOV BL,32H Copy immediate number to BL
register
SUB AL,30H
SUB BL,30H
MUL BL Multiply the content of BL
with the content of AL register
AAM Perform the operation ASCII
adjust after multiplication
OR AX,3030H
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 35
FLOWCHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BL= BL=
RESULT:
START
Copy the immediate contents to AX, BL
register
Perform the operation ASCII adjust before division
Divide the content of AX with the content of BL
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 36
ASCII DIVISION
AIM: To write an assembly language program to perform ASCII adjust before division.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the input byte to specified registers.
3. Move another byte to specified register.
4. Perform AAD operation.
5. Divide the content of specified register with the content of another register.
6. Stop.
PROGRAM:
Address Hexadecimal
Code Label Mnemonic Operand Comments
MOV AL,39H Copy immediate number to AL register
MOV BL,33H Copy immediate number to BL register
SUB AL,30H
SUB BL,30H
AAD Perform the operation ASCII adjust before division
DIV BL Divide the content of AX with the content of BL
OR AX,3030H
INT 03 Terminate the program
VIVA QUESTIONS
1. What is an extended accumulator? 2. AL and BL are used for multiplying why not AX & BX? 3. Instead of using MOV BL is it not possible to MUL num2? 4. Why AL & BL are not used in signed multiplication? 5. If result exceeds 32 bit where is it stored? 6. What is the name given to the register combination DX: AX? 7. What happens if DX register contains a nonzero value before DIV instruction? 8. In a program instead of DIV BX is it possible to use DIV num2? 9. Describe about MUL, IMUL, DIV, IDIV instructions 10. What is the purpose of ASCII addition?
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 37
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BX= BX=
MANUPLATION:
AX=
BX=
START
Copy values in AX and BX registers
Perform AND operation between the contents of AX &
BX registers
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 38
LOGICAL OPERATIONS Ex: No: 3
Logical AND
AIM: To write an assembly language program to perform logical AND operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the input byte to specified register
3. Move the other byte to specified register
4. Perform logical AND operation between AX and BX registers and store the result in
specified register
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV BX, Copy immediate number to BX
register
AND AX,BX Perform AND operation between
the contents of AX & BX registers
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 39
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BX= BX=
MANUPLATION:
AX=
BX=
START
Copy values in AX and BX registers
Perform OR operation between
the contents of AX & BX registers
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 40
Logical OR
AIM: To write an assembly language program to perform logical OR operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the input byte to specified register
3. Move the other byte to specified register
4. Perform logical OR operation between AX and BX registers and store the result in
specified register
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV BX, Copy immediate number to BX
register
OR AX,BX Perform OR operation between
the contents of AX & BX registers
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 41
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
BX= BX=
MANUPLATION:
AX=
BX=
START
Copy values in AX and BX registers
Perform XOR operation between the contents of AX & BX registers
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 42
LOGICAL XOR
AIM: To write an assembly language program to perform logical XOR operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the input byte to specified register
3. Move the other byte to specified register
4. Perform logical OR operation between AX and BX registers and store the result in
specified register
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV BX, Copy immediate number to BX
register
XOR AX,BX Perform X OR operation between
the contents of AX & BX registers
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 43
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
MANUPLATION:
AX=
STAR
T
Copy the values in AX register
Perform NOT operation on the
content of AX register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 44
LOGICAL NOT
AIM: To write an assembly language program to perform logical NOT operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Move the input byte to specified register.
3. Perform logical NOT operation on the content of AX register.
4. Stop
PROGRAM:
Address Hexadecimal
code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
NOT AX Perform NOT operation on the
content of AX register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 45
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
CL= CX=
MANUPLATION:
AX=
CL=
START
Copy the immediate contents to AX, CL
register
Perform shift left operation on
the content of AX register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 46
SHIFT AND ROTATE OPERATIONS
EX: No:3
SHIFT LEFT OPERATION
AIM: To write an assembly language program to perform the shift left operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the immediate number to AX register.
3. Move the count value to CL register.
4. Perform the shift left operation on the content of AX register.
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV CL, Copy immediate number to CL
register
SHL AX,CL Perform shift left operation on
the content of AX register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 47
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
CL= CX=
MANUPLATION:
AX=
CL=
TART
Copy the immediate
contents to AX, CL register
Perform shift right operation on
the content of AX register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 48
SHIFT RIGHT OPERATION
AIM: To write an assembly language program to perform the shift right operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the immediate number to AX register.
3. Move the count value to CL register.
4. Perform the shift right operation on the content of AX register.
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV CL, Copy immediate number to CL
register
SHR AX,CL Perform shift right operation
on the content of AX register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 49
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
CL= CX=
MANUPLATION:
AX=
CL=
START
Copy the immediate contents to AX, CL
register
Perform rotate left operation on
the content of AX register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 50
ROTATE LEFT OPERATION
AIM: To write an assembly language program to perform the rotate left operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the immediate number to AX register.
3. Move the count value to CL register.
4. Perform the rotate left operation on the content of AX register.
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV CL, Copy immediate number to CL
register
ROL AX,CL Perform rotate left operation
on the content of AX register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 51
FLOW CHART:
RESULT:
GIVEN INPUT: OUTPUT:
AX= AX=
CL= CX=
MANUPLATION:
AX=
CL=
START
Copy the immediate contents to AX, CL
register
Perform rotate right operation on
the content of AX register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 52
ROTATE RIGHT OPERATION AIM: To write an assembly language program to perform the rotate right operation.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Move the immediate number to AX register.
3. Move the count value to CL register.
4. Perform the rotate right operation on the content of AX register.
5. Stop
PROGRAM:
Address Hexadecimal code Label Mnemonic Operand Comments
MOV AX, Copy immediate number to AX
register
MOV CL, Copy immediate number to CL
register
ROR AX,CL Perform rotate right operation
on the content of AX register
INT 03 Terminate the program
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 53
FLOW CHART:
START
Clear the contents of AX BX
register
Initialize the SI with desired address
value
Copy the content of SI into AX
register
Copy the content of AL to
BL register
Perform AND operation between the content of AL
&0F
Move the count value to CL
register
Perform rotate right operation on the content of BL register
Copy the content of BL in AH register & the content of AX in SI address value
STOP
Perform AND operation between the content of BL &0F0
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 54
EX:No:3
CONVERSIONS
PACKED BCD TO UNPACKED BCD
AIM:
To write an assembly language program to convert packed BCD to unpacked BCD.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Clear the contents of AX,BX registers
3. Initialize the source index pointer (SI) with the specified address value to point out the
desired memory location.
4. Copy the content specified memory location to AL register
5. Copy the content of AL register to BL register
6. Perform AND operation between the content of AL register and the immediate value
0F.
7. Perform AND operation between the content of BL register and the immediate value
0F0.
8. Initialize the CL register with the desired count value.
9. Perform rotate right operation on the content of BL register.
10. Copy the content of BL register to AH register.
11. Copy the content of AX register to the specified memory location.
12. Stop the program.
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 55
RESULT:
GIVEN INPUT:
3000-
OUTPUT:
3000-
3001-
AX=
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 56
PROGRAM:
.MODEL SMALL
.286
.DATA
ORG 2000H
MOV AX, 0000H
MOV BX, 0000H
MOV SI,3000H
MOV AL,[SI]
MOV BL,AL
AND AL,0FH
AND BL,0F0H
MOV CL,04H
ROR BL,CL
MOV AH,BL
MOV [SI],AX
INT 03
.EXIT
END
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 57
FLOWCHART:
Now copy the content of SI in BL register
Initialize CLregister with the required count
value
START
Clear the registers AX and
BX
Initialize SI with some address value
Copy the content of Si in AL
register
Increment the memory location
pointed by SI by one time
The content of AL register is shifted left by 4 times
ADD content of AL register with the content of BL register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 58
UNPACKED BCD TO PACKED BCD
AIM:
To write an assembly language program to convert unpacked BCD format to packed BCD
format.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Clear the contents of AX and BX registers.
3. Initialize the source index pointer (SI) with the specified address value to point out the
desired memory location.
4. Move the value of SI memory location to the specified AL register.
5. Increment the value of SI.
6. Move the value of memory location pointed by SI BL register.
7. Initialize CL register with the required count value.
8. Perform shift left operation on the content of AL register.
9. Add the content of AL register with the content of BL register.
10. Stop the program.
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 59
RESULT:
GIVEN INPUT:
4000-
4001-
OUTPUT:
AX=
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 60
PROGRAM:
.MODEL SMALL
.286
.DATA
ORG 2000H
MOV AX,0000H
MOV BX,0000H
MOV SI,4000H
MOV AL,[SI]
INC SI
MOV BL,[SI]
MOV CL,04H
SHL AL,CL
ADD AL,BL
INT 03
.EXIT
END
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 61
FLOW CHART:
START
Clear the register AX & BX
Initialize the specified memory location with some
value
Initialize the CL register with some count
value
Copy the content of specified memory location to AL register
Copy the content of AL to BL register
Perform AND operation between specified
values
Shift the content of BL register to right with specified number of bits
ADD the content of AL register with 30
ADD the content of BL register with 30
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 62
PACKED BCD TO ASCII FORMAT
AIM:
To write an assembly language program to convert packed BC D format to ASCII format.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Clear the contents of AX, BX registers.
3. Initialize the source index pointer (SI) with the specified address value to point out the
desired memory location.
4. Initialize CL register with some count value.
5. Copy the content of specified memory location to AL register.
6. Copy the content of AL to BL register.
7. Perform AND operation between the content of AL and immediate number 0F.
8. Shift the content of BL register to left with specified number of bits.
9. Add the content of AL register with the immediate number 30.
10. Add the content of BL register with the immediate number 30.
11. Stop the program.
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 63
RESULT:
GIVEN INPUT:
3000-
OUTPUT:
AX=
BX=
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 64
PROGRAM:
.MODEL SMALL
.286
.DATA
ORG 3000H
MOV AX,0000H
MOV BX,0000H
MOV CL,04H
MOV SI,3000H
MOV AL,[SI]
MOV BL,AL
AND AL,0FH
SHR BL, CL
ADD AL,30H
ADD BL,30H
INT 03
.EXIT
END
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 65
FLOWCHART:
START
Clear the contents of AX, BX registers
Initialize the specified memory location with some address values
Initialize CL registers with some value
Copy the contents of specified memory locations to AL, BL register
Perform AND operation between the contents of BL register
and 0F
Shift the content of BL to left with specified number of
bits
Perform OR operation between the contents of AL, BL and store result in specified register
STOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 66
ASCII TO PACKED BCD
AIM:
To write an assembly language program for the conversion of numbers in ASCII format
to packed BCD format.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Clear the contents of AX,BX registers
3. Initialize CL register with some count value.
4. Initialize the source index pointer (SI) with the specified address value to point out the
desired memory location.
5. Copy the contents of specified memory location to AL and BL register.
6. Perform AND operation between the content BL register and immediate number 0F.
7. Shift left the content of AL register with the specified number of bits.
8. Perform OR operation between the contents AL & BL registers.
9. Stop the program
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 67
RESULT:
GIVEN INPUT:
6000-
6002-
OUTPUT:
AX=
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 68
PROGRAM:
.MODEL SMALL
.286
.DATA
ORG 2000H
MOV AX,0000H
MOV BX,0000H
MOV CL,04H
MOV SI,6000H
MOV DI,6002H
MOV AL,[SI]
MOV BL,[DI]
AND BL,0FH
SHL AL,CL
OR AL,BL
INT 03
.EXIT
END
RESULT:
VIVA QUESTIONS
1. What is the purpose of the instruction ROR AL, CL? 2. What is the purpose of the instruction AND AL, 0FH & AND AL, 0F0H in the
program? 3. What is the expansion of UPBCD? 4. What is the use of DAA instruction? 5. What is the reason for packing unpacked BCD? 6. What is common between unpacked BCD and ASCII? 7. What is the difference between adding 30h and OR 30H to a BCD number to conversion
to ASCII? 8. Why unpacking is necessary during the conversion? 9. What is the ASCII character for symbol A?
10. What is the ASCII character for symbol zero „0‟?
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 69
FLOWCHART:
YES
NO
YES
NO YES
NO
Decrement the value of CH by one
START
Copy the content of SI into CL register
Decrement the value of CL
by one
Copy the content of SI into CH
register Decrement the value of CH
by one Increment the value of SI memory location by one
Copy the content of SI address into
AL register
Increment the value of SI memory location by one
Compare the values of AL and the specified
memory location
If AL<SI Exchange the contents of AL & SI and also the contents of AL & SI-
01 memory location
If CH!=
0
Initialize the specified memory
location with some address
values
Decrement the value of CL by one
If CL!=
0 TOP
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 70
SORTING & STRING OPERATIONS
EX: No:4
ASCENDING ORDER
AIM:
To write an assembly language program to perform ascending order on the given string.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Initialize the source index pointer (SI) with the specified address value to point out the
desired memory location.
3. Copy the content of SI memory location into CL register.
4. Decrement the value of CL register.
5. Copy the content of SI memory location into CH register.
6. Decrement the value of CH register.
7. Increment the value of memory location pointed by SI by once.
8. Now copy the content of SI memory location into AL register.
9. Increment the value of SI.
10. Compare the content of AL with the content specified memory location pointed by SI.
11. If the content of AL is less than the content of SI jump to step-14 otherwise continue with
the next step.
12. Perform exchange operation between the contents of AL and SI memory location.
13. Perform exchange operation between the contents of AL and [SI-01] memory location.
14. Decrement the content of CH register by one.
15. If the content of CH!=0 then go to step-8.
16. Decrement the content of CL register by one.
17. If the content of CL!=0 then go to step-5.
18. Stop the program
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 71
RESULT:
INPUT:
Source Index
Address Values
OUTPUT:
Source index:
Address Values
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 72
PROGRAM:
.MODEL SMALL
.286
.CODE
ORG 2000H
MOV SI,0500H
MOV CL,[SI]
DEC CL
LOOP1: MOV SI,0500H
MOV CH,[SI]
DEC CH
INC SI
LOOP2: MOV AL,[SI]
INC SI
CMP AL,[SI]
JB LOOP3
XCHG AL,[SI]
XCHG AL,[SI-01]
LOOP3: DEC CH
JNZ LOOP2
DEC CL
JNZ LOOP1
INT 03
.EXIT
END
RESULT:
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 73
FLOWCHART:
YES
NO
NO
YES NO
YES NO
Copy the content of SI address into AL
register
Increment the value of SI memory location by
one Compare the values of AL and the specified memory
location
If AL>SI
Exchange the contents of AL & SI and also the contents of AL & SI-01 memory location
Decrement the value of CH by one
If CH!=0
Decrement the value of CL by
one
If CL!=0
STOP
START
Copy the content of SI into CL register
Decrement the value of CL by one
Copy the content of SI into CH register
Decrement the value of CH by
one
Increment the value of SI memory location by one
Initialize the specified memory location with some address
values
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 74
DESCENDING ORDER
AIM:
To write an assembly language program to perform descending order on the given string.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program
2. Initialize the source index pointer (SI) with the specified address value to point out the
desired memory location.
3. Copy the content of SI memory location into CL register.
4. Decrement the value of CL register.
5. Copy the content of SI memory location into CH register.
6. Decrement the value of CH register.
7. Increment the value of memory location pointed by SI by once.
8. Now copy the content of SI memory location into AL register.
9. Increment the value of SI.
10. Compare the content of AL with the content specified memory location pointed by SI.
11. If the content of AL is greater than the content of SI jump to step-14 otherwise continue
with the next step.
12. Perform exchange operation between the contents of AL and SI memory location.
13. Perform exchange operation between the contents of AL and [SI-01] memory location.
14. Decrement the content of CH register by one.
15. If the content of CH!=0 then go to step-8.
16. Decrement the content of CL register by one.
17. If the content of CL!=0 then go to step-5.
18. Stop the program
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 75
RESULT:
INPUT:
Source Index
Address Values
OUTPUT:
Source index:
Address Values
RCE MICROPROCESSORS & MICROCONTROLLERS LAB
Department of Electronics & Communication Engineering 76
PROGRAM:
.MODEL SMALL
.286
.CODE
ORG 2000H
MOV SI,0500H
MOV CL,[SI]
DEC CL
LOOP1: MOV SI,0500H
MOV CH,[SI]
DEC CH
INC SI
LOOP2: MOV AL,[SI]
INC SI
CMP AL,[SI]
JNB LOOP3
XCHG AL,[SI]
XCHG AL,[SI-01]
LOOP3: DEC CH
JNZ LOOP2
DEC CL
JNZ LOOP1
INT 03
.EXIT
END
RESULT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
FLOW CHART:
YES
NO
START
T
Clear the contents of AX & BX registers
Initialize the SI and DI with desired address
values
Initialize CL register by a
count value
Copy the content of specified memory location
into AL register
Copy the content of AL
register into specified memory location [DI]
Increment SI & DI memory locations
by once
Decrement the value of CL
by one
If CL!=0
STOP
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
MOVE BLOCK OF DATA
AIM:
To write an assembly language program to move a block of data from one memory location
to
another memory location.
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Clear the contents of AX & BX registers.
3. Initialize the source index pointer SI and destination index DI with the specified
address value to point out the desired memory locations.
4. Load the contents in specified memory locations of SI & DI before execution.
5. Copy the immediate number in the CL register.
6. Copy the content of specified memory location [SI] into AL.
7. Copy the content of AL register into specified memory location [DI].
8. Increment the address value of the specified memory locations SI and DI by once.
9. Decrement the value of CL register.
10. If CL!=0 goto step-6 until CL=0.
11. Stop the program.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
RESULT:
INPUT:
OUTPUT:
Source index Values
Destination index Values
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
PROGRAM:
.MODEL SMALL
.286
.DATA
ORG 2000H
MOV AX,0000H
MOV BX,0000H
MOV SI,
MOV DI,
MOV CL,
LOOP1: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CL
JNZ LOOP1
INT 03
.EXIT
END
RESULT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
FLOWCHART:
YES NO
NO
If
CL!=0
START
Initialize the AX
register
Initialize the specified memory location to SI & DI
Initialize CL register with some count
value
Copy the content of SI and DI into AL and BL
registers
Compare the contents of AL & BL registers
If
AL!=BL
Increment SI & DI locations by
once
Decrement the value of CL
register
Copy the immediate number to AX
register
STOP
Copy content in the AX register
STOP
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
STRING COMPARISON
AIM:
To write an assembly language program to compare two strings.
REQUIRED SOFTWARE: MASM611
Staring address:
Ending address:
ALGORITHM:
1. Start the program.
2. Initialize the AX register .
3. Initialize the source index pointer SI and destination index DI with the specified
address value to point out the desired memory locations.
4. Load the contents in specified memory locations of SI & DI before execution.
5. Copy the immediate number in the CL register.
6. Copy the content of specified memory location [SI] into AL and [DI] into BL.
7. Compare the contents of AL & BL register.
8. If the content of AL is not equal to the content of BL then go to step-13.
9. Increment the value of SI & DI by once.
10. Decrement the value of CL register.
11. If CL!=0 goto step-6.
12. Copy the immediate number to AX register and terminate the program.
13. Copy the given immediate content to AX register.
14. Stop the program.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
RESULT:
INPUT:
Source Index: Destination Index:
OUTPUT:
When Strings are equal: AX=
When Strings are not equal: AX=
Address Values
Address Values
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
PROGRAM:
.MODEL SMALL
.286
.DATA
ORG 2000H
MOV AX, 0000H
MOV SI,
MOV DI,
MOV CL,
LOOP 2: MOV AL,[SI]
MOV BL,[DI]
CMP AL,BL
JNE LOOP1
INC SI
INC DI
DEC CL
JNZ LOOP2
MOV AX,0000H
INT 03
LOOP1: MOV AX,0001H
INT 03
.EXIT
END
RESULT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
FLOWCHART:
YES
NO
START
Clear the contents of AX and BX
registers
Initalize the SI and DI with some address value
Copy the contents of SI and DI to AL and BL
registers
Exchange the contents of AL and BL registers
Copy the contents of AL and BL to [SI] and [DI]
Increment the value of
[SI]
Decrement the value of
[DI]
Compare the address values of SI and
DI
If [SI]<[DI]
STOP
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
STRING REVERSAL
AIM:
To write an assembly language program to perform string reversal operation
REQUIRED SOFTWARE: MASM611
Starting address:
Ending address:
ALGORITHM:
1. Start the program.
2. Initialize the AX & BX register.
3. Initialize the source index pointer SI and destination index DI with the specified
address value to point out the desired memory locations.
4. Copy the content of SI into AL register.
5. Copy the content of DI into BL register.
6. Exchange the contents of AL and BL registers.
7. Copy the contents of AL and BL registers to SI and DI memory locations.
8. Increment the value of SI memory location.
9. Decrement the value of DI memory location.
10. Compare the address values of SI and DI.
11. If [SI]<[DI] goto step-4.
12. Stop the program.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
RESULT:
INPUT:
ADDRESS VALUES
OUTPUT:
ADDRESS VALUES
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
PROGRAM:
.MODEL SMALL
.286
.CODE
ORG 2000H
MOV AX,0000H
MOV BX,0000H
MOV SI,
MOV DI,
LOOP1: MOV AL,[SI]
MOV BL,[DI]
XCHG AL,BL
MOV [SI],AL
MOV [DI],BL
INC SI
DEC DI
CMP SI,DI
JB LOOP1
INT 03
.EXIT
END
RESULT:
VIVA QUESTIONS 1. What is the purpose of string length? 2. What does „equ‟ stands for? 3. What is the purpose of label start after the end directive? 4. What is the operation performed by the instruction cmp al, $? 5. Why SI is not been incremented in the program? 6. What is the significance of CLD? 7. How does CMPSB perform the comparison? 8. After executing the instructions mov ah,02h / int 21h, what are contents of AL ? 9. What are the contents of AH for displaying a sting in the screen? 10. What are the contents of AH for accepting a number from keyboard?
11. Which register contains the address of the string to be displayed on screen?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
MICROPROCESSOR (8086) INTERFACING PROCEDURE WITH
DIFFERENT INTERFACING MODULES
1) Switch on the PC.
2) Connect ESA 86/88E Trainer to the Host PC using 9 to 9 pin serial cable
supplied by kit manufacturer.
3) Give power to ESA 86/88E Trainer.
4) Make the Dipswitches on ESA 86/88E Trainer for 9600 baud rate and for
serial
Monitor (Select Dip switches 3,4 and 7 should be ON for Serial Mode).
5) Start Win86E application on Host PC. You should then see the following
Dialog Box.
6) If the Trainer is connected to COM1 port on your Host PC & configured for
9600-baud rate, click No. Click Yesotherwise. If yes, you will see the following
dialog box.
7) Select the Baud Rate as per the dipswitch configuration on ESA 86/88E
Trainer. Select the Com Port where the trainer is connected. Click Apply. You
should then see the following window.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
8) Click on the „download’ option in the above window and browse ‘.hex’ file
of the current program and click ok. After downloading the file click on „cmd‟
option in the above window and then to execute the current program give the
command ‘g 0000:2000’ (i.e., starting address of the program)from
keyboard. Check out the output on the interface or study card kit which has
connected to the 8086 microprocessor kit.
9) In some cases if the communication is not established you will see the
following
Dialog box. In this case please check the Power on ESA 86/88E Trainer. Check
whether Serial cable is connected to the PC &ESA 86/88E Trainer and check
the parameter by clicking Settings.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
10) If the communication is established properly, from the displayed window
you can work with ESA 86/88E Trainer. You can view the Registers, Memory
Dumps, Download the hex images, Upload the hex dump to the Host PC, Run
the downloaded hex images, single stepping, breakpoints, watch windows,
Memory modification etc., These options are explained in detail in online help
of Win86E (Win86E.hlp).
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUT PUT:
RESULT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
READING FROM KEYBOARD WITH ECHO
EX: No: 5
AIM: To write an assembly language program to read the string from keyboard with echo by using DOS functions REQUIRED SOFTWARE: MASM611
Starting address: Ending address:
PROGRAM:
.MODEL SMALL
.286
ASSUME DS: DATA, CS: CODE DATA SEGMENT STRING DB "ROY BHURCHANDI"
LEN EQU 0EH BUFFER DB 0FH DUP(?)
MESSAGE DB 0AH, 0DH, "STRING DISPLAYED", 0AH, 0DH, "$" DATA ENDS CODE SEGMENT
ORG 2000H START: MOV AX, DATA
MOV DS, AX RAJ: MOV CX, LEN MOV DI, OFFSET BUFFER
NXTCHAR: MOV AH, 01H INT 21H
CMP AL, 0DH JE STOP MOV [DI], AL
INC DI DEC CX
JNZ NXTCHAR STOP: MOV CX, LEN MOV SI, OFFSET STRING
MOV DI, OFFSET BUFFER MOV AX, SEG BUFFER
MOV ES, AX CMPSB JNZ SORRY
MOV AH, 4CH INT 21H
SORRY: MOV DX, OFFSET MESSAGE MOV AH, 09H INT 21H
JMP RAJ CODE ENDS
END START .EXIT END
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUTPUT:
RESULT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
READING FROM KEYBOARD WITHOUT ECHO
AIM: To write an assembly language program to read the string from keyboard without echo
by using DOS functions
REQUIRED SOFTWARE: MASM611 Starting address: Ending address
PROGRAM:
.MODEL SMALL
.286 ASSUME CS: CODE, DS: DATA
DATA SEGMENT STG DB "RAJESHNAIDUARE"
LEN DW 0EH BUFFER DB 0FH DUP(?) MESSAGE DB 0AH,0DH,"SORRY!",0AH,0DH,"$"
DATA ENDS CODE SEGMENT
ORG 2000h START: MOV AX,DATA MOV DS,AX
RAJ : MOV CX,LEN MOV DI,OFFSET BUFFER
NXTCHAR: MOV AH,08H INT 21H CMP AL,0DH
JE STOP MOV [DI],AL
INC DI DEC CX JNZ NXTCHAR
STOP: MOV CX,LEN MOV SI,OFFSET STG
MOV DI,OFFSET BUFFER MOV AX,SEG BUFFER MOV ES,AX
CMPSB JNZ SORRY
MOV AH,4CH INT 21H SORRY: MOV DX,OFFSET MESSAGE
MOV AH,09H INT 21H
JMP RAJ CODE ENDS END START
.EXIT END
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUT PUT
RESULT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
DISPLAY STRING
AIM: To write an assembly language program to display the string by using DOS functions
REQUIRED SOFTWARE: MASM611 Starting address:
Ending address
PROGRAM
.MODEL SMALL
.286 ASSUME CS: CODE, DS: DATA DATA SEGMENT
MESSAGE DB 0DH, 0AH,"STUDY OF MICROPROCESSORS IS INTERFACING", 0DH, 0AH, "$"
DATA ENDS CODE SEGMENT ORG 2000H
START : MOV AX,DATA MOV DS, AX
MOV AH, 09H MOV DX, OFFSET MESSAGE INT 21H
MOV AH, 4CH INT 21H
CODE ENDS END START .EXIT
END
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
VIVA QUESTIONS
1. Abbreviate DOS & BIOS 2. Why INT21H is used in the Program? 3. Why BIOS interrupt is called as video service interrupt? 4. Why INT10H is used in the program? 5. What is the use of BIOS CALLS? 6. In echo program AH register should loaded with which DOS function? 7. In without echo program AH register should loaded with which DOS function? 8. Why INT09H is used in DOS calls? 9. What happened If AH is loaded with 4CH in program 10. Why INT11, INT12 and INT13H are used?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
EX: No:
8259 INTERRUPT CONTROLLER
Aim: To write an assembly language program to generate interrupts by using 8259 interrupt
controller which is interfacing with 8086 microprocessor. Apparatus:Hardware: soft ware 8086 Microprocessor Kit ESA 86
8259 interrupt controller kit FRC, USB cables
Power adapter Theory:
INTERRUPT SEQUENCE
The powerful features of the 8259A in a microcomputer system are its programmability and the interrupt routine addressing capability. The latter allows direct or indirect jumping to the
specific interrupt routine requested without any polling of the interrupting devices. The normal sequence of events during an interrupt depends on the type of CPU being used. The events occur as follows in an MCS-80/85 system:
1. One or more of the INTERRUPT REQUEST lines (IR7±0) are raised high, setting the
corresponding IRR bit(s). 2. The 8259A evaluates these requests, and sends an INT to the CPU, if appropriate. 3. The CPU acknowledges the INT and responds with an INTA pulse.
4. Upon receiving an INTA from the CPU group, the highest priority ISR bit is set, and the corresponding IRR bit is reset. The 8259A will also release a CALL instruction
code (11001101) onto the 8-bit Data Bus through its D7±0 pins. 5. This CALL instruction will initiate two more INTA pulses to be sent to the 8259A
from the CPU group.
6. These two INTA pulses allow the 8259A to release its preprogrammed subroutine address onto the Data Bus. The lower 8-bit address is released at the first INTA pulse
and the higher 8-bit address is released at the second INTA pulse. 7. This completes the 3-byte CALL instruction released by the 8259A. In the AEOI
mode the ISR bit is reset at the end of the third INTA pulse. Otherwise, the ISR bit
remains set until an appropriate EOI command is issued at the end of the interrupt sequence.
The events occurring in an 8086 system are the same until step 4.
4. Upon receiving an INTA from the CPU group, the highest priority ISR bit is set and the corresponding IRR bit is reset. The 8259A does not drive the Data Bus during this cycle.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
5. The 8086 will initiate a second INTA pulse. During this pulse, the 8259A releases an 8-bit
pointer onto the Data Bus where it is read by the CPU. 6. This completes the interrupt cycle. In the AEOI mode the ISR bit is reset at the end of the
second INTA pulse. Otherwise, the ISR bit remains set until an appropriate EOI command is issued at the end of the interrupt subroutine.
If no interrupt request is present at step 4 of either\ sequence (i.e., the request was too short in duration) the 8259A will issue an interrupt level 7. Both the vectoring bytes and the
CAS lines will look like an interrupt level 7 was requested.
When the 8259A PIC receives an interrupt, INT becomes active and an interrupt
acknowledge cycle is started. If a higher priority interrupt occurs between the two INTA pulses, the INT line goes inactive immediately after the second INTA pulse. After an
unspecified amount of time the INT line is activated again to signify the higher priority interrupt waiting for service. This inactive time is not specified and can vary between parts. The designer
should be aware of this consideration when designing a system which uses the 8259A. It is recommended that proper asynchronous design techniques be followed.
PROGRAM: DISPM EQU 0B5BH ; DISPLAY ROUTINE ADDRESS TO DISPLAY
; MESSAGE ON SERIAL ORG 8000H
START: MVI A, 12H ; single, edge triggerd mode, ; call address interval 8. OUT 90H
MVI A,81H OUT 91H
MVI A, 20H OUT 90H EI
SSS: JMP SSS UP: RST 3
ORG 8100H LXI H, MES0 JMP SUBRT
NOP NOP
LXI H, MES1 JMP SUBRT NOP
NOP LXI H, MES2
JMP SUBRT NOP NOP
LXI H, MESG3 JMP SUBRT
NOP NOP
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
LXI H, MESG4
JMP SUBRT NOP
NOP LXI H, MESG5 JMP SUBRT
NOP NOP
LXI H, MESG6 JMP SUBRT NOP
NOP LXI H, MESG7
JMP SUBRT NOP NOP
SUBRT: CALL DISPM JMP UP
RESULT:
VIVA QUESTIONS:
1. What is an Interrupt? 2. What is the need for interrupt controller? 3. List some of the features of INTEL 8259 (Programmable Interrupt Controller) 4. Differentiate software and hardware interrupts 5. What is meant by NMI? 6. Explain all initialization and operational command word format of 8259? 7. With single 8259 how many interrupts are possible? 8. With cascading mode of 8259 how many interrupts are possible? 9. How many 8259 ICs will be required for cascading mode? 10. What is the difference between polled command mode and vectored (interrupt driven)
command mode of 8259?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
EX: No: 8279 KEY BOARD INTERFACE Aim: To write an assembly language program to blink Port C bit 0 of the 8279 by interfacing
with 8086 microprocessor.
Apparatus: Hardware: Software 8086 Microprocessor Kit ESA 86 8279 key board interface kit
FRC, USB cables Power adapter
Theory:
A programmable keyboard and display interfacing chip. Scans and encodes up to a 64-key keyboard. Controls up to a 16-digit numerical display. Keyboard section has a built- in
FIFO 8 character buffer. The display is controlled from an internal 16x8 RAM that stores the coded display information. 1. The section has eight lines(RL0 - RL7) that can be connected to eight coluns of a keyboard
matrix. 2. It has two additional input : shift and control/strobe. The keys are automatically
debounced. 3. The two operating modes of keyboard section are 1) 2-key lockout 2) N-key rollover 4. In the 2-key lockout mode, if two keys are pressed simultaneously, only the first key is
recognized. 5. In the N-key rollover mode simultaneous keys are recognized and their codes are stored in
FIFO. 6. The keyboard section also have an 8 x 8 FIFO (First In First Out) RAM.The FIFO can store eight key codes in the
scan keyboard mode. The status of the shift key and control key are also stored along with key code.
7. The 8279 generate an interrupt signal(IRQ) to MPU when the FIFO is not empty. Scan section:
1. The scan section has a scan counter and four scan lines, SL0 to SL3.
2. These four scan lines cab be decoded as 16 scan lines by using 4-to-16 decoder. 3. These scan lines are connected to the rows of a matrix keyboard and digit drivers of a
multiplexed display Display section:
1. The display section has eight output lines divided into two groups A0-A3 and B0-B3.
2. The output lines can be used either as a single group of eight lines or as two groups of four
lines, in conjunction with the scan lines for a multiplexed display.
3. The display can be blanked by BD (low) line.
4. The display section consists of 16 x 8 display RAM. The CPU can read from or write into
any location of the display RAM.
PROGRAM:
DEMONSTRATION PROGRAM FOR 86/88E TRAINER ; WRITEN BY SIRI 06.08 ; PORTA INTPUT 0FFE0
; PORTB OUTPUT 0FFE2
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
; PORTC OUTPUT 0FFE4
; CONTROL PORT 0FFE6
OUTPUT 2500AD ORG 2000H
MOV AX,0000H ; Clear AX MOV AL,90H ; Initiasilse 8255 ports as above
MOV DX,0FFE6H OUT DX,AL CALL CLR ; Clear LEDs
BACK: CALL KESCN ; Identify the pressed key MOV AL,BH ; Store ASCII value of pressed key
MOV SI,2100H ; Load MSG address MOV AH,00H ADD AX,SI
MOV SI,AX MOV CL,[SI] ; Get display code
CALL CLR ; Clear LEDs MOV CH,08H ; No of segments / LED D0: RCL CL,01H ; Get 1 data bit
JNC D1 MOV AL,02H ; Output the data bit
MOV DX,0FFE4H OUT DX,AL MOV AL,03H ; Out put the clock to shift Register
MOV DX,0FFE4H OUT DX,AL
JMP D2 D1: MOV AL,00H ; Output the data bit MOV DX,0FFE4H
OUT DX,AL MOV AL,03H ; Out put the clock to shift Register
MOV DX,0FFE4H OUT DX,AL D2: DEC CH ; All bits over?
JNE D0 ; No, continue JMP BACK ; yes, go to BACK
CLR: MOV BL,06H ; No of LEDs S2: MOV BH,08H ; 8 segments / LED
S1: MOV AL,02H ; Output the data bit MOV DX,0FFE4H
OUT DX,AL MOV AL,03H ; Out put the clock to shift Register MOV DX,0FFE4H
OUT DX,AL DEC BH ; All sigments over?
JNE S1 ; No jump to S1 DEC BL ; All LEDs over?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
JNE S2 ; No, jump to S2
RET
KESCN: MOV BL,03H ; No of Scan lines MOV BH,0FH ; Reference key value MOV CL,08H ; Initialize scan line high
NXTGRP: MOV AL,CL
MOV DX,0FFE2H OUT DX,AL ; writing High scan line to portB RCR AL,01H
MOV CL,AL ; Updating the next scan line MOV DX,0FFE0H
IN AX,DX ; Read portA AND AL,1FH ; Masking upper 3 bits CMP AL,00H ; Compare key pressed
JNE NXTKEY ; If pressed go to identification part
SUB BH,05H ; Else change the reference key value & scan line DEC BL ; come to next scan line CMP BL,FFH ; repeat until 4 scan lines are checked
JNE NXTGRP JMP KESCN
NXTKEY: RCR AL,01H JNB NZ ; Key code is OK, return
RET
NZ: ADD BH,01H ; If not, try next key code JMP NXTKEY
ORG 2100H
MSG: DB 0C0H, 0F9H, 0A4H, 0B0H,99H DB 92H, 82H, 0F8H, 80H, 90H
DB 7FH, 0B7H, 88H, 0C8H,0AFH DB 89H, 0BFH, 86H, 0A1H, 0C6H
RESULT:
VIVA QUESTIONS: 1. What are the tasks involved in keyboard interface? 2. How a keyboard matrix is formed in keyboard interface using 8279? 3. What is scanning in keyboard and what is scan time? 4. What is scanning in display and what is the scan time? 5. What is meant by De-Bouncing? 6. What is meant by Polling? 7. What is meant by mode set in 8279? 8. What is the data bus size in 8279? 9. What are the display modes supported by the 8279 chip? 10. Give the format of program clock word of 8279 and mention its purpose.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
3. 8255- PROGRAMMABLE PERIPHERAL INTERFACE (PPI)
AIM:
To write an assembly language program to generate sine wave by using 8255 interfacing with 8086 microprocessor.
APPARATUS:
1. ESA 86/88-2 Microprocessor kit.
2. C.R.O.
3. F R C Cable.
4. Power supply.
5. Dual DAC kit.
THEORY:
The parallel input-output port chip 8255 is also called as Programmable peripheral input-output
Port. The Intel’s 8255 are designed for use with Intel’s 8 -bit, 16-bit and higher capability microprocessors. It has
24 input/output lines which may be individually programmed in 2-groups of 12 lines each, or 3 groups of 8 lines .The two groups of I/O pins are named as GROUP A and GROUP B. Each of these two groups contain a sub group of 8 I/O lines called as 8-bit Port and other sub group of 4 I/O lines are a 4-bit port. Thus GROUP A
Contains an 8-bit port A along with a 4-bit port, C upper. Port lines are identified by symbols PAO-PA7,
While the port C lines are identified as PC4-PC7 .Similarly group B contains an 8-bit port B, containing lines
PB0-PB7 and a 4-bit port C with lower bits PC0-PC3 .The port C upper and port C lower can be used in recombination as an 8-bit port-C .Both the port Cs are assigned the same address. Thus one may have either
Three 8-bit I/O ports are two 8-bit and two 4-bit I/O ports from 8255.All of these ports can function independently either as input or as output ports. This can be achieved by programming the bits of an internal register of 8255 called as Control word register. (CWR).
PORT ADDRESSES OF 8255
Control word register = FFE6
Port A = FFE0
Port B = FFE2
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
Generation of a Sine Waveform:
Program:
Memory address
Op codes labels Mnemonics
Operands
Comments
2000
2002
2005
2006
2009
200C
2010
2012
2013
2014
2015
2017
B0,80
BA,E6,FF
EE
BA,E0,FF
B9, 24,00
8B,36,00,30
8A,04
EE
46
49
75,F9
EB,F0
BACK:
L1:
MOV
MOV
OUT
MOV
MOV
MOV
MOV
OUT
INC
DEC
JNZ
JMP
AL,80H
DX,FFE6H
DX,AL
DX,FFE0H
CX,24H
SI,3000
AL,[SI]
DX,AL
SI
CX
L1
BACK
;Initialize 8255 all ports o/p
;Keep on writing the sine wave co ordinate data values to port A
Lookup table:
Memory address
Corresponding values
3000 75,95,AA,BF,D1,E0,ED,F6,FC,FE,FC,F6,ED,E0,D1,BF,AA,95,75
69,54,40,2D,1E,11,08,02,00,02,08,11,1E,2D,40,54,69
After Execution: Output Sine wave Amplitude 29.4V,Frequency 50Hz.
RESULT:
8086 MICRO
PROCESSOR
8255
PPI
8-BIT
DAC
CRO
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
VIVA QUESTIONS:
1. Give the BSR format?
2. What is the angle of a stepper motor in full step mode?
3. 8255 has how many pins?
4. If the Control word 09bH is given to control register of the 8255 ppi then explain what is the condition of ports?
5. If the 8255 is selected for addresses 0F800H-0F806H what is the address of port C?
6. Mode 1 of 8255 is used for which of the I/O methods?
7. 8255 has how many ports?
8. What are the applications of the ports?
9. Why we need interfacing devices?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
Ex: No:
INTERFACING 8051& 8253 USART TO 8086
AIM:
To interface 8251& 8253 Interface board to 8086 p and verify the operation of receiver
APPARATUS:Hardware: soft ware: 8086 Microprocessor Kit ESA 86
8251 PPI FRC, USB cables
Power adapter THEORY:
The 8251 is a USART (Universal Synchronous Asynchronous Receiver Transmitter) for
serial data communication. As a peripheral device of a microcomputer system, the 8251
receives parallel data from the CPU and transmits serial data after conversion. This device
also receives serial data from the outside and transmits parallel data to the CPU after
conversion
RXD (input terminal)
This is a terminal which receives serial data.
RXRDY (Output terminal)
This is a terminal which indicates that the 8251 contains a character that is ready to READ. If
the CPU reads a data character, RXRDY will be reset by the leading edge of RD signal.
Unless the CPU reads a data character before the next one is received completely, the
preceding data will be lost. In such a case, an overrun error flag status word will be set.
RXC (Input terminal)
This is a clock input signal which determines the transfer speed of received data. In
"synchronous mode," the baud rate is the same as the frequency of RXC. In "asynchronous
mode," it is possible to select the baud rate factor by mode instruction. It can be 1, 1/16, 1/64
the RXC.
SYNDET/BD (Input or output terminal)
This is a terminal whose function changes according to mode. In "internal synchronous
mode." this terminal is at high level, if sync characters are received and synchronized. If a
status word is read, the terminal will be reset. In "external synchronous mode, "this is an
input terminal. A "High" on this input forces the 8251 to start receiving data characters.
In "asynchronous mode," this is an output terminal which generates "high level"output upon
the detection of a "break" character if receiver data contains a "low-level" space between the
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
stop bits of two continuous characters. The terminal will be reset, if RXD is at high level.
After Reset is active, the terminal will be output at low level.
DSR (Input terminal)
This is an input port for MODEM interface. The input status of the terminal can be
recognized by the CPU reading status words.
DTR (Output terminal)
This is an output port for MODEM interface. It is possible to set the status of DTR by a
command.
CTS (Input terminal)
This is an input terminal for MODEM interface which is used for controlling a transmit
circuit. The terminal controls data transmission if the device is set in "TX Enable" status by a
command. Data is transmitable if the terminal is at low level.
RTS (Output terminal)
This is an output port for MODEM interface. It is possible to set the status RTS by a
command.
PROGRAM:
ORG 8000H LXI D, 000AH ;TIMER 0 for
;9600 BAUD MVI A, 36H ; TIMER0 IN ;MODE 3
OUT CMD53 MOV A,E ; LOAD LSB VALUE
OUT 80H MOV A, D ; LOAD MSB VALUE OUT 80H
XRA A ; DUMMY MODE OUT CMD51 ; WRITE DUMMY
; WORD OUT CMB51 ; IN MODE ; REGISTER
OUT CMD51 OUT CMD51
MVI A,40H ;RESET 8251 OUT CMD51 MVI A,0CEH ;ASYNCHRONOUS
;16XBAUD, ;2 STOP BITS, 8
;DATA ;BITS, NO PARITY MVI A,27H ;WRITE COMMAND
;WORD OUT CMD51
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
LXI H,8500H ;MEMORY TO STORE
;THE BACK: CALL GETCH ; CHARACTER TO
;MEMORY MOV A, C CPI 27
JZ DOWN CALL SOUTPT
MOV M, C INX H
JMP BACK
DOWN: RST 5 GETCH: IN CMD51 ;GET USART
; STATUS ANI 02H ; RECEIVER READY JZ GETCH ; NO, WAIT
IN DAT51 ; GET CHARACTER MOV C, A ; FROM USART
RET SOUTPT: IN CMD51 ANI 81H
CPI 81H JNZ SOUTPT
MOV A, C OUT DAT51 RET
RESULT:
VIVA QUESTIONS: 1. What is synchronous data transfer scheme? 2. What is asynchronous data transfer scheme?
3. What is baud rate? 4. What is USART?
5. What are the functions performed by INTEL 8251A? 6. What are the control words of 8251A and what are its functions? 7. What are the information that can be obtained from the status word of 8251?
8. How the microprocessor is synchronized with peripherals? 9. What is parity error?
10. Write applications of 8251?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
EMBEDDED C PROGRAMS FOR
8051-MICROCONTROLLER Ex: No: 1
EMBEDDED C PROGRAMS
AIM:
To Execute the Following Embedded C Programs On Kiel Software 1. Reading and Writing on a parallel port. 2. Timer in different modes.
3. Serial communication implementation. 4. Using external interrupts
5. Understanding three memory areas of 00 – FF (Programs using above areas).
APPARATUS: Hardware: soft ware: 1. PC 1.KIEL S/W
THEORY:
The AT89C51 is a low-power, high-performance CMOS 8-bit microcomputer with 4K bytes
of
Flash programmable and erasable read only memory (PEROM). The device is manufactured
using Atmel‟s high-density nonvolatile memory technology and is compatible with the
industry standard MCS-51 instruction set and pin out. The on-chip Flash allows the program
memory to
be reprogrammed in-system or by a conventional nonvolatile memory programmer. By
combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C51 is a
powerful microcomputer which provides a highly-flexible and cost-effective solution to many
embedded control applications.
INTPUT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
PROCEDURE:
Project creation:
Project ---New---Project name--- select Atmel---select 89c51R02.
File---New---write the program --- source with .c extension.
Right click on target --- select options for target set the crystal frequency as 11.0592--
- select output --- click ON create HEX file option---click OK.
Right click on source group and select Add files to group.
Compile the file--- Build and rebuild all.
Select Debug--- start or stop debug.
Select step or step over.
Go to peripherals and select Timers/ports/serial window.
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUTPUT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
S1. READING AND WRITING ON A PARALLEL PORT
Embedded c program
#include<reg51.h>
sbit in0=P1^0;
sbit in1=P1^1;
sbit in2=P1^2;
sbit in3=P1^3;
sbit in4=P1^4;
sbit in5=P1^5;
sbit in6=P1^6;
sbit in7=P1^7;
void main()
{
P1=0xff;
P2=0x00;
while(1)
{
P2=P1;
}
}
VIVA QUESTIONS:
1. How many parallel ports are there in 8051? 2. What about special functions of port-3?
3. What are the special functions of port-0 and port-1? 4. What is difference between microprocessor and microcontroller?
5. What is the use of volatile keyword? 6. What is IDE? 7. What is the size of parallel port in 8051?
8. Why we need embedded-c? How it will differ from normal „c‟?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUTPUT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
2. TIMERS IN DIFFERENT MODES
THEORY:
Thebasic8051hastwo on-chip timers that can be used for timing durat ions or for
counting external events Interval t iming allows the programmer to perform operations at
specific instants in time. Forexample,inour LED flashing program the LED was turned on
for a specific length of time and then turned off for a specific length of time. We achieved
this through the use of time delays. Since the microcontroller operates at aspecific
frequency, we could work out exact ly how many iterations of the time delay was needed to
give us the desired delay. However, this is cumbersome and prone to error. And there is
another disadvantage; the CPU is occupied, stepping through the loops. If we use the on-
chip timers, the CPU could be o ff doing something more useful while the timers take on
the menial task of keeping track of time
The 8051 has two16-bit timers. The high byte for timer1(TH1) is at address 8DH
while the low byte (TL1) is at 8BH The high byte for timer0 (TH0) is at 8CH while the low
byte (TL0) is at 8AH. Both timers can be used in a number o f different modes. The
programmer sets the t imers to a specific mode by loading the appropriate 8-bit number in
to the Timer Mode Register (TMOD) which is at address 89H.
C PROGRAM:
#include<reg51.h>
void T0delay();
sbit out=P1^7;
void main()
{
TMOD=0X21;
TH1=0XFD;
SCON=0X50;
TR1=1;
while(1)
{
out=~out;
T0delay();
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
}
}
void T0delay() //TO GENERATE 50 m sec delay using timer-0 mode1
{
TL0=0XFD;
TH0=0X4B;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
}
VIVA QUESTIONS:
1. What is meant by timer? 2. Differentiate timer and counter? 3. How many timers are there in 8051?
4. What is meant by auto reload mode in timers? 5. Draw the format of TMOD register of 8051
6. List the modes of Timer in 8051 7. What is the significance of C/T bit in TMOD register of 8051?
8. What is the significance of TRx bit in TCON register of 8051?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
3. SERIAL COMMUNICATION IMPLEMENTATION
THEORY:
In Parallel communicat ion, data being transferred between one locat ion and another
(R0 to the accumulator, for example) travel alo ng the 8-bit data bus. Because o f this data
bus, data bytes can be moved about the microcontroller at high speed. However, parallel
communicat ion has the disadvantage of requiring at least eight separate lines (inan8-
bitsystem) and in most cases extra lines to synchronize the data transfer (in the case of the
microcontroller, the control bus).
Serial co mmunication has the advantage of requiring only one line for the data, a
second line for ground and possibly a third line for the clock. Therefore, because seria l
communicat ion requires less physical wires, it is more suitable for transmitting data over
longer distances.
#include<reg51.h>
voidInit_Uart(void);
voidsend_char(unsigned char c);
void MSDELAY(unsigned int time);
voidsend_string(unsigned char *ptr);
unsigned char RX_CHAR();
//---------------------------
//============================================
voidInit_Uart(void)
{
SCON=0x50;
TMOD=0x20;
TH1=0XFD;
TR1=1;
}
//============================================
voidsend_char(unsigned char c)
{
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
SBUF=c;
while(!TI);
TI=0;
}
//============================================
unsigned char RX_CHAR()
{
unsigned char c;
while(!RI);
c=SBUF;
RI=0;
return SBUF;
}
//=============================================
void MSDELAY(unsigned int time)
{
unsignedinti,j;
for(i=0;i<time;i++)
for(j=0;j<1275;j++);
}
//============================================
voidsend_string(unsigned char *ptr)
{
while(*ptr)
send_char(*ptr++);
}
//==============================================
void main()
{
Init_Uart();
send_char('E');
MSDELAY(100);
send_char('C');
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
MSDELAY(100);
send_char('E');
MSDELAY(100);
send_char('@E');
MSDELAY(100);
send_string(" RCE, ELURU");
}
VIVA QUESTIONS:
1. What are the types of serial communication?
2. Draw the Frame format of Asynchronous serial communication 3. Draw the format of SCON register of 8051 4. What is the importance of SMOD bit in SCON register?
5. What are the modes of asynchronous serial communication in 8051? 6. Explain how baud rate is calculated for serial data transfer in mode 1?
7. Explain how baud rate is set in 8051 for serial data transfer using timer register? 8. Why we are using START/STOP bit?
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUTPUT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
INPUT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
OUT PUT:
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
Interfacing with Micro Controller
Hardware Interfacing
1. Waveform Generation using Dual DAC
2. 4X4 hexadecimal Keyboard interface
3. simple Calculator using Keyboard and Seven segment display.
4. Temperature sensor.
Features of Embedded C
• C is a simple programming language and so very easy to code.
• Embedded C has most features of C-language with more stress on certain bit manipulative instructions.
• This feature makes it easy to write program for μC and μP.
• Keil is a versatile software with a cross compiler that will convert the C program to assembly language and thus the program can be executed on the desired target (say 8051).
Some of the bit manipulative instructions used are
Symbol Operation
& Bitwise AND
| Bitwise OR
~ Bitwise NOT
>> Shift Right
<< Shift Left
^ P0.0
1.DualDac Interface to generate
a.Square waveform
b.Triangular Waveform
c.Ramp waveform
d.Sine waveform
8
0
5 P0 1 P1
μC
Dual
DAC
CRO
Xout
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
1. a).Algorithm for Square wave generation
Let initial, amplitude of the square wave be 2.5v(7F) and frequency count 100.
Output the values 00h (0ff) and 7fh (on) Values through P0.
If amplitude key is pressed then increase the voltage in steps of 0.15v (8).
If the frequency key is pressed increment the count in steps of 50. If the count exceeds 1000 reset it back to 100.
Every time amplitude and frequency changes output the value through P0 and note the waveform on CRO.
Program for square wave
#include <REG51xD2.H>
sbit Amp = P3^3; /* Port line to change amplitude */
sbitFre = P3^2; /* Port line to change frequency */
void delay(unsigned int x) /* delay routine */
{
for(;x>0;x--);
}
main()
{
unsigned char on = 0x7f,off=0x00;
unsignedintfre = 100;
while(1)
{
if(!Amp) /* if user choice is to change amplitude */
{
while(!Amp); /* wait for key release */
on+=0x08; /* Increase the amplitude */
}
if(!Fre) /* if user choice is to change frequency */
{
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
if(fre> 1000) /* if frequency exceeds 1000 reset to default */
fre = 100;
while(!Fre); /* wait for key release */
fre += 50; } /* Increase the frequency */
P0=on; /* write amplitude to port */
P1=on;
delay(fre);
P0 = off; /* clear port */
P1 = off;
delay(fre);
}}
1.b).Algorithm for Triangular wave generation
Output the initial value 00 through P0.
Increment it in steps of 1 until a count value of FFh (5V) is reached. Every time repeat step 1.
Decrement it in steps of 1 until a zero value is reached and repeat step 1.
Program for triangular wave:
#include <REG51xD2.H>
main()
{
unsigned char i=0;
P0 = 0x00; /* P0 as Output port */
while(1)
{
for(i=0;i<0xff;i++){ /* Generate ON pulse */
P1 = i;
P0 = i;
}
for(i=0xfe;i>0x00;i--) /* Generate OFF pulse */
{P0 = i;
P1 = i;}
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
}
}
1.cAlgorithm for Ramp wave generation
Output the initial value 00 through P0.
Increment it in steps of 1 until a count value of FFh (5V) is reached. Every time repeat step 1.
Repeat step 1 & 2 continuously.
Program for Ramp waveform
#include <REG51xD2.H>
main ()
{ Unsigned char i=0;
P0 = 0x00; /* P0 as Output port */
while (1)
{
for (i=0;i<0xff;i++) /* Generate ON pulse */
{
P1 = i;
P0 = i; }
}
}
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
1.d). Algorithm for Sine wave
Compute different step values (θ = 20o,15o…) of sine using the equation
V= 2.5V +2.5Vsinθ. . Output the values thro P0.
More the steps smoother will be sine wave.
E.g.: θ = 0o
V= 2.5V +2.5Vsinθ = 2.5V
The value sent to DAC is 25.6X5V= 128.
Program for sine wave
#include <REG51xD2.H>
main()
{
static int a[13]={128,192,238,255,238,192,128,64,17,0,17,64,128};
unsigned char i=0;
P0 = 0x00; /* P0 as Output port */
while (1)
{
for(i=0;i<13;i++) /* Output different values */
{ P0 = a[i]; }
}
}
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
2. 4X4 HEX Keyboard
Algorithm for Keyboard Interface
• Configure P1 as output port to scan the rows and P0 as input port to read the column values.
• First select the last row by grounding that row. Scan the columns of entire row if a key is pressed in that row then one of the column reads ‘0’.
• If now key is pressed in the selected row all 1’s is returned. So scan next row. Repeat the action until all rows are scanned.
//Program for 4X4 hex keypad.
#include<reg51.h> #include"lcd.h" #include"keypad.h" void main() { unsigned char s; lcd_init(); lcdcmd(0x80); msgdisplay("WELCOME"); delay(200); lcdcmd(1); lcdcmd(0xc0); while(1) { s=keypad(); lcddata(s); delay(10); } }
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
3. Calculator using Keyboard and LCD
Algorithm
• Read the numbers n1 and n2 from keyboard and display them on seven segment.
• Read the operand from the keypad if key pressed is B (+), C(-),D(*),E(/) then respective operation is performed.
• Result is displayed on 2 digit seven segment display.
• If any time the key pressed value returned as 10h then clear the LCD.
8051µC
PORT 3
PORT
1
PS
Keypad
PS
LCD Display
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
Program for calculator
#include<reg51.h> #include"lcd.h" #include"keypad.h" #include<string.h> void main() { floata,b; unsigned char k; unsignedint temp; lcd_init(); start: lcdcmd(0x80); msgdisplay("Welcome To"); lcdcmd(0xc0); msgdisplay("Calculator "); while(1) { delay(200); lcdcmd(1); lcdcmd(0x80); msgdisplay("enter val1: "); lcdcmd(0xc0); a=b=0; while(1) { temp=keypad(); delay(100); if(temp=='#') { break; } else if(temp=='*') { if(a) { lcdcmd(0x10); lcddata(' '); delay(100); a=a/10; lcdcmd(0x10); }
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
} else { a=a*10+temp-48; lcddata(temp); delay(100); temp++; } } lcdcmd(1); lcdcmd(0x80); msgdisplay("enter val2: "); lcdcmd(0xc0); b=0; while(1) { temp=keypad(); delay(100); if(temp=='#') { break; } else if(temp=='*') { if(b) { lcdcmd(0x10); lcddata(' '); delay(100); lcdcmd(0x10); b=b/10; } } else { b=b*10+temp-48; lcddata(temp); delay(100); temp++; } } lcdcmd(1); lcdcmd(0x80);
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
msgdisplay("Select operation"); lcdcmd(1); msgdisplay("1:ADD 2:SUB"); lcdcmd(0xc0); msgdisplay("3:MUL 4:DIV"); while(1) { k=keypad(); delay(100); if(k=='1') { lcdcmd(1); lcdcmd(0x80); msgdisplay("a="); convert1(a); lcddata(' '); lcdcmd(0x87); msgdisplay("b="); convert1(b); lcddata(' '); lcdcmd(0xc0); msgdisplay("a+b="); convert1(a+b); delay(200); again1: k=keypad(); if(k=='#') { goto start; } else { goto again1; } } if(k=='2') { lcdcmd(1); lcdcmd(0x80); msgdisplay("a="); convert1(a); lcddata(' ');
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
msgdisplay("b="); convert1(b); lcddata(' '); if(a<b) { lcdcmd(0xc0); msgdisplay("a-b="); lcddata('-'); convert1(b-a); } else { lcdcmd(0xc0); msgdisplay("a-b="); convert1(a-b); } delay(300); again2: k=keypad(); if(k=='#') { goto start; } else { goto again2; } } if(k=='3') { lcdcmd(1); lcdcmd(0x80); msgdisplay("a="); convert1(a); lcddata(' '); msgdisplay("b="); convert1(b); lcddata(' '); lcdcmd(0xc0); msgdisplay("a*b="); convert1(a*b); delay(100); again3: k=keypad();
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
if(k=='#') { goto start; } else { goto again3; } } if(k=='4') { lcdcmd(1); lcdcmd(0x80); msgdisplay("a="); convert1(a); lcddata(' '); msgdisplay("b="); convert1(b); lcddata(' '); lcdcmd(0xc0); msgdisplay("a/b="); convert1(a/b); delay(200); again4: k=keypad(); if(k=='#') { goto start; } else { goto again4; } } } } }
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
4. Temperature Sensor
The interface card has a DAC to convert the actual temperature to digital this is compared with reference temperarture. Realay also a part of interface card will turn on and off to indicate if the actual temperature is above or below reference.
Algorithm for Temperature sensor
1. Configure P0 and P1 as o/p, P3 as input port.
8051µC P0,P2,P3
PS
Temp Sensor
Interface
PS
Heat
Source
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
2. Set up a counter with intial value 0xff send it to dacthro P0 after a delay check if comparator o/p has gone low.
3. If low, compare with set value if actual greater than set turn on the relay else turn off.
Program for temperature sensor.
#include<reg51.h> #include"lcddisplay.h" #include<intrins.h> // connection between 8051 and ADC MCP3202 sbit ADC_CS = P2^0; sbit ADC_CLK = P2^3; sbit ADC_DO = P2^2; sbit ADC_DI = P2^1; voidwrite_adc_byte(char data_byte); unsignedintReadADC(unsigned char channel); //void DelayMs(unsigned int count); void convert(unsigned int value); void main() { unsignedint temperature ; float x; // buz=1; lcd_init(); // LCD Initilize lcdcmd(0x85); msgdisplay("WELCOME"); delay(1000); lcdcmd(0x01); msgdisplay("TEMPERATURE"); lcdcmd(0xC0); msgdisplay("MONITOR..."); delay(1000); delay(1500); lcdcmd(0x1); msgdisplay("TEMP:- "); while(1) { delay(100); temperature=ReadADC(0); x=(temperature/8); lcdcmd(0x87); convert(x); msgdisplay(" deg"); delay(1000); }
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
} unsignedintReadADC(unsigned char channel) { unsigned char i,k; unsignedintAdcResult; // 12 bit ADC_CS=0; // Active chip select k++; // Delay about 1 uS ADC_CLK=0; // make clock low first k++; k++; channel = channel? 0xF0 : 0xD0; k++; k++; // delay about 2 uS //--- write command 4 bit ---------- for(i=0; i< 4;i++) { ADC_DI = (channel & 0x80) != 0; channel<<=1; ADC_CLK=1; //DelayMs(20); k++; k++; // delay about 2 uS ADC_CLK=0; // DelayMs(20); // k++;k++; } k++; k++; // delay about 2 uS ADC_CLK=1; //DelayMs(20); k++; k++; // delay about 2 uS ADC_CLK=0; //DelayMs(20); k++; k++; // delay about 2 uS //--- read ADC result 12 bit -------- AdcResult=0; for(i=0;i<12;i++) { ADC_CLK=1; k++; k++;
Microprocessor & Microcontroller Lab
Dept. of ECE RCE
// delay about 2 uS AdcResult<<=1; AdcResult=AdcResult|(ADC_DO); ADC_CLK=0; k++; k++; // delay about 2 uS } ADC_CS=1; return(AdcResult); } void convert(unsigned int temp1_value) { unsignedint d1,d2,d3; d3=temp1_value%10; temp1_value=temp1_value/10; d2=temp1_value%10; d1=temp1_value/10; lcddata(d1+48); lcddata(d2+48); lcddata(d3+48); }