Professional Documents
Culture Documents
Electronics and Microprocessor Lab Manual PDF
Electronics and Microprocessor Lab Manual PDF
LABORATORY MANUAL
LIST OF EXEPRIMENTS
Sl.No.
1
2
a) Multiplication of 2 - 8 numbers
b) Division of 2 - 8 bit numbers
a) Ascending order
b) Descending order
a) Fibonaci Series
b) Sum of finite series
7
8
10
a) Rolling Display
b) Flashing Display
11
12
13
14
Microcontroller
a) Addition
b) Subtraction
c) Multiplication
d) Division
Page No.
S0 S1
S0 and S1 are status signal which provides different status and functions.
RD
1.
2.
WR
1.
2.
HOLD
1.
This indicates if any other device is requesting the use of address and data bus.
HLDA
1.
2.
INTR
1.
2.
INTA
1.
2.
RESET IN
1.
This pin resets the program counter to 0 to 1 and results interrupt enable and
HLDA flip flops.
X1, X2
These are the terminals which are connected to external oscillator to produce the
necessary and suitable clock operation.
SID
This pin provides serial input data
SOD
This pin provides serial output data
VCC and VSS
1.
VCC is +5V supply pin
2.
VSS is ground pin
Specifications
1. Processors
Intel 8085 at E144 MHz clock
2. Memory
Monitor RAM:
0000 IFFF
EPROM Expansion: 2000 3FFFs
0000 FFF
System RAM:
4000 5FFF
Monitor data area
4100 5FFF
RAM Expansion
6000 BFFF
3. Input / Output
Parallel: A8 TTL input timer with 2 number of 32-55 only input timer available in -85 EBI.
Serial: Only one number RS 232-C, Compatible, crucial interface using 8281A
Timer: 3 channel -16 bit programmable units, using 8253 channel 0 used for no band late.
Clock generator. Channel 1 is used for single stopping used program.
Display: 6 digit 7 segment LED display with filter 4 digit for adder display and 2 digit for
data display.
Key board: 21 keys, soft keyboard including common keys and hexa decimal keys.
RES: Reset keys allow to terminate any present activity and retain to - 85 its on initialize
state.
RD
1
i)
ii)
i)
ii)
iii)
i)
ii)
iii)
i)
ii)
iii)
i)
ii)
iii)
i)
ii)
iii)
i)
ii)
REG
C
2
TN
B
3
TR
F
4
BLOC
A
5
FILL
L
6
SER
H
7
F2
i)
ii)
Register key S
Register key I
SNG
i)
ii)
iii)
PH
i)
ii)
i)
ii)
iii)
i)
ii)
Hex key D
Compare 2 memory block
i)
ii)
iii)
i)
ii)
Hex key E
Insert by test into memory (RAM)
i)
ii)
Hex key F
Delete byte from memory RAM
I
8
G0
PL
9
A
F3
C
SH
MOV
D
CMP
B
SL
BC
E
INS
F
DEL
MICRO SSEB
+5V@ 800 mA
ICs Used
8085
8253
8255
8279
8251
2764
6264
7414
7432
7409
7400
7404
74373
74139
74138
8 bit p
programmable internal timer
programmable peripheral interface
programmable key boards / display interface
programmable communication interface
8 KV VV EPROM
8K STATIC PROM
Hex inverter
Quad 21/p OR GATE
Quad 21/p AND GATE
NAND Gate
Dual D-FF
Octal D Latch
Dual 2 to 4 line decoder
3 to 8 line decoder
Result:
Thus 8085 microprocessor was studied successfully.
10
:
:
:
:
:
:
:
:
:
:
:
:
11
No
Check for
carry?
Yes
Increment carry by one
Store the added value in accumulator
Move the contents of carry into accumulator
END
12
Address
4100
4102
4105
Mnemonics
MVI C,00
LDA 4300
MOV, B,A
Hex Code
OE, 00
3A, (00, 43)
47
4106
LDA 4301
4109
410A
410D
ADD B
JNC
INR C
80
D2, 0E, 41
OC
STA 4302
32 (02, 43)
4111
MOV A,C
79
4112
STA 4303
32 (03, 43)
4115
HLT
76
410E
Label
Loop
Comments
Initialize the carry as zero
Load the first 8 bit data
Copy the value of 8 bit data
into register B
Load the second 8 bit data
into the accumulator
Add the hoo values
Jump on if no carry
If carry is there increment it
by one
Stone the added value in the
accumulator
More the value of carry to
the
accumulator
from
register C
Store the value of carry in
the accumulator
Stop the program execution
Input
Without carry
Input Address
4300
4301
Value
04
02
Output Address
4302
4303
Value
06
00 (carry)
Input Address
4300
4301
Value
FF
FF
Output Address
4302
4303
Value
FE
01 (carry)
Output
With carry
Calculation
(1)
1111 1111
1111 1111
--------------1111 1110
=========
F
E
Result:
The assembly language program for 8 bit addition of two numbers was executed
successfully by using 8085 micro processing kit.
13
:
:
:
:
:
:
:
:
:
:
:
:
:
14
START
No
Check for
carry?
Yes
Increment carry by one
1s compliment of 2nd value
Add 1 to 1s compliment for 2s compliment
Store the value of result in accumulator
Move the carry into the accumulator
Store the value of carry in accumulator
END
15
Address
4100
4102
Label
Mnemonics
MVI C,00
LDA 4300
Hex Code
OE, 00
3A, (00, 43)
MOV, B,A
LDA 4301
47
3A, (01, 43)
SUB B
INC
INR C
90
D2, 0E, 41
OC
CMA
ADI, 01
2F
6, 01
4111
4114
STA 4302
MOV A,C
32,02,43
79
4115
4118
STA 4303
HLT
32,03,43
76
4105
4106
4109
410A
410D
410E
410F
Loop
Loop
Comments
Initialize the carry as zero
Load the first 8 bit data into the
accumulator
Copy the value into register B
Load the 2nd 8 bit data into the
accumulator
Subtract both the values
Jump on if no borrow
If borrow is there, increment it by
one
Compliment of 2nd data
Add one to 1s compliment of 2nd
data
Store the result in accumulator
Moul the value of borrow into the
accumulator
Store the result in accumulator
Stop Program execution
Input
Without borrow
Input Address
4300
4301
Value
05
07
Output Address
4302
4303
Value
02
00 (borrow)
Input Address
4300
4301
Value
07
05
Output Address
4302
4303
Value
02
01 (borrow)
Output
Calculation
CMA
ADJ 0.1
05 -
05 07
07 0111
1000
0001
-----1001
0101
-----1110 (-2)
16
Result:
The assembly language program subtraction of two 8 bit numbers was executed
successfully by using 8085 micro processing kit.
17
:
:
Step 3
Step 4
:
:
Step 5
Step 6
Step 7
Step 8
Step 9
:
:
:
:
:
Step 10
Step 11
Step 12
:
:
:
18
START
C = 00H
Load HL with 1st Data
Transfer HL - DE
Load HL with 2nd Data
DE + HL = HL
If
Cy =0
C = C + 01
Store HL in memory (SUM)
Transfer C - A
STOP
19
Address
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
Label
Mnemonics
MVI
C,00
LHLD
XCHG
LHLD
4802
DAD
JNC
Ahead
450E
450A
450B
450C
450D
450E
450F
4510
4511
4512
4513
4514
4515
AHEAD
4800
INR
SHLD
C
4804
MOV
STA
C,A
4806
HLT
Input
Without
Input Address
4800
4801
4802
4803
Value
01 (addend)
04
02 (augend)
03 (augend)
Output Address
4804
4805
4806
Value
03 (sum)
07 (sum)
00 (carry)
Output
Calculation
20
Hex Code
0E
00
2A
00
48
EB
2A
02
48
19
D2
0E
45
0C
22
04
48
79
32
06
48
76
Comments
C = 00H
HL 1st No.
HL DE
HL 2nd No.
Double addition DE +
HL
If Cy = 0, G0 to 450E
C = C + 01
HL 4804 (sum)
Cy A
Cy 4806
Stop excution
With carry
Calculation
Input Address
4800
4801
4802
4803
Value
FF (addend)
DE (addend)
96 (augend)
DF (augend)
Output Address
4804
4805
4806
Value
95 (sum)
BE (sum)
01 (carry)
Result:
The assembly language program for addition of two 16 bit numbers was executed
using 8085 micro processing kit.
21
:
:
:
:
:
:
Step 7
Step 8
Step 9
:
:
:
Step 10
Step 11
:
:
22
START
C = 00H
Load HL with 1st Data
Transfer HL - DE
Load HL with 2nd Data
Transfer E A (LSB)
A = A L (LSB)
Store A in memory (LSB)
Transfer D A (MSB)
A A H Borrow (MSB)
STOP
23
Address
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
450A
450B
450C
450D
450E
450F
4510
4511
4512
4513
Label
Mnemonics
MVI
C,00
LHLD
4800
XLHG
LHLD
4802
MOV
SUB
STA
A,E
L
4804
MOV
SBB
STA
A,D
H
4805
HLT
Input
Without borrow
Input Address
4800
4801
4802
4803
Value
07
08
05
06
Output Address
4804
4805
4807
Value
02
02
00
Output
24
Hex Code
0E
00
2A
00
48
EB
2A
02
48
7B
95
32
04
48
7A
9C
32
05
48
76
Comments
C = 00H
L 1st No.
HL DE
HL 2nd No.
LSB of 1 to A
AAL
A memory
MSB of 1 to A
A- A H
A memory
Stop execution
With borrow
Calculation
05
06
Input Address
4800
4801
4802
4803
Value
05
06
07
08
Output Address
4804
4805
4806
Value
02
02
01
07
05
06
CMA
ADI
0101 0110
1010 1001
0000 0001
--------------1010 1010
05
06
(1)
08
07
08
CMA
ACI
0111 1000
1000 0111
0000 0001
-------------1000 1000
07
08
1010 1010
1000 1000
--------------0010 0010
02
02
Result:
The assembly language program for subtraction of two 16 bit numbers was executed
by using 8085 micro processing kit.
25
:
:
:
:
:
:
:
:
:
:
:
Step 12
Step 13
Step 14
:
:
:
26
START
No
Check for
carry?
Yes
Increment carry
Decrement 2nd number
No
2nd Number
Yes
Store the value f carry in accumulator
END
27
Address
4100
4103
Label
Mnemonics
LDA 4500
MOV B,A
Hex Code
3A, 00, 45
47
4104
4107
LDA 4501
MOV C,A
3A, 01, 45
4F
4108
MVI A, 00
3E, 00
410A
410C
MVI D, 00
ADD B
16, 00
80
410D
4110
4111
4112
4115
INC
INR D
DCR C
JNZ
STA 4502
D2 11, 41
14
OD
C2 0C, 41
32 02, 45
4118
MOV A,D
7A
4119
STA 4503
32,03,45
411C
HLT
76
Comments
Load the first 8 bit number
Move the 1st 8 bit data to
register B
Load the 2nd 16 it number
Move the 2nd 8 bit data to
register C
Intialise the accumulator as
zero
Intialise the carry as zero
Add the contents of B and
accumulator
Jump if no carry
Increment carry if there is
Decrement the value C
Jump if number zero
Store
the
result
in
accumulator
Move the carry into
accumulator
Store
the
result
in
accumulator
Stop the program execution
Input
Input Address
4500
4501
Value
04
02
Output Address
4502
4503
Value
08
00
Output
Result:
The assembly language program for multiplication of two 8 bit numbers was executed
using 8085 micro processing kit.
28
:
:
:
:
:
:
:
:
:
:
:
:
:
:
29
START
No
Check for
carry?
Increment carry
Decrement 2nd number
Dividend
Yes
Store the Quotient in accumulator
Move the remainder to accumulator
Store the remainder in accumulator
END
30
Address
4100
4102
4105
Label
Mnemonics
MVI C, 00
LDA, 4500
MOV B,A
Hex Code
0E, 00
3A 00, 45
47
LDA, 4501
CMP B
JC (LDP)
3A 01, 45
B8
DA 12,41
SUB B
90
INR C
JMP (LDP, 41)
0C
C3, 0D, 41
STA 4502
32 02,45
4115
MOV A,C
79
4116
STA 4503
32 03,45
4119
HLT
76
4106
4109
410A
410D
Loop 2
410E
410F
4112
Loop 1
Input
Input Address
4500
4501
Value
09
02
Output Address
4502
4503
Value
04 (quotient)
01 (reminder)
Output
Quotient
Carry
1001
0010 I
-----0111
0010 II
-----0101
0010 III
-----0011
0010 IV
-----0001 carry
- 04
- 01
31
Comments
Intialise Quotient as zero
Get the 1st data
Copy the 1st data into
register B
Get the 2nd data
Compare the 2 values
Jump if dividend lesser than
divisor
Subtract the 1st value by 2nd
value
Increment Quotient (410D)
Jump to Loop 1 till the value
of dividend becomes zero
Store
the
value
in
accumulator
Move the value of remainder
to accumulator
Store the remainder value in
accumulator
Stop the program execution
Result:
The assembly language program for division of two 8 bit numbers was executed using
8085 micro processing kit.
32
:
:
Step 3
Step 4
Step 5
Step 6
Step 7
Step 8
:
:
:
:
:
:
Step 9
Step 10
Step 11
Step 12
:
:
:
:
33
START
Compare
the datas
A<M
No
Yes
C=0?
No
Yes
Decrement register B
No
B=0?
END
34
Address
4100
4103
4104
4105
4108
4109
410A
410B
410C
410D
Mnemonics
LDA 4500
MOV B,A
DCR B
LXI H, 4500
MOV C,M
DCR C
INX H
MOV A,M
INX H
CMP M
Hex Code
3A, 00,45
47
05
21, 00,45
4E
0D
23
7E
23
BE
410E
JC
DA, 16, 41
4111
MOV D,M
56
4112
4113
MOV M,A
DCX H
77
2B
4114
MOV M,D
72
INX H
DCR C
JNZ Loop 1
DCR B
JNZ Loop 2
HLT
23
0D
C2, 0B, 41
05
C2, 05, 41
76
4115
4116
4117
411A
411B
411E
Label
Loop 3
Loop 2
Loop 1
Comments
Load the number of values
Move it B register
For (N-1) comparisons
Set the pointer for array
Count for (N-1) comparisons
For (N-1) comparisons
Increment pointer
Get one data in array A
Increment pointer
Compare
next
with
accumulator
If content less memory go
ahead
If it is greater than
interchange it
Memory content
Exchange the content of
memory pointed by HL by
previous location
One in by HL and previous
location
Increment pointer
Decrement C register
Repeat until C is zero
Decrement in B values
Repeat till B is zero
Stop the program execution
Input
Input Address
4500
4501
4502
4503
4504
Value
04
AB
BC
01
0A
Output Address
4500
4501
4502
4503
4504
Value
04
01
0A
AB
BC
Result:
The assembly language program for sorting numbers in ascending order was executed
by microprocessor kit.
35
:
:
Step 3
Step 4
:
:
Step 5
Step 6
Step 7
Step 8
:
:
:
:
Step 9
Step 10
Step 11
Step 12
36
START
A<M
No
Exchange the contents
C=0?
Decrement register C
Yes
Decrement register C
Decrement
No
B=0?
No
END
Yes
37
Address
4100
Mnemonics
LDA 4500
Hex Code
3A, 00,45
MOV B,A
DCR B
LXI H, 4500
MOV C,M
DCR C
INX H
MOV A,M
INX H
CMP M
ICE, Loop 1
47
05
21, 00,45
4E
0D
23
7E
23
BE
D2, 16,41
4111
MOV D,M
56
4112
MOV M,A
77
4113
4114
DCX H
MOV M,D
2B
72
4115
4116
4117
411A
411B
INX H
DCR C
JNZ Loop 2
DCR B
JNZ Loop 3
23
0D
C2, 0B, 41
05
C2, 05, 41
HLT
76
4103
4104
4105
4108
4109
410A
410B
410C
410D
410E
Label
Loop 3
Loop 2
Loop 1
411E
Comments
Load the number of values
in accumulator
Move it to B register
For (N-1) comparisons
Set the pointer for array
Count for (N-1) comparisons
For (N-1) comparisons
Increment pointer
Get one data from array
Increment pointer
Compare next with number
If content A is greater than
content of HL pair
If it is greater than
interchange the datas
Accumulator to memory
value
Decrement memory pointer
Move the old to HL and
previous location
Increment pointer
Decrement C register
Repeat till C is zero
Decrement in B values
Jump to loop till the value of
B be
Stop the program execution
Input
Input Address
4500
4501
4502
4503
4504
Value
04
AB
BC
01
0A
Output Address
4500
4501
4502
4503
4504
Value
04
BC
AB
0A
01
Result:
The assembly language program for sorting 4 numbers in descending order was
executed successfully using microprocessor kit.
38
:
:
Step 3
Step 4
Step 5
:
:
:
Step 6
Step 7
Step 8
Step 9
Step 10
Step 11
Step 12
Step 13
:
:
:
:
:
:
:
:
39
START
No
Check for
carry?
Yes
Increment B register
Decrement C register by 1
Is
C=0?
40
Address
4100
Mnemonics
LDA 4200
Hex Code
3A 00,42
4103
4104
MOV B,A
LXI H, 4201
4F
21,01,42
4107
4108
4109
Loop
SUB A
MOV B,A
ADD M
97
47
86
Skip
JNC Skip
INR B
INX H
D2, 0E, 41
04
23
410F
4110
4113
DCR C
JNZ Loop
STA 4400
0D
C2, 09, 41
32,00,44
4116
MOV A,B
78
4117
411A
STA 4401
HLT
32,01,44
76
410A
410D
410E
Label
Input
Input Address
4200
4201
4202
4203
4204
Value
04
07
09
03
04
Output Address
4400
4401
Value
17
00
Output
07 + 09 + 03 + 04 = 23
= 17 (in Hexa decimal)
(0F + 8 = 233)
0F
08
=
=
0000 1111
0000 1000
--------------0001 0111
1
7
41
Comments
Load the accumulator with
number of values
Move it from A to C
Load the starting address of
data array
Intialise A as 00
Intialise B as 00
Add the previous sum with
next data
Jump on if no carry
Increment carry by one
Increment pointer for next
data
Decrement C by one
Jump if not zero
Store
the
sum
in
accumulator
Move the value of carry to A
from B
Store the carry in memory
End of program
Result:
The assembly language program for sum of datas was executed successfully using
8085 microprocessor kit.
42
:
:
:
Step 4
Step 5
Step 6
:
:
:
Step 7
Step 8
Step 9
Step 10
:
:
:
:
Memory address
4250
4251
Content
05
(12010)
43
START
If
Number < 2 ?
Result = 1
Load counter
Initialize result
CALL facto
END
44
Facto
Result = Result X no
No = No -1
No
If
No = 0 ?
Yes
RET
45
Memory
Location
4200
4201
4202
4203
4204
Hex Code
4205
4206
4207
4208
4209
420A
420B
DA
17
42
5F
16
00
3D
420C
Label
3A
50
42
FE
02
Mnemonics
Op code
Operand
LDA
4250
CPI
02H
JC
Loop 1
MOV
MVI
E,A
D,00
DCR
4F
MOV
C,A
420D
420E
420F
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
421A
421B
421C
421D
Sub Routine
4600
4601
4602
4603
CD
00
46
EB
22
51
42
C3
1D
42
21
00
01
22
51
42
76
CALL
Facto
Loop 1
XCHG
SHLD
4251
JMP
Loop 3
LXI
H,0001H
SHLD
4251
Loop 3
HLT
21
00
00
41
Facto
LXI
H,0000
MOV
B,C
4604
19
Loop 2
DAD
4605
4606
4607
4608
05
C2
04
46
DCR
JNZ
B
Loop 2
46
Comments
Get the number
accumulator
in
result
in
EB
0D
XCHG
DCR
460B
460C
460D
460E
C4
00
46
C9
CNZ
Facto
RET
Memory address
4250
4251
[DE] [HL]
Decrement
counter
value
Call on no zero to facto
(i.e repeat process till
zero flag for c = 1)
Return
to
main
program
Content
04
18
1 x 2 x 3 x 4 = 24
Hexadecimal
16 24
1-8
Result:
Thus, factorial program was done successfully
47
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
48
START
49
Address
4200
Label
Mnemonics
LDA 4300
Hex Code
3A, 00, 43
4203
4205
4206
SUI 02
MOV D,A
LXI H, 4301
D6, 02
57
21,01,43
4209
420B
420C
420E
420F
4211
4213
4214
4215
4216
4217
4218
4219
421A
421D
MVI M,00
INX H
MVI M, 01
INX H
MVI B,00
MVI, C, 01
MOV A,B
ADD C
MOV B,C
MOV C,A
MOV M,A
INX H
DCR D
JNZ loop
HLT
36,00
23
36,01
23
06,00
0E, 01
78
81
41
4F
77
23
15
C2, 13,42
76
Loop
Comments
Store the length of series in
A
Decrement A by 02
Move A to D (counter)
Load the starting address of
array
Intialise 4301 as 00
Increment pointer
Initialize 2nd as 01
Increment pointer
Intialise B as 00
Intialise C as 01
Move B to A
Add A and C
Move C to B
Move A to C
Move the result to memory
Increment pointer
Decrement counter
If D = 0, jump to loop
Stop the program
Input
Input Address
4300
Value
05
Output Address
4301
4302
4303
4304
4305
Value
00
01
01
02
03
Output
00 + 01 = 01
01+ 01 = 02
02 + 01 = 03
Result:
The assembly language for Fibonaci series was executed successfully using 8085
microprocessor kit.
50
:
:
:
:
:
:
:
Step 8
Step 9
:
:
Step 10
Step 11
51
START
Increment BC pair
Decrement DE pair
Move E to a & or operation with D
Result or 1?
No
Yes
END
52
Memory
Location
4100
4103
Hex Code
Label
4106
4107
2A,02,42
EB
LHLD
XCHG
4202
4108
410B
410E
410F
21,00,00
01,00,00
39
D2, 13, 41
LXI H
LXI B
DAD
JNC
0000
0000
SP
Loop
4112
4113
03
1B
INX
DCX
B
D
4114
4115
7B
B2
MOV
ORA
A,E
D
4116
C2,0E,41
JNZ
Next
4119
22,04,42
SHLD
4204
411C
411D
411E
69
60
22,06,42
MOV
MOV
SHLD
L,C
H,B
4206
4121
76
HLT
2A,00,42
F9
Next
Loop
Mnemonics
Op code
Operand
LHLD
4200
SP HL
Comments
Get the 1st data in HL
Save it in stack
pointer4106
Get the 2nd data in HL
Exchange HL and
DC
Make HL 0000
Make BC 0000
Add SP and HL
Jump to loop if no
carry
Increment BC by one
Decrement DE by
one
Make E A
OR gate between A
&D
Jump on if number
zero
Store the LSB in
memory
Make C to L
Make B to H
Store the MSB in
memory
Stop the program
Input
Input Address
4200
4201
4202
4203
Value
04
07
02
01
Output Address
4204
4205
4206
4207
Value
08
12
01
00
Output
Result:
Thus the assembly language program for 16 bit multiplication was executed
successfully.
53
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
54
START
Check for
if cy = 1
Yes
END
55
Subtract HL from
DE increment BC pair
Address
4500
4503
4506
4507
450A
450B
450C
450D
450E
450F
4510
4513
4514
4517
4518
451B
451C
451D
4520
Label
Loop 2
Loop 1
Mnemonics
LXI B,0000
LHLD 4802
XCHG
LHLD 4800
MOV A,L
SUB E
MOV L,A
MOV A,H
SBB D
MOV H,A
JC loop 1
INX B
JMP loop 2
DAD D
SHLD 4806
MOV L,C
MOV H,B
Hex Code
0,00,00
2A,02,48
EB
2A,00,48
7D
93
6F
7C
9A
67
DA,17,45
03
C3, 0A, 45
19
22,06,48
69
60
SHLD 4804
HLT
22,04,48
76
Comments
Intialise Quotient as 0000
Load the divisor in HL
Exchange HL and DE
Load the dividend
Move the L value to A
(A-E) A
A- L (A value is move t L)
H A (a is stored with H)
Subtract D from A
Then A is moved to H
If cy is present go to loop 1
Increment BC pair by 1
Jump to loop 2
DE and HL pair all added
HL is stored in memory
Move C register data to L
Move B register data to
H
Store the result in HL pair
Stop the program
Input
Input Address
4800
4801
4802
4803
Value
04
00
02
00
Output Address
4804
4805
4806
4807
Value
02
00
FE
FF
Output
Result:
Thus the assembly language program for 16 bit division was executed successfully.
56
:
:
Step 3
Step 4
Step 5
Step 6
:
:
:
:
Step 7
Step 8
Step 9
Step 10
Step 11
Step 12
:
:
:
:
:
:
57
START
Cy = ?
Cy = ?
END
58
Memory
Location
4100
Hex Code
Label
4102
53
MOV
D,E
4103
4106
3A,00,42
C3,06,41
LDA
CPI
4200
64
4108
DA,11,41
JC
TEN
410B
410D
D6, 64
IC
SUI
INR
64
E
410E
C3,06,41
JMP
HUND
4111
C3, 0A
CPI
0A
4113
DA,1C,41
JC
UNIT
4116
4118
D6, 0A
14
SUI
INR
0A
D
4119
411C
C3,11,41
4F
JMP
MOV
TEN
4A
411D
7A
MOV
A,D
411E
411F
4120
07
07
07
RLC
RLC
RLC
4121
4122
4123
07
81
32,50,42
RLC
ADD
STA
C
42,50
4126
4127
7B
32,51,42
MOV
STA
A,E
4251
412A
76
HLT
0E,00
HUND
TEN
UNIT
Mnemonics
Op code
Operand
MVI
E,00
59
Comments
Clear
E
register
(Hund)
Clear D register
(tens)
Get the data in A
Compare the data with
64
If content is less jump
to ten
Subtract data by 64
Increment carry each
time
Jump to hundred &
repeat
Compare the data with
0A
If data is less jump to
unit
Subtract the data by 0A
Increment D each
time
Jump to ten & repeat
Move the value A to
C
Move the value D to
A
Rotate the value of A
Of A so that
Lower
and
upper
niddle
Gets exchanged
Add A and C
Save ten & units in
M
Move to E to A
Save hundreds unit in
A
Stop
the
program
execution
Value
54
Output Address
4250
4251
Value
84
00
Output
Result:
Thus the binary to BCD conversion was executed successfully
60
:
:
:
:
:
:
:
:
:
:
Step 11
Step 12
Step 13
:
:
:
61
START
Yes
Zf = 0 ?
END
62
Memory
Location
4100
4103
4104
4106
4107
4108
4109
410A
Hex Code
410B
410C
410E
410F
4110
4113
4114
4115
4117
4118
411B
AF
0E,0A
08
0D
C2,0E,41
47
7B
E6, 0F
80
32,01,42
76
Label
3A,00,42
5E
E6, F0
07
07
07
07
47
Mnemonics
Op code
Operand
LDA
4200
MOV
E,A
ANI
F0
RLC
RLC
RLC
RLC
MOV
B,A
XRA
MVI
REP
DCR
JNZ
MOV
MOV
ANI
ADD
STA
HLT
A
C,0A
C
B,A
A,E
0F
B
4201
Input
Input Address
4200
Value
68
Output Address
4201
Value
44
Output
16 68
4-4
Result:
Thus the BCD to binary conversion was executed successfully
63
Comments
Get the data in A
Save in E register
Mark the lower nibble
Rotate the upper
To lower nibble
And save in
Register B
Move it from A to
B
Clear the accumulator
Intialise C as 0A
Decrement C register
Jump till value C is 0
Move the value A to B
Get the BCD in A
Mark the upper nibble
Add A and B
Save the binary data
Stop
the
program
execution
:
:
:
Step 4
Step 5
Step 6
Step 7
Step 8
:
:
:
:
:
64
START
D=0?
Cy = ?
65
Memory
Location
4100
4103
4105
4106
4108
410B
410C
410D
410E
410F
4112
4113
4114
4117
Hex Code
Label
Start
LXI
Repeat
Delay
MVI
MOV
OUT
LXI
NOP
DCX
MOV
ORA
JNZ
INX
DCR
JNZ
JMP
Mnemonics
Op code
Operand
H,Look up
21,1A,41
B,04
A,M
C0
D,03,03
D
A,E
D
DELAY
H
B
Repeat
START
06,04
7E
D3, C0
11
00
1B
7B
B2
C2, 0B,41
23
05
C2,05,41
C3,00,41
Comments
Load the HL with
data
B = 04
Memory value to A
Display it
Load DE with FFFF
Start delay loop
Decrement DE by 1
Move E to A
Check De = 0 or not
Jump on zero
Increment HL by 1
Decrement B by 1
Jump on no zero
Jump to start
Input
Input Address
411A
411B
411C
411D
Value
0A
06
05
09
Output Address
411A
411B
411C
411D
Value
09
05
06
0A
Reverse Direction
Result:
Thus, an assembly language program to control of stepper motor was written using
8085 microprocessor kit.
66
Step 2
Step 3
Step 4
:
:
:
Step 5
Step 6
Step 7
Step 8
Step 9
Step 10
:
:
:
:
:
:
67
START
No
Check for
carry?
Yes
Call delay
Load control word for linear screen
Call delay
No
If
Content ?
Yes
Return
68
Memory
Location
4300
4302
Hex Code
Label
MVI
OUT
Mnemonics
Op code
Operand
A,00
3E,00
01
DE,01
4304
MVI
A,90
3E,90
4306
4308
430A
430C
430F
4310
4311
4312
4314
4315
4318
431B
431D
431F
4322
4600
4603
4604
4605
4606
4609
OUT
MVI
OUT
LXI
MOV
INX
MOV
OUT
DCR
JNZ
CALL
MVI
OUT
CALL
JMP
LXI
DCX
MOV
ORA
JNZ
RET
01
A,CC
01
H,5000
C,M
H
A,M
00
C
Loop 1
Delay
A,DC
01
Delay
Loop 2
D,FFFF
D
A,E
D
Loop 3
C9
D3,01
3E,CC
0D,01
21,00,50
4E
23
7E
D3, 00
0D
C2,10,43
C0,00,46
3E,DC
D3, 01
CD,00,46
C3 0C,43
11,FF,FF
1B
7B
B2
C2,03,46
C9
Loop 2
Loop 1
Delay
Loop 3
Comments
Intialise A as 00
Out the control word
trough 8 bit
Intialise a with cw for
RAM
Out the cw
A = CC
Out the cw
Load HL with
M to C
Increment H by
Move M to A
Out the character
Decrement C by 1
Check for zero
Call subroutine
A <- 0C
A<-01
Call subroutine
Check for zf
Intialise DE=FFFF
Decrement DE by 1
Move E to A
Check De = 00
Jump on no zero
Return
to
main
program
Input
Input Address
5000
5001
5002
5003
5004
5005
Value
05
68
68
68
FD
88
Output
EEE A
Result:
Thus, an assembly language program to obtain flashing display of a particular data
was written using 8085 microprocessor kit.
69
Step 2
Step 3
Step 4
Step 5
:
:
Step 6
Step 7
Step 8
:
:
:
70
Delay
If
Reg C
Count ?
No
Yes
Decrement register D content by one
No
If reg D
Count ?
Yes
Return
71
Memory
Location
4500
4502
Hex Code
Label
MVI
OUT
Mnemonics
Op code
Operand
A,00
3E,00
01
DE, 01
4504
4506
MVI
OUT
A,90
01
3E, 90
DE,01
4508
450A
MVI
OUT
A,CC
01
3E,CC
DE,01
LXI
H,5000
21,00,50
MOV
INX
MOV
OUT
CALL
DCR
JNZ
JMP
LXI
DCX
MOV
ORA
JNZ
RET
C,M
H
A,M
00
Loop
C
Loop 1
Loop 2
D,FFFF
D
A,D
E
Loop 3
4E
23
7E
DE, 00
CD,00,46
0D
C2,10,45
C3,0C,45
11,FFFF
1B
7A
B3
C2,03,46
C9
450C
450F
4510
4511
4512
4514
4517
4518
451B
4600
4603
4604
4605
4606
4609
Loop 2
Loop 1
Loop
Loop 3
Comments
Initialise A 00
Control word through 8
bit
A = RAM cw
Output cw through 8
bit port
A = CC
Output cw through 8
bit port
Memory
->
HL
location
M -> C
Increment HL
Move H to A
Output the character
Call the subroutine
Decrement C by one
Jump on no zero
Jump to L2
Load DE-FFFF
Decrement DE by 1
Move D to A
(A) = (A) check
Jump on no zero
Return
to
main
program
Input
Input Address
5000
5001
5002
5003
5004
5005
5006
Value
06
98
68
7A
C8
1A
2C
Output
HELPUS
Result:
Thus, an assembly language program to obtain rolling display of a particular value
written using 8085 microprocessor kit.
72
:
:
:
:
:
:
:
:
:
:
:
:
Counter 1 = 05
Counter 2 = FF
Decrement counter 2
Check if c= 0, if no jump to step 3
Decrement counter 1
Check if B = 0, if no jump to step 2
Return to main program
73
START
Check for
c=?
No
Yes
Decrement the value of B
No
Check for
B=0?
Yes
Return
74
Memory
Location
4100
4102
4104
4107
4109
410B
410E
4111
4113
4115
4116
4119
411A
411D
Hex Code
Label
3E,00
D3,C8
CD,11,41
3E,FF
D3,C8
CD,11,41
C3,00,41
06,05
0E
OD
C2,15,41
05
C2,13,41
C9
Start
Delay
Loop 1
Loop 2
Mnemonics
Op code
Operand
MVI
A,00
OUT
C8
CALL
Delay
MVI
A,FF
OUT
C8
CALL
Delay
JMP
Start
MVI
B,05
MVI
C,FF
DCR
C
JNZ
Loop 2
DCR
B
JNZ
Loop 1
RET
Comments
Intialise A with 00
Load the control words
Call delay sutroutine
Intialise A with FF
A -> C8
Call delay subroutine
Jump to start
B -> 05
[C] => FF
Decrement C register
Jump on no zero
Decrement B register
Jump on n zero
Return
to
main
program
Result:
Thus square wave was generated using 8085 microprocessor kit.
75
:
:
:
:
:
:
:
76
Delay
L=0?
No
Yes
L=0?
Yes
Jump to start
77
No
Memory
Location
4300
4302
4303
4305
4306
Hex Code
Label
2E,00
7D
D3,C8
2C
C2,02,43
Start
Loop 1
4309
430B
430C
430E
430F
2E, FF
70
D3,C8
2D
C2,0B,43
4312
C3,00.43
Loop 2
Mnemonics
Op code
Operand
MVI
L,00
MOV
A,L
OUT
C8
INR
L
JNZ
Loop 1
MVI
MOV
OUT
DCR
JNZ
L,FF
A,L
C8
L
Loop 2
JMP
Start
Comments
Intialise L as 00
[L] -> [A]
Load the control words
Increment register L
Jump on no zero to
loop 1
L = FF
L -> A
[C8] -> [A]
Decrement L by one
Jump on no zero to
430B
Repeat process
Result:
Thus the triangular wave was generated using 8085 microprocessor kit.
78
:
:
:
:
Delay
Memory
Location
4500
4502
4504
4505
Hex Code
Label
3E,00
D3, C8
3C
C3,02,45
Start
Loop 1
Mnemonics
Op code
Operand
MVI
A,00
OUT
C8
INR
A
JMP
Loop 1
TRIANGULAR WAVE
79
Comments
Intialise A as 00
A = [C8]
Increment A by one
Jump to loop one
SQUARE WAVE
Result:
Thus the Sawtooth wave was generated using 8085 microprocessor kit.
80
:
:
Step 3
Step 4
Step 5
:
:
:
Step 6
81
START
Load the control word necessary for generation of ALE signal to control register
Load the control word necessary to start the conversion to control register
Get the output port specified
If the 1st
LSB bit=1?
82
Memory
Location
5000
5002
5004
5006
Hex Code
Label
5008
5009
500A
00
00
3E,10
NOP
NOP
MVI
A,10
500C
D3,C8
OUT
C8
500E
5010
5012
5013
5014
5015
5017
5019
501B
501D
5020
5022
5023
5025
5028
5029
502B
502C
502E
502F
5032
5034
5036
3E,01
D3,D0
00
00
00
3E,00
D3,D0
DB,D8
E6,01
CA,19,50
DB,C0
47
E6,0F
32,51,51
78
E6,F0
0F
0F
0F
32,50,51
3E,03
0E,08
21,50,51
MVI
OUT
NOP
NOP
NOP
MVI
OUT
IN
ANI
JZ
IN
MOV
ANI
STA
MOV
ANI
RRC
RRC
RRC
STA
MVI
MVI
LXI H
A,01
D0
5039
503C
CD,05,00
C3,0E,50
3E,10
D3,C
3E,18
D3, C8
L2
L1
Mnemonics
Op code
Operand
MVI
A,10
OUT
C8
MVI
A,18
OUT
C8
CALL
JMP
A,00
D0
D8
01
L1
C0
B,A
0F
5151
A,B
F0
550
A,03
C,08
5150
0005
500E
Comments
Intialise a with 10
Output channel through
Intialise A with 18
Output channel through
8 bit port
No operation
No operation
Intialise A with 2nd
signal
Output channel through
8 bit port
Intialise A with 2nd
Output through 8 bit
Result:
Thus the analog to digital conversion was done microprocessor.
83
START
Initialize DPTR
Stop
84
Label
Opcode
Start
C3
74DA
CLR C
MOV A, # data 1
4103
24DA
ADD A, # data 2
4105
464500
4108
F0
MOV A @ DPTR, A
4109
80 FE
Execution:
Addition:
ML
4103
4109
Mnemonics
SJMP 4109
Input
0L
03
ML
4500
Comments
Clear the carry flat
Moves data 1 to
register A
Add content of A and
data 2 and store in A
Moves data 4500 to
DPTR
Moves control of A to
location pointed DTPR
Short jump to 4109
Output
05
Label
Opcode
Start
C3
74DA
CLR C
MOV A, # data 1
4103
24DA
SUB B, # data 2
4105
4108
464500
F0
4109
80 FE
SJMP 4109
Execution:
Subtraction:
ML
4101
4103
Mnemonics
Input
05
02
ML
4500
Result:
Thus 8-bit addition, subtraction is performed using 8051.
85
Comments
Clear the carry flat
Moves data 1 to
register A
Subtract data 2 from
content of A and store
result in A
Moves 4500 to DPTR
Moves
result
by
location by DTPR
Short jump to 4109
Output
03
START
Increment data
Increment DPTR
Stop
86
Yes
EE0310-Microprocessor & Microcontroller Lab
Program: 8-bit Multiplication:
Memory
Label
Opcode
Location
4100
Start
7403
Mnemonics
MOV A, # data 1
4101
75F003
4105
A4
4106
904500
4109
410B
410D
410E
F0
E5F0
F0
80FE
MOV X @DPTR, A
MOV A,B
MOV A @ DPTR
SJMP 410E
Execution:
Multiplication:
ML
4101
4103
Program: 8-bit Division:
Memory
Label
Location
4100
Start
MUL A B
Input
0L
04
Output Address
4500
Opcode
7408
4102
75F002
4105
84
4106
904500
4109
410A
410B
410D
410E
F0
A3
ESF0
F0
80FE
Execution:
Division:
ML
4101
4103
MOV B, # data 2
Comments
Mnemonics
Value
08
Comments
MOV A, # data 1
Input
08
04
Output Address
4500
Result:
Thus 8-bit multiplication & division is performed using 8051.
87
Value
02