Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
E000
E003
E004
E007
47
21 00 E1
3E 00
MOV
LXI
MVI
B,A
H,E100
A,00
E009
0E 00
MVI
C,00
E00B
E00C
E00F
E010
E011
E012
E015
E018
E019
E01C
86
D2 10 E0
0C
23
05
C2 0B E0
32 00 E2
79
32 01 E2
76
ADD
JNC
INR
INX
DCR
JNZ
STA
MOV
STA
HLT
M
L2
C
H
B
L1
E200
A,C
E201
L1:
L2:
END
COMMENT
E0FF NO OF
TERMS
A TO CONTAIN
SUM FINALLY
C TO CONTAIN
CARRY FINALLY
E200 SUM
E201 CARRY
MOVE THE ELEMENTS OF AN ARRAY STARTING FROM E100 ONWARDS TO E200 ONWARDS
ADDRESS
E000
E003
E004
E007
E00A
E00B
E00E
E00F
E010
E011
E014
OPCODE
3A FF E0
47
21 00 E1
11 00 E2
7E
12
23
13
05
C2 0A E0
76
LABEL
START:
L1:
END
MNEMONIC
LDA
MOV
LXI
LXI
MOV
STAX
INX
INX
DCR
JNZ
HLT
OPERAND
E0FF
B,A
H,E100
D,E200
A,M
D
H
D
B
L1
COMMENT
E000
3A FF E0
E003
E004
E007
E008
E009
E00A
E00B
E00C
E00E
E00F
E010
E013
47
21 00 E1
7E
24
86
24
77
26 E1
23
05
C2 07 E0
76
START:
L1:
END
LDA
E0FF
MOV
LXI
MOV
INR
ADD
INR
MOV
MVI
INX
DCR
JNZ
HLT
B,A
H,E100
A,M
H
M
H
M,A
H,E1
H
B
L1
E0FF NO OF
TERMS
E000
E003
E004
E005
E006
E008
E00B
E00C
E00D
E00F
E010
E011
E012
E013
E014
E017
3A FF E0
47
3D
6F
26 E1
3A FE E0
80
5F
16 E1
7E
12
2B
1B
05
C2 0F E0
76
START:
L1:
END
LDA
MOV
DCR
MOV
MVI
LDA
ADD
MOV
MVI
MOV
STAX
DCX
DCX
DCR
JNZ
HLT
E0FF
B,A
A
L,A
H,E1
E0FE
B
E,A
D,E1
A,M
D
H
D
B
L1
E0FF N
E0FEM
E000
E003
E004
E007
E00A
E00D
E00E
E00F
E010
E013
E014
E015
E016
E017
E018
E01B
ADDRESS
E000
E003
E004
E007
E009
E00A
E00C
E00F
E010
E011
E012
E015
E016
E019
32 EF E0
47
21 00 E1
11 00 E1
32 EE E0
4F
1B
0D
C2 0E E0
7E
12
13
23
05
C2 13 E0
76
START:
L1:
L2:
END
LDA
MOV
LXI
LXI
LDA
MOV
DCX
DCR
JNZ
MOV
STAX
INX
INX
DCR
JNZ
HLT
E0EF
B,A
H,E100
D,E100
E0EE
C,A
D
C
L1
A,M
D
D
H
B
L2
3A FF E0
47
21 00 E1
0E 00
7E
FE 00
C2 10 E0
0C
23
05
C2 09 E0
79
32 00 E2
76
START:
L1:
L2:
END
LDA
MOV
LXI
MVI
MOV
CPI
JNZ
INR
INX
DCR
JNZ
MOV
STA
HLT
E0FF
B,A
H,E100
C,00
A,M
00
L2
C
H
B
L1
A,C
E200
E0EFN
E0EEM
COMMENT
ADDRESS
E000
3A FF E0
E003
E004
START:
LDA
E0FF
47
21 00 E1
MOV
LXI
B,A
H,E100
E007
E00A
E00B
E00D
E010
E011
11 00 E1
7E
FE 00
CA 12 E0
12
13
LXI
MOV
CPI
JZ
STAX
INX
D,E100
A,M
00
L2
D
D
E012
E013
E014
E017
E018
E019
E01C
E01E
E01F
E020
E023
23
05
C2 0A E0
7D
BB
CA 23 E0
3E FF
12
13
C3 17 E0
76
INX
DCR
JNZ
MOV
CMP
JZ
MVI
STAX
INX
JMP
HLT
H
B
L1
A,L
E
L4
A,FF
D
D
L3
L1:
L2:
L3:
L4:
COMMENT
E0FF N=array
length
H,Loriginal
array
D,Enew array
H, L point last
element of the
original array D, E
point last
element of new
array. When L= E,
new array
reaches the end
of old array
storing FF at N-M
locations of the
original array
E000
E003
E004
E007
E009
E00A
E00B
E00E
3A FF E0
47
21 00 E1
0E 00
7E
07
D2 0F E0
23
START:
L1:
LDA
MOV
LXI
MVI
MOV
RLC
JNC
INR
E0FF
B,A
H,E100
C,00
A,M
L2
C
C=no of +ve
numbers
E00F
E010
E011
E014
E015
E018
E01B
E01C
E01F
ADDRESS
0C
05
C2 09 E0
79
32 00 E2
3A FF E0
91
32 01 E2
76
L2:
END
INX
DCR
JNZ
MOV
STA
LDA
SUB
STA
HLT
H
B
L1
A,C
E200
E0FF
C
E201
E000
3A FF E0
E003
E004
E007
E00A
E00B
E00C
E00F
E010
E011
E012
E013
E014
E017
E018
E019
E01C
E01E
E01F
E020
E023
START:
LDA
E0FF
47
21 00 E1
MOV
LXI
B,A
H,E100
11 00 E1
7E
07
DA 12 E0
0F
12
13
23
05
C2 0A E0
7D
BB
DA 23 E0
3E FF
12
13
C3 17 E0
76
LXI
MOV
RLC
JC
RRC
STAX
INX
INX
DCR
JNZ
MOV
CMP
JC
MVI
STAX
INX
JMP
HLT
D,E100
A,M
L1:
L2:
L3:
L4:
COMMENT
E0FF N=length
of the array
H,Loriginal
array
D,Enew array
L2
D
D
H
B
L1
A,L
E
L4
A,FF
D
D
L3
H, L point last
element of the
original array D, E
point last element
of new array. When
L= E, new array
reaches the end of
old array storing FF
at N-M locations
of the original
array
ADDRESS
E000
3A FF E0
E003
E004
E007
E008
E009
E00A
E00B
E00E
E00F
E010
E013
E014
E015
E016
E019
E01A
E01D
E01E
E021
47
21 00 E1
4E
56
7E
B9
DA 0F E0
4F
BA
D2 14 E0
57
23
05
C2 09 E0
79
32 00 E2
7A
32 01 E2
76
ADDRESS
OPCODE
E000
E003
E004
E005
E006
E007
E008
E00B
E00C
E00F
3A 00 E1
07
07
07
07
47
3A 01 E1
80
32 00 E2
76
START:
L1:
L2:
L3:
END
LDA
E0FF
MOV
LXI
MOV
MOV
MOV
CMP
JC
MOV
CMP
JNC
MOV
INX
DCR
JNZ
MOV
STA
MOV
STA
HLT
B,A
H,E100
C,M
D,M
A,M
C
L2
C,A
D
L3
D,A
H
B
L1
A,C
E200
A,D
E201
START:
END
LDA
RLC
RLC
RLC
RLC
MOV
LDA
ADD
STA
HLT
E100
B,A
E101
B
E200
COMMENT
E0FF N=Length
of array
C=MAX
D=MIN
COMMENT
ADDRESS
E000
E003
E005
E006
E007
E008
E009
E00C
E00F
E011
E014
3A 00 E1
E6 F0
07
07
07
07
32 00 E2
3A 00 E1
E6 F0
32 01 E2
76
START:
END
LDA
ANI
RLC
RLC
RLC
RLC
STA
LDA
ANI
STA
HLT
COMMENT
E100
F0
E200
E100
0F
E201
CREATE MOD 100 COUNTER & SHOW THE COUNTS IN DATA FIELD
ADDRESS
OPCODE
LABEL
MNEMONIC OPERAND
COMMENT
E000
3E 00
START:
MVI
A,00
E002
32 F9 FF
STA
FFF9
E005
CD D3 06
L1:
CALL
UPDDT
E008
CD 00 E2
CALL
DELAY
E00B
3A F9 FF
LDA
FFF9
E00E
3C
INR
A
E00F
27
DAA
E010
32 F9 FF
STA
FFF9
E013
FE 00
CPI
00
E015
C2 05 E0
JNZ
L1
E018
C3 00 E0
JMP
START
E200
E203
E204
E205
E206
E209
21 FF FF
2B
7D
B4
C2 03 E2
C9
DELAY:
L2:
LXI
DCX
MOV
ORA
JNZ
RET
H,FFFF
H
A,L
H
L2
ADDRESS
E000
E003
E004
E005
E006
E009
E00A
E00B
E00C
E00F
E010
E011
E012
E013
E014
E015
E016
E019
E01A
E01D
3A FF E0
4F
0D
41
21 00 E1
7E
23
BE
DA 15 E0
57
7E
72
2B
77
23
05
C2 09 E0
0D
C2 05 E0
76
START:
L1:
L2:
L3:
END
LDA
MOV
DCR
MOV
LXI
MOV
INX
CMP
JC
MOV
MOV
MOV
DCX
MOV
INX
DCR
JNZ
DCR
JNZ
HLT
E0FF
C,A
C
B,C
H,E100
A,M
H
M
L3
D,A
A,M
M,D
H
M,A
H
B
L2
C
L1
COMMENT
For DESCENDING
order use JNC
instead of JC.
E000
11 00 01
E003
E006
E009
E00A
E00B
E00E
E00F
E010
E011
E012
E013
E014
E017
21 00 E2
3A 00 E1
77
23
3A 01 E1
77
23
1B
1B
7B
B2
C2 06 E0
76
START:
L1:
END
LXI
D,0100
LXI
LDA
MOV
INX
LDA
MOV
INX
DCX
DCX
MOV
ORA
JNZ
HLT
H,E200
E100
M,A
H
E101
M,A
H
D
D
A,E
D
L1
256>FF, hence
REG pair is used.
RSLT:E200 TO E2FF
E1001ST NO
E1012ND NO
3E 00
32 FE E0
3A 00 E1
32 F9 FF
CD D3 06
CD 00 E2
26 E1
3A FE E0
3C
32 FE E0
6F
7E
32 F9 FF
3A FE E0
4F
3A FF E0
B9
C2 28 E0
76
DISPLAY:
L2:
END
MVI
STA
LDA
STA
CALL
CALL
MVI
LDA
INR
STA
MOV
MOV
STA
LDA
MOV
LDA
CMP
JNZ
HLT
A,00
E0FE
E100
FFF9
UPDDT
DELAY
H,E1
E0FE
A
E0FE
L,A
A,M
FFF9
E0FE
C,A
E0FF
C
L2
Avoid DISPLAY
subroutine if it is
not required to
display the
Fibonacci
numbers
continuously in
the data field
and HLT the
program after
JNZ L1
FIND THE TWO'S COMPLEMENT OF 16BIT NO. LET THE UPPER AND LOWER
BYTES ARE AT E100 & E101.STORE THE RSLT E200 ONWARDS.
ADDRESS
E000
E003
E004
E005
E008
E009
E00A
E00C
E00F
E012
E013
E016
E018
E01B
E01C
E01F
E020
E023
OPCODE
3A 00 E1
2F
67
3A 01 E1
2F
6F
3E 00
32 00 E2
11 01 00
19
D2 1B E0
3E 01
32 00 E2
7C
32 01 E2
7D
32 02 E2
76
LABEL
START:
L1:
END
MNEMONIC
LDA
CMA
MOV
LDA
CMA
MOV
MVI
STA
LXI
DAD
JNC
MVI
STA
MOV
STA
MOV
STA
HLT
OPERAND
E100H
H,A
E101H
L,A
A,00
E200H
D,0001H
D
L1
A,01
E200H
A,H
E201H
A,L
E202H
COMMENT
ADDRESS
OPCODE
E000
E002
E005
E006
E008
E00B
E00E
0E 00
3A 00 E1
47
FE 00
CA 1A E0
3A 01 E1
57
START:
E00F
E010
E011
E014
E015
E016
E017
E01A
E01C
E01F
E022
E025
E026
E029
E02A
E02D
E030
7A
B8
DA 26 E0
90
0C
57
C3 0F E0
3E FF
32 F9 FF
CD D3 06
C3 30 E0
7A
32 F7 FF
79
32 F8 FF
CD BC 06
76
L1:
L2:
L3:
L4:
MVI
LDA
MOV
CPI
JZ
LDA
MOV
C,00
E100
B,A
00
L2
E101
D,A
MOV
CMP
JC
SUB
INR
MOV
JMP
MVI
STA
CALL
JMP
MOV
STA
MOV
STA
CALL
HLT
A,D
B
L3
B
C
D,A
L1
A,FF
FFF9
UPDDT
L4
A,D
FFF7
A,C
FFF8
UPDAD
COMMENT
CQUOTIENT
E100 DIVISOR
E101 DIVIDEND
DREMAINDER.
Initially set
REMAINDER=DIVISOR
Continue division until
DIVISOR<REMAINDER
ADDRESS
OPCODE
E000
E003
E006
E009
E00A
E00D
E00E
E00F
E011
E014
E015
E016
E019
E01A
E01D
E01E
E021
E024
11 00 00
21 00 00
3A 00 E1
5F
3A 01 E1
47
78
FE 00
CA 19 E0
19
05
C3 0E E0
7C
32 F8 FF
7D
32 F7 FF
CD BC 06
76
DECIMAL NO.
START:
L1:
L2:
END
LXI
LXI
LDA
MOV
LDA
MOV
MOV
CPI
JZ
DAD
DCR
JMP
MOV
STA
MOV
STA
CALL
HLT
D,0000
H,0000
E100
E,A
E101
B,A
A,B
00
L2
D
B
L1
A,H
FFF8
A,L
FFF7
UPDAD
COMMENT
E1001ST NO.
D,E 1ST NO.
E1012ND NO.
B2ND NO=LOOP COUNTER.
FACTORIAL
DECIMAL VALUE
HEXADECIMAL VALUE
0
1D
1H
1
1D
1H
2
2D
2H
3
6D
6H
4
24 D
18 H
5
120 D
78 H
6
720 D
02D0 H
7
5040 D
13B0 H
8
40320 D
9D80 H
9
362880 D
58980 H
Note: - 9! Onwards at least 3 memory locations are needed to store the result. Which are
assumed as E100, E101, E102.
ADDRESS
OPCODE
E000
E002
E005
E008
E00A
E00D
E00F
E011
E014
E016
E019
E01B
E01E
E01F
E021
E022
E023
E025
E028
E029
E02C
E02F
E030
E033
E034
E037
E200
E203
E204
E205
E208
E209
E20A
E20D
E20E
E20F
E210
3E 00
32 00 E1
32 01 E1
3E 01
32 02 E1
26 00
2E 01
3A FF E0
FE 00
CA 37 E0
FE 01
CA 37 E0
5F
16 00
3D
4F
3E 00
CD E2 00
0D
C2 25 E0
32 00 E0
7C
32 01 E0
7D
32 02 E0
76
21 00 00
41
19
D2 09 E2
41
0D
C2 04 E2
54
5D
48
C9
START:
L1:
END
FACT:
L2:
L3:
MVI
STA
STA
MVI
STA
MVI
MVI
LDA
CPI
JZ
CPI
JZ
MOV
MOV
DCR
MOV
MVI
CALL
DCR
JNZ
STA
MOV
STA
MOV
STA
HLT
LXI
MOV
DAD
JNC
INR
DCR
JNZ
MOV
MOV
MOV
RET
A,00
E100
E101
A,01
E102
H,00
L,01
E0FF
00
END
01
END
E,A
D,00
A
C,A
A,00
FACT
C
L1
E100
A,H
E101
A,L
E102
H,0000
B,C
D
L3
A
C
L2
D,H
E,L
C,B
COMMENT
E100, E101, E102-
00, 00, 01 stored for 0!
And 1!
E0ff no
To check if no is 0.
To check if no is 1.
OPCODE
LABEL
MNEMONIC
OPERAND
COMMENT
E000
3E 80
START:
MVI
A,80
PA is configured as O/P
Port.
E002
E004
E006
E008
E00B
E00D
E00F
E012
E014
E017
E019
E01B
E01E
D3 CSR
3E 00
D3 PA
CD 00 E2
C6 33
FE FF
C2 06 E0
D3 PA
CD 00 E2
DE 33
FE 00
C2 12 E0
C3 06 E0
OUT
MVI
OUT
CALL
ADI
CPI
JNZ
OUT
CALL
SBI
CPI
JNZ
JMP
CSR
A,00
PA
DELAY
33H
FFH
L1
PA
DELAY
33H
00H
L2
L1
E200
E203
E204
E205
E206
E207
E20A
E20B
21 FF 00
57
2B
7D
B4
C2 04 E2
7A
C9
LXI
MOV
DCX
MOV
ORA
JNZ
MOV
RET
H,00FF
D,A
H
A,L
H
L3
A,D
L1:
L2:
DELAY:
L3:
255(FFH)/5=51=33H
ADDRESS
E000
OPCODE
3E 80
E002
E004
E006
E008
E009
E00B
E00E
D3 CSR
3E 00
D3 PA
3C
FE 00
C2 06 E0
C3 04 E0
ADDRESS
E000
E002
E004
E006
E008
E009
E00B
E00E
E010
E011
E013
E016
OPCODE
3E 80
D3 CSR
3E 00
D3 PA
3C
FE FF
C2 06 E0
D3 PA
3D
FE 00
C2 0E E0
C3 04 E0
L1:
L2:
OUT
MVI
OUT
INR
CPI
JNZ
JMP
COMMENT
PA is configured as O/P
Port.
CSR
A,00
PA
A
00
L2
L1
COMMENT
Steps of ADC: I.
II.
III.
IV.
V.
VI.
VII.
VIII.
ADDRESS
OPCODE
LABEL
E000
E002
E004
E006
E008
E00A
E00C
E00E
E010
E012
E013
E016
E018
E01A
E01C
E01F
E022
E024
E026
3E 90
D3 CSR
3E 00
D3 PC
3E 0F
D3 CSR
3E 0E
D3 CSR
DB PA
07
C2 10 E0
3E 0D
D3 CSR
DB PA
32 F9 FF
CD D3 06
3E 0C
D3 CSR
C3 08 E0
START:
L2:
L1:
ADC
MNEMONIC
MVI
OUT
MVI
OUT
MVI
OUT
MVI
OUT
IN
RLC
JNC
MVI
OUT
IN
STA
CALL
MVI
OUT
JMP
OPERAND
A,90
CSR
A,00
PC
A,0F
CSR
0E
CSR
PA
L1
A,0D
CSR
PA
FFF9
UPDDT
A,0C
CSR
L2
COMMENT
Port config.
PAi/p, PBo/p
Selection of
Channel 0
Set and Reset PC7 to
Enable ADC chip.
0Fset ,0Ereset
Read PA and check
continuously if
PA7 =1 for EOC.
If PA7 =1, turn on
LATCH by setting
PC6 bit and then
display the digital
o/p data.
Turn off LATCH by
resetting PC6 bit.
Infinite Loop.
BITS
L7
L6
L5
L4
L3
L2
L1
L0
NAME
LD1
LD2
LD3
DTR1
DTR2
SPEED
DONT
CARE
DONT
CARE
Should be
glow to
indicate
ANTI CLK
WISE.
Rotation
0=ANTI
CLK WISE
1= does
not glow
Should be
glow to
indicate
Motor is
rotating.
0=when
motor
rotates
1=when
motor is
stopped
1=CLK
WISE
0=ANTI
CLK WISE
0=CLK
WISE
1=ANTI
CLK WISE
0=to
rotate
motor
1=to stop
running
motor
usually
reset
i.e. 0
usually
reset
i.e. 0
Should be
glow to
FUNCTION indicate
CLK WISE
rotation.
0=CLK WISE
1=does not
glow
SET both as 1 to
STOP MOTOR.
CONTROL WORDS
L5
L4
L3
BITS
L7
L6
L2
L1
L0
NAME
LD1
LD2
LD3
DTR1
DTR2
SPEED
DONT
CARE
DONT
CARE
CLK
WISE=50H
ANTI CLK
WISE=88H
STOP THE
MOTOR=FFH
0/1
0/1
ADDRESS
OPCODE
E000
E002
E004
3E 50
D3 LATCH
76
ADDRESS
E000
E002
E004
START:
END
MVI
OUT
HLT
3E 88
D3 LATCH
76
OPCODE
E000
E002
E004
3E FF
D3 LATCH
76
START:
END
MVI
OUT
HLT
END
MVI
OUT
HLT
COMMENT
A,88
LATCH
START:
COMMENT
A,50
LATCH
ADDRESS
ADDRESS
COMMENT
A,FF
LATCH
E000
E002
E004
E007
E009
E00B
E00E
3E 88
D3 LATCH
CD 00 E2
3E FF
D3 LATCH
CD 00 E2
C3 00 E0
START:
MVI
OUT
CALL
MVI
OUT
CALL
JMP
A,88
LATCH
DELAY
A,FF
LATCH
DELAY
START
E200
21 10 08
DELAY:
LXI
H,0810
E203
E204
E205
E206
E209
2B
7D
B4
C2 03 E2
C9
L2:
DCX
MOV
ORA
JNZ
RET
H
A,L
H
L2
COMMENT
Try to
remember
this value
Rotation(Degree)
180
LOOP COUNTER(LC)
180/1.8=100D, There are 4 coils.
Hence LC=100/4=25D=19H
90/1.8=50, LC=50/4=12.5 which is not possible
to set.
Hence take LC=48/4= 12D=0CH run the loop 0C
times and after outside the loop excite only
two coils
90
ADDRESS
COMMENT
A,80
CSR
B,19
A,0E
PC
DELAY
A,0D
PC
DELAY
A,0B
PC
DELAY
A,07
PC
DELAY
B
L1
Configure PC as o/p
port.
END
MVI
OUT
MVI
MVI
OUT
CALL
MVI
OUT
CALL
MVI
OUT
CALL
MVI
OUT
CALL
DCR
JNZ
HLT
21 FF 10
DELAY:
LXI
H,10FF
2B
7D
B4
C2 03 E2
C9
L2:
DCX
MOV
ORA
JNZ
RET
H
A,L
H
L2
E000
E002
E004
E006
E008
E00A
E00D
E00F
E011
E014
E016
E018
E01B
E01D
E01F
E022
E023
E026
3E 80
D3 CSR
06 19
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
05
C2 O6 E0
76
START:
E200
E203
E204
E205
E206
E209
L1:
B=19H=LOOP CNTR.
Consecutively excite
the 4 coils one after
another with proper
delay.
For clockwise
0E0D0B0E
For anticlockwise
070B0D0E
ADDRESS
E000
3E 80
E002
E004
E006
E008
E00A
E00D
E00F
E011
E014
E016
E018
E01B
E01D
E01F
E022
E023
E026
E028
E02A
E02D
E02F
E032
E035
D3 CSR
06 19
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
05
C2 O6 E0
3E 0E
D3 PC
CD 00 E2
3E 0E
D3 PC
CD 00 E2
76
E200
E203
E204
E205
E206
E209
START:
MVI
A,80
CSR
B,0C
A,0E
PC
DELAY
A,0D
PC
DELAY
A,0B
PC
DELAY
A,07
PC
DELAY
B
L1
A,0E
PC
DELAY
A,0D
PC
DELAY
END
OUT
MVI
MVI
OUT
CALL
MVI
OUT
CALL
MVI
OUT
CALL
MVI
OUT
CALL
DCR
JNZ
MVI
OUT
CALL
MVI
OUT
CALL
HLT
21 FF 10
DELAY:
LXI
H,10FF
2B
7D
B4
C2 03 E2
C9
L2:
DCX
MOV
ORA
JNZ
RET
H
A,L
H
L2
L1:
COMMENT
Configure PC as o/p
port.
B=0CH=LOOP CNTR.
Consecutively excite
the 4 coils one after
another with proper
delay. Total 48 times
it runs.
Additional 2 times to
make 50 times run.
50*1.8=90 deg