Microprocessor and Microcontroller Lab
BRANCH: Electronics and Communication Engineering
SEMESTER: 5th SEM
SUBJECT: Microprocessor and Microcontroller Lab
INDEX
S. No |
Name of the
Practical |
1 |
WALP to add and subtract two 8 bit and
16 bit nos. |
2 |
WALP
to multiply two 8 bit and 16 bit nos. |
3 |
WALP
to divide two 8 bit and 16 bit nos. |
4 |
WALP
to add a series of five 8-bit nos. |
5 |
WALP
to find odd and even number from a given group of nos. |
6 |
WALP
to find positive and negative number from a given group of nos. |
7 |
WALP
to find largest and smallest number and store the result in Accumulator |
8 |
WALP
for arranging in ascending and descending order of given 5 numbers |
9 |
WALP
for interfacing of 8255 Programming Peripheral Interface (PPI) with 8086 |
10 |
WALP
to add two 8 bit nos. using 8051 microcontroller |
Experiment 1
Aim: WALP to add and subtract two 8
bit and 16 bit nos.
Tool Required: Dyna Trainer Kit
Program:
(a) Addition of two 8 bit numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
1000:2000 |
This specifies the
segment and offset (effective address) |
1000:2000 |
MOV |
AL,23 |
Load the 8 bit
no.23 into 8 bit register AL |
1000:2002 |
MOV |
BL,54 |
Load the 8 bit
no.54 into 8 bit register BL |
1000:2004 |
ADD |
AL,BL |
Add the contents of
register AL and BL and store the result in register AL |
1000:2006 |
INT |
3 |
Interrupt the
current operation. |
1000:2007 |
|
|
Press Enter |
Dyna_86> |
G |
1000:2000 and press
Enter |
|
Break at |
0FFF: 1007 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 0077, BX=0054, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000, IP=2007, FL=F006
Conclusion:
1. In each instruction, offset
address is incremented by 2 bit because 1 address is occupied by instruction
and the other saves the data.
2. If AL
is replaced by AH then the output will be
AX= 7700, BX=0054, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000, IP=2007, FL=F006
3. If BL
is replaced by BH then the output will be
AX= 0077, BX=5400, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000, IP=2007, FL=F006
(b) Addition of two 16 bit
numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
1000:2000 |
This specifies the
segment and offset (effective address) |
1000:2000 |
MOV |
AX,A2C6 |
Load the 16 bit
no.A2C6 into 16 bit register AX |
1000:2003 |
MOV |
BX,3C36 |
Load the 16 bit
no.3C36 into 16 bit register BX |
1000:2006 |
ADD |
AX,BX |
Add the contents of
register AX and BX and store the result in register AX |
1000:2008 |
INT |
3 |
Interrupt the
current operation. |
1000:2009 |
|
|
Press Enter |
Dyna_86> |
G |
1000:2000 and press
Enter |
|
Break at 2009 |
0FFF: 1009 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= DEFC, BX=3C36, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000, IP=2009, FL=F086
Conclusion:
In each
instruction, offset address is incremented by 3 bits because 1 address is
occupied by instruction and the rest two saves the data.
(c) Subtraction of two 8 bit
numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
1000:2000 |
This specifies the
segment and offset (effective address) |
1000:2000 |
MOV |
AL,44 |
Load the 8 bit no.44
into 8 bit register AL |
1000:2002 |
MOV |
BL,22 |
Load the 8 bit no.22
into 8 bit register BL |
1000:2004 |
SUB |
AL,BL |
Subtract the
contents of register AL and BL and store the result in register AL |
1000:2006 |
INT |
3 |
Interrupt the
current operation. |
1000:2007 |
|
|
Press Enter |
Dyna_86> |
G |
1000:2000 and press
Enter |
|
Break at |
0FFF: 1007 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 0022, BX=0022, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000, IP=2007, FL=F006
Conclusion:
In each
instruction, offset address is incremented by 2 bit because 1 address is
occupied by instruction and the other saves the data.
(b) Subtraction of two 16 bit
numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
1000:2000 |
This specifies the
segment and offset (effective address) |
1000:2000 |
MOV |
AX,4321 |
Load the 16 bit no.4321
into 16 bit register AX |
1000:2003 |
MOV |
BX,1234 |
Load the 16 bit no.1234
into 16 bit register BX |
1000:2006 |
SUB |
AX,BX |
Subtract the
contents of register AX and BX and store the result in register AX |
1000:2008 |
INT |
3 |
Interrupt the
current operation. |
1000:2009 |
|
|
Press Enter |
Dyna_86> |
G |
1000:2000 and press
Enter |
|
Break at 2009 |
0FFF: 1009 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 30ED, BX=1234, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000, IP=2009, FL=F086
Conclusion:
In each
instruction, offset address is incremented by 3 bits because 1 address is
occupied by instruction and the rest two saves the data.
Experiment 2
Aim: WALP to multiply two 8 bit and
16 bit nos.
Tool Required: Dyna Trainer Kit
Program:
(a) Multiplication of two 8 bit
numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,07 |
Load the 8 bit no.07
into 8 bit register AL |
2000:1002 |
MOV |
BL,08 |
Load the 8 bit no.08
into 8 bit register BL |
2000:1004 |
MUL |
BL |
Multiply the
contents of register AL and BL and store the result in register AL |
2000:1006 |
INT |
3 |
Interrupt the
current operation. |
2000:1007 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF: 1007 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 0038, BX=0008, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000
Conclusion:
In each
instruction, offset address is incremented by 2 bit because 1 address is
occupied by instruction and the other saves the data.
(b) Multiplication of two 16 bit
numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AX,09 |
Load the 16 bit no.09
into 16 bit register AX |
2000:1003 |
MOV |
BX,05 |
Load the 16 bit no.05
into 16 bit register BX |
2000:1006 |
MUL |
BX |
Add the contents of
register AX and BX and store the result in register AX |
2000:1008 |
INT |
3 |
Interrupt the
current operation. |
2000:1009 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF: 1009 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 002D, BX=0005, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000
Conclusion:
In each
instruction, offset address is incremented by 3 bits because 1 address is
occupied by instruction and the rest two saves the data.
Experiment 3
Aim: WALP to divide two 8 bit and 16
bit nos.
Tool Required: Dyna Trainer Kit
Program:
(a) Division of two 8 bit numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,09 |
Load the 8 bit no.09
into 8 bit register AL |
2000:1002 |
MOV |
BL,05 |
Load the 8 bit no.05
into 8 bit register BL |
2000:1004 |
DIV |
BL |
Dividing the
contents of register AL by contents of register BL and store the result in
register AL |
2000:1006 |
INT |
3 |
Interrupt the
current operation. |
2000:1007 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF: 1007 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 0401, BX=0005, CX=0000, DX=0000,
SP=06FD, BP=0000, SI=0000
Conclusion:
In each
instruction, offset address is incremented by 2 bit because 1 address is
occupied by instruction and the other saves the data.
(b) Division of two 16 bit
numbers
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AX,0020 |
Load the 16 bit no.0020
into 16 bit register AX |
2000:1003 |
MOV |
BX,0003 |
Load the 16 bit no.0003
into 16 bit register BX |
2000:1006 |
DIV |
BX |
Dividing the
contents of register AX by the contents of register BX and store the result
in register AX |
2000:1008 |
INT |
3 |
Interrupt the
current operation. |
2000:1009 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF: 1009 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 000A, BX=0002, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=0000
Conclusion:
In each instruction, offset address is incremented by 3 bits because 1 address is occupied by instruction and the rest two saves the data.
Experiment 4
Aim: WALP to add a series of five
8-bit nos.
Tool Required: Dyna Trainer Kit
Program:
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,23 |
Load the 8 bit no.23
into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,12 |
Load the 8 bit
no.12 into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,34 |
Load the 8 bit
no.34 into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,44 |
Load the 8 bit
no.44 into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,68 |
Load the 8 bit
no.68 into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CL,05 |
Set a counter CL
to value 5 |
2000:101B |
MOV |
AL,00 |
Clear any
previous value and reset the AL register to 0 |
2000:101F |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:1022 |
MOV |
BL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register BL |
2000:1024 |
ADD |
AL,BL |
Add the contents
of register BL and AL and store the data in AL |
2000:1026 |
INC |
SI |
Increment the
value of SI by 1 |
2000:1027 |
DEC |
CL |
Decrement the
value of counter CL by 1 |
2000:1029 |
JNZ |
1022 |
This will fetch
the next instruction from the address 1022 if CL is not equal to 0 |
2000:102B |
INT |
3 |
Interrupt the
current operation. |
2000:102C |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF: 102C |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 0035, BX=0068, CX=0000,
DX=0000, SP=06FD, BP=0000, SI=2004, IP=1026, FL=F047
Experiment 5
Aim: WALP to find odd and even number
from a given group of nos.
Tool Required: Dyna Trainer Kit
Program:
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,01 |
Load the 8 bit no.01
into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,02 |
Load the 8 bit no.02
into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,03 |
Load the 8 bit no.03
into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,04 |
Load the 8 bit no.04
into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,05 |
Load the 8 bit no.05
into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CL,05 |
Set a counter CL
to value 5 |
2000:101B |
MOV |
AL,00 |
Clear any
previous value and reset the AL register to 0 |
2000:101D |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:1020 |
MOV |
BL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register BL |
2000:1022 |
RCR |
BL,01 |
Rotate Carry
Right Operation is performed to the
value stored in register BL |
2000:1024 |
JC |
102A |
Jump to the
location 102A if Carry Equal to Zero |
2000:1026 |
INC |
AL |
Increment the
value of DH by 1 |
2000:1028 |
JMP |
102C |
Jump to memory
location 102C |
2000:102A |
INC |
DL |
Increment the DL
value by 1 |
2000:102C |
INC |
SI |
Increment the SI
value by 1 |
2000:102D |
DEC |
CL |
Decrement the
Counter value by 1 |
2000:102F |
JNZ |
1020 |
Jump to the
memory location 1020 if CL is not equal to zero |
2000:1031 |
INT |
3 |
Interrupt the
current operation. |
2000:1032 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF:1032 |
|
|
Dyna_86> |
R |
|
|
Result:
In
this program we are finding even and odd no. from a given group of 5 numbers.
The O/P generated is AX= 0002, BX=0002, CX=0000, DX=0003, SP=06FD, BP=0000,
SI=2005, IP=1034, FL=F047. AX stores even number and DX stores odd number.
Experiment 6
Aim: WALP to find positive and
negative number from a given group of nos.
Tool Required: Dyna Trainer Kit
Program:
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,48 |
Load the 8 bit no.48
into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,57 |
Load the 8 bit no.57
into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,69 |
Load the 8 bit no.69
into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,A7 |
Load the 8 bit no.A7
into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,A6 |
Load the 8 bit no.A6
into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CL,05 |
Set a counter CL
to value 5 |
2000:101B |
MOV |
AL,00 |
Clear any
previous value and reset the AL register to 0 |
2000:101D |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:1020 |
MOV |
AL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register AL |
2000:1022 |
AND |
AL,80 |
AND 80 to the
value stored in register AL |
2000:1024 |
JNZ |
102A |
Jump to the
location 102A if Not Equal to Zero |
2000:1026 |
INC |
DH |
Increment the
value of DH by 1 |
2000:1028 |
JMP |
102C |
Jump to memory
location 102C |
2000:102A |
INC |
DL |
Increment the DL
value by 1 |
2000:102C |
INC |
SI |
Increment the SI
value by 1 |
2000:102D |
DEC |
CL |
Decrement the
Counter value by 1 |
2000:102F |
JNZ |
1020 |
Jump to the
memory location 1020 if CL is not equal to zero |
2000:1031 |
INT |
3 |
Interrupt the
current operation. |
2000:1032 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF:1032 |
|
|
Dyna_86> |
R |
|
|
Result:
In this program we are finding positive
and negative no. from a given group of 5 numbers. The O/P generated is AX=
0080, BX=0000, CX=0000, DX=0302, SP=06FD, BP=0000, SI=2005. DH stores positive
number and DL stores negative number.
Experiment 7
Aim: WALP to find largest and
smallest number and store the result in Accumulator
Tool Required: Dyna Trainer Kit
Program:
(a) ALP to find the largest
number
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,40 |
Load the 8 bit no.40
into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,61 |
Load the 8 bit no.61
into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,75 |
Load the 8 bit no.75
into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,C7 |
Load the 8 bit no.C7
into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,20 |
Load the 8 bit no.20
into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CL,04 |
Set a counter CL
to value 4 |
2000:101B |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:101E |
MOV |
DI,2001 |
Set the register
DI to location 2001 |
2000:1021 |
MOV |
AL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register AL |
2000:1023 |
MOV |
BL,[DI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register BL |
2000:1025 |
CMP |
AL,BL |
Compare the
contents of Register AL and BL |
2000:1027 |
JNC |
102F |
Jump to the
memory location 102F if Carry is not generated |
2000:1029 |
XCHG |
AL,BL |
Exchange the
values of AL and BL if carry is generated |
2000:102B |
MOV |
[SI],AL |
Copy the contents
of register AL to the memory location stored by register SI |
2000:102D |
MOV |
[DI],BL |
Copy the contents
of register BL to the memory location stored by register DI |
2000:102F |
INC |
DI |
Increment the register
DI value by 1 |
2000:1030 |
DEC |
CL |
Decrease the CL
value by 1 |
2000:1032 |
JNZ |
1021 |
Jump to the
memory location 1021 if CL is not equal to zero |
2000:1034 |
INT |
3 |
Interrupt the
current operation. |
2000:1035 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF:1035 |
|
|
Dyna_86> |
R |
|
|
(b) ALP to find the smallest number
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,51 |
Load the 8 bit
no.51 into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,A5 |
Load the 8 bit
no.A5 into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,75 |
Load the 8 bit
no.75 into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,C7 |
Load the 8 bit
no.C7 into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,20 |
Load the 8 bit
no.20 into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CL,04 |
Set a counter CL
to value 4 |
2000:101B |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:101E |
MOV |
DI,2001 |
Set the register
DI to location 2001 |
2000:1021 |
MOV |
AL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register AL |
2000:1023 |
MOV |
BL,[DI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register BL |
2000:1025 |
CMP |
AL,BL |
Compare the
contents of Register AL and BL |
2000:1027 |
JC |
102F |
Jump to the
memory location 102F if Carry is generated |
2000:1029 |
XCHG |
AL,BL |
Exchange the
values of AL and BL if carry is generated |
2000:102B |
MOV |
[SI],AL |
Copy the contents
of register AL to the memory location stored by register SI |
2000:102D |
MOV |
[DI],BL |
Copy the contents
of register BL to the memory location stored by register DI |
2000:102F |
INC |
DI |
Increment the
register DI value by 1 |
2000:1030 |
DEC |
CL |
Decrease the CL
value by 1 |
2000:1032 |
JNZ |
1021 |
Jump to the
memory location 1021 if CL is not equal to zero |
2000:1034 |
INT |
3 |
Interrupt the
current operation. |
2000:1035 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF:1035 |
|
|
Dyna_86> |
R |
|
|
Result:
The O/P generated for finding the
largest number program is AX= 00C7, BX=0020, CX=0000, DX=0000, SP=06FD,
BP=0000, SI=2000, and, for finding the smallest number program is AX= 0020,
BX=0020, CX=0000, DX=0000, SP=06FD, BP=0000, SI=2000
Experiment 8
Aim: WALP for arranging in ascending
and descending order of given 5 numbers
Tool Required: Dyna Trainer Kit
Program:
(a) ALP to arrange in ascending
order
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,B1 |
Load the 8 bit no.B1
into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,95 |
Load the 8 bit no.95
into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,A5 |
Load the 8 bit no.A5
into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,61 |
Load the 8 bit no.61
into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,D7 |
Load the 8 bit no.D7
into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CH,04 |
Set a counter CH
to value 4 |
2000:101B |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:101E |
MOV |
DX,2001 |
Set the register
DX to location 2001 |
2000:1021 |
MOV |
DI,DX |
Move the contents
of register DX to DI |
2000:1023 |
MOV |
CL,CH |
Move the contents
of register CH to CL |
2000:1025 |
MOV |
AL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register AL |
2000:1027 |
MOV |
BL,[DI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register BL |
2000:1029 |
CMP |
AL,BL |
Compare the
contents of Register AL and BL |
2000:102B |
JC |
1033 |
Jump to the
memory location 1033 if Carry is generated |
2000:102D |
XCHG |
AL,BL |
Exchange the
values of AL and BL if carry is generated |
2000:102F |
MOV |
[SI],AL |
Copy the contents
of register AL to the memory location stored by register SI |
2000:1031 |
MOV |
[DI],BL |
Copy the contents
of register BL to the memory location stored by register DI |
2000:1033 |
INC |
DI |
Increment the
register DI value by 1 |
2000:1034 |
DEC |
CL |
Decrease the CL
value by 1 |
2000:1036 |
JNZ |
1025 |
Jump to the
memory location 1025 if CL is not equal to zero |
2000:1038 |
INC |
SI |
Increment the
register SI value by 1 |
2000:1039 |
INC |
DX |
Increment the
register DX value by 1 |
2000:103A |
DEC |
CH |
Decrement the
register CH value by 1 |
2000:103C |
JNZ |
1021 |
Jump to the
memory location 1021 if CL is not equal to zero |
2000:103E |
MOV |
AL,[2000] |
Move the contents
of location [2000] to register AL |
2000:1041 |
MOV |
BL,[2001] |
Move the contents
of location [2001] to register BL |
2000:1045 |
MOV |
CL,[2002] |
Move the contents
of location [2002] to register CL |
2000:1049 |
MOV |
DL,[2003] |
Move the contents
of location [2003] to register DL |
2000:104D |
MOV |
DH,[2004] |
Move the contents
of location [2004] to register DH |
2000:1051 |
INT |
3 |
Interrupt the
current operation. |
2000:1052 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF:1052 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 0061, BX=0095, CX=00A5,
DX=D7B1, SP=06FD, BP=0000, SI=2004
Conclusion:
The ascending order is: AL=61 BL=95 CL=A5 DL=B1 DH=D7
(b) ALP to arrange in descending
order
Address |
Opcode |
Operand |
Comment |
Dyna_86> |
A |
2000:1000 |
This specifies the
segment and offset (effective address) |
2000:1000 |
MOV |
AL,B1 |
Load the 8 bit
no.B1 into 8 bit register AL |
2000:1002 |
MOV |
[2000], AL |
Load the value of 8
bit register AL into memory location [2000] |
2000:1005 |
MOV |
AL,95 |
Load the 8 bit
no.95 into 8 bit register AL |
2000:1007 |
MOV |
[2001], AL |
Load the value of 8
bit register AL into memory location [2001] |
2000:100A |
MOV |
AL,A5 |
Load the 8 bit
no.A5 into 8 bit register AL |
2000:100C |
MOV |
[2002], AL |
Load the value of 8
bit register AL into memory location [2002] |
2000:100F |
MOV |
AL,61 |
Load the 8 bit
no.61 into 8 bit register AL |
2000:1011 |
MOV |
[2003], AL |
Load the value of 8
bit register AL into memory location [2003] |
2000:1014 |
MOV |
AL,D7 |
Load the 8 bit
no.D7 into 8 bit register AL |
2000:1016 |
MOV |
[2004], AL |
Load the value of 8
bit register AL into memory location [2004] |
2000:1019 |
MOV |
CH,04 |
Set a counter CH
to value 4 |
2000:101B |
MOV |
SI,2000 |
Set the register
SI to location 2000 |
2000:101E |
MOV |
DX,2001 |
Set the register
DX to location 2001 |
2000:1021 |
MOV |
DI,DX |
Move the contents
of register DX to DI |
2000:1023 |
MOV |
CL,CH |
Move the contents
of register CH to CL |
2000:1025 |
MOV |
AL,[SI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register AL |
2000:1027 |
MOV |
BL,[DI] |
Load the data
saved in SI, i.e., data at the address saved at SI into 8 bit register BL |
2000:1029 |
CMP |
AL,BL |
Compare the
contents of Register AL and BL |
2000:102B |
JNC |
1033 |
Jump to the
memory location 1033 if Carry is not generated |
2000:102D |
XCHG |
AL,BL |
Exchange the
values of AL and BL if carry is generated |
2000:102F |
MOV |
[SI],AL |
Copy the contents
of register AL to the memory location stored by register SI |
2000:1031 |
MOV |
[DI],BL |
Copy the contents
of register BL to the memory location stored by register DI |
2000:1033 |
INC |
DI |
Increment the
register DI value by 1 |
2000:1034 |
DEC |
CL |
Decrease the CL
value by 1 |
2000:1036 |
JNZ |
1025 |
Jump to the
memory location 1025 if CL is not equal to zero |
2000:1038 |
INC |
SI |
Increment the
register SI value by 1 |
2000:1039 |
INC |
DX |
Increment the
register DX value by 1 |
2000:103A |
DEC |
CH |
Decrement the
register CH value by 1 |
2000:103C |
JNZ |
1021 |
Jump to the
memory location 1021 if CL is not equal to zero |
2000:103E |
MOV |
AL,[2000] |
Move the contents
of location [2000] to register AL |
2000:1041 |
MOV |
BL,[2001] |
Move the contents
of location [2001] to register BL |
2000:1045 |
MOV |
CL,[2002] |
Move the contents
of location [2002] to register CL |
2000:1049 |
MOV |
DL,[2003] |
Move the contents
of location [2003] to register DL |
2000:104D |
MOV |
DH,[2004] |
Move the contents
of location [2004] to register DH |
2000:1051 |
INT |
3 |
Interrupt the
current operation. |
2000:1052 |
|
|
Press Enter |
Dyna_86> |
G |
2000:1000 and press
Enter |
|
Break at |
1FFF:1052 |
|
|
Dyna_86> |
R |
|
|
Result:
AX= 00D7, BX=00B1, CX=00A5, DX=6195,
SP=06FD, BP=0000, SI=2004
Conclusion:
The descending order is: AL=D7 BL=B1 CL=A5 DL=95 DH=61
Experiment 9
Aim: WALP for interfacing of 8255
Programming Peripheral Interface (PPI) with 8086
Tool Required: Dyna Trainer Kit
Features of 8255:
The 8255A
is a programmable peripheral interface (PPI) device designed for use in Intel
microcomputer systems. Its function is that of a general purposes I/O component
to Interface peripheral equipment to the microcomputer system bush. The
functional configuration of the 8255A is programmed by the systems software so
that normally no external logic is necessary to interface peripheral devices or
structures. The important features are:
·
3 8-bit IO ports PA, PB,
PC
- PA
can be set for Modes 0, 1, 2. PB for 0,1 and PC for mode 0 and for BSR.
Modes 1 and 2 are interrupt driven.
- PC
has 2 4-bit parts: PC upper (PCU) and PC lower (PCL), each can be set
independently for I or O. Each PC bit can be set/reset individually in BSR
mode.
- PA
and PCU are Group A (GA) and PB and PCL are Group B (GB)
- Address/data
bus must be externally demux'd.
- TTL
compatible.
- Improved
dc driving capability
Pin Diagram of 8255
Block Diagram of
8255
Program:
Address |
Opcode |
Operand |
Comment |
||||||||
Dyna_86> |
A |
2000:1000 |
|
||||||||
2000:1000 |
MOV |
AL,90 |
Load the 8 bit
no.90 into 8 bit register AL |
||||||||
2000:1002 |
OUT |
33,AL |
At CWR (address 33)
we are putting the data of AL. CWR
|
||||||||
2000:1004 |
IN |
AL,30 |
Port A (address
30)is acting as input to AL |
||||||||
2000:1006 |
OUT |
31,AL |
Data from AL is
sent to PB. So PB is Output Port |
||||||||
2000:1008 |
INT |
3 |
Interrupt the
current operation. |
||||||||
2000:1009 |
|
|
Press Enter |
||||||||
Dyna_86> |
G |
2000:1000 and press
Enter |
|
||||||||
Break at |
1FFF: 1009 |
|
|
||||||||
Dyna_86> |
R |
|
|
Result: Data on Port A is PA0-PA7
is 10010000. Data on Port B is PB0-PB7 is 10010000. So
equal data is observed.
Experiment 10
Aim: WALP to add two 8 bit nos. using
8051 microcontroller
Tool Required: Dyna Trainer Kit
Program:
Address |
Opcode |
Operand |
Comment |
Dyna_51> |
A |
9402 |
|
9402: |
MOV |
A,#06 |
# means immediate
data. So no.06 will be copied to A |
9404: |
MOV |
R0,#05 |
No.05 will be
copied to R0 |
9406: |
ADD |
A,R0 |
Add the contents of
register A and R0 and store the result in register A |
9407: |
JUMP |
6000 |
Instruction to
Terminate the program |
|
|
|
Press Enter |
Dyna_51> |
T |
9402 |
It means trace the
location 9402 and start the execution of the program step by step |
Result:
A= 0B, PSW=01, SP=4A, DPTR=836B, PC=1770
Reference:-
- https://ggnindia.dronacharya.info/ECE/Downloads/Labmanuals/AUG09_DEC09/V_Sem/MICROPROCESSOR_lab_VthSem_ECE.pdf
- https://webstor.srmist.edu.in/web_assets/srm_mainsite/files/2017/cse-lab-manual-microprocessor.pdf
- https://www.iare.ac.in/sites/default/files/lab1/IARE_CSE_MPI_LAB_MANUAL.pdf
- https://www.gopalancolleges.com/gcem/course-material/ece/manuals/sem-VI/Microprocessor-lab-manual-10ECL68.pdf
- http://www.cittumkur.org/divi/wp-content/uploads/2017/06/MP-LAB-MANUAL-2015.pdf
- https://docplayer.net/94967547-Microfriend-dyna-86l-lcd-user-s-manual.html
- https://aggarwalvipul.files.wordpress.com/2018/04/mil-final-manual_2012_2015.pdf
Comments
Post a Comment