Thiết kế Thiết bò thực tập vi xử lí 8085 Trang 41
* Các chương trình được gọi :
DPFIND ( xem phụ lục )
DPHLM ( xem phụ lục )
KYBRD ( xem chương 4 )
ORMP ( xem phụ lục )
PHIMSO ( xem chương 4 )
STEP : Đây là một chương trình cho phép chạy từng lệnh của chương
trình người sử dụng.
Input : Nhận đòa chỉ hiện hành vào HL.
Output : Chỉ thay đổi thanh ghi HL.
Các chương trình con được gọi :
LMB : Chương trình nhận biết được lệnh sắp thực hiện mấy
byte.
DPHLM : Hiển thò đòa chỉ vào dữ liệu tại đòa chỉ đó.
Chương trình sử dụng các vùng nhớ sau :
9 D 00H Vùng nhớ
vào sau
ra trước
ST3
9FDDHAdd
ST4
9FDEH
Nạp lệnh nhảy
Add
ST5
9FDFHAdd
ST6
9FE0HAdd
ST7
9FE1HAdd
ST8
9FE2H
Nạp nội dung các
Add
Add
STF
9FE9H
Add
ST10
9FEAHAdd
ST11
9FEBH
Add
ST12
9FECH
Khi chạy các các lệnh
Add
ST13
9FEDH
nhảy, lệnh gọi và lệnh
Add
ST14
9FEEH
CALL LMB CPI 20H
MOV A,C JZ *ST3
CPI 3OH CPI 10H
JZ *ST1 JZ *ST5
CPI 32H CPI 11H
JZ *ST6 Thieỏt keỏ Thieỏt bũ thửùc taọp vi xửỷ lớ 8085 Trang 43
*ST1: INX H CPI A0H
MOV A,M JZ *ST22
STA Add
ST10
JMP *ST20
INX H *ST22 : STA Add
ST2
MOV A,M SHLD Add
STE
STA Add
ST11
MVI A,C3H
MVI A,_ STA Add
CT79
STA Add
ST1
MVI A,01H
MVI A,_ CALL DELAY 0.1
JMP *ST21 LDA Add
ST9
*ST2 : MOV A,M MOV C,A
CPI 32H LHLD Add
ST6
JZ *ST10 PUSH H
INX H POP PSW
*ST4 : MOV A,M LHLD Add
STA
STA Add
ST1
XCHG
INX H LHLD Add
STC
*ST20 : MOV A,M JMP Add
STO
STA Add
ST2
*ST12 : SHLD Add
STCJMP *ST7 PUSH PSW
*ST10 : INX H POP H
MOV A,M SHLD Add
ST6
ST1
STA Add
ST4MVI A,00H MVI A,_
STA Add
ST2
STA Add
ST5
JMP *ST7 *ST21: LDA Add
ST8
*ST5 : MVI A,00H MOV B,A
STA Add
ST1
LDA Add
ST9
STA Add
ST2
MOV C,A
JMP *ST7 LHLD Add
ST6
*ST6 : SHLD Add
ST15
PUSH H
MVI A,00H POP PSW
CALL *ST19 MOV A,B
LDA Add
ST14
STA Add
ST8
MOV L,A MOV A,C
MVI H,9DH STA Add
ST9
MOV B,M XCHG
INX H SHLD Add
STA
MOV C,M LHLD Add
STE
DCRA INX H
DCRA *ST9 : CALL DPHLM
STA Add
ST14
MVI A,01H
Thieỏt keỏ Thieỏt bũ thửùc taọp vi xửỷ lớ 8085 Trang 45
STA Add
TT
INR A
POP B INR A
RET STA Add
ST14
MVI A,C3
STA Add
ST3
*17 : LDA Add
ST17
MVI A,_ CMP 00H
STA Add
ST4
JZ *ST15
MVI A,_ JMP *ST9
STA Add
ST5
*18 : LHLD Add
ST15
JMP *ST21 INX H
*ST14 : LHLD Add
ST10
JMP *ST9
JMP *ST9
*ST15 : LHLD Add
ST12
*19 : JMP *ST21
INX H JMP *ST9
*ST16 : LDA Add
ST14
C = 10H : Khi lệnh đó thuộc nhóm lệnh 1 byte ( kể cả
những mã không thuộc bộ lệnh )
Ngoài thanh ghi C chương trình không ảnh hưởng tới các thanh
ghi khác.
Do chương trình đơn giản nên chỉ trình bày thuật giải. Được gọi
từ chương trình STEP và chương trình SDC.
PUSH PSW
A (M) Đ
C (32H)
POP PSW
S LMB
LMB
Nh
óm nạp tức thời
thanh ghi (3 byte)
1
Đ
C (11H)
S POP PSW
C (10H)
POP PSW 1
Nhóm lệnh lưu trữ
trực tiếp (3 byte)
RET
Nhóm lệnh gọi
chương trình con (3
byte)
RET
Nhóm lệnh nhảy (3
byte)
RET
Nhóm lệnh 2 byte
RET
INS
Add
INS + 2
: 9FDF
Đòa chỉ kế cuối vùng
Add
INS + 3
: 9FE0
INS
Add
INS + 4
: 9FE1
Nạp đòa chỉ ô nhớ
Add
INS + 5
: 9FE2
cần chèn
PUSH B
PUSH D
PUSH H
BC (0000H)
SHLD Add
S S ẹ *3
S
*16 : CALL PHIMSO
*4 ẹ
PUSH DE
CALL DEMP
HL DE
HL (HL) - 1
SHLD Add
INS + 2
POP DE
A (H) S ẹ *5 ẹ S
A (L)
S S
ẹ ẹ *6
Thieỏt keỏ Thieỏt bũ thửùc taọp vi xửỷ lớ 8085 Trang 50
Add
TT
(01H)
LHLD Add
INS+ 0
CALL DPHLM
*7 : CASLL KYBRD
S S S
*11 ẹ *10 ẹ *9 ẹ
PUSH HL CALL DOWN Add
TT
(01H)
LHLD Add
INS+2
SHLD Add
INS+0
CALL SDC
CALL SHM DE HL POP H
BC (BC)+1 CALL DPHLM
POP HL Add
TT
(01H)
PHIMSO
PHIMSO
RET
INS
UP
RETThieỏt keỏ Thieỏt bũ thửùc taọp vi xửỷ lớ 8085 Trang 51
PUSH B JMP *6
PUSH D *5 : MOV A,L
PUSH H CMP E
LXI B,0000H JZ *1
SHLD Add
INS + 0
JM *1
SHLD Add
INS + 4
*6 : MVI A,01H
MOV D,H STA Add
TT
MOV E,L LHLD Add
INS + 0
TT
MOV H,D POP D
MOV L,E POP B
DCX H RET
SHLD Add
INS + 2
*10 : CALL DOWN
POP D SHLD Add
INS +0
MOV A,H MOV D,H
CMP D MOV E,L
JZ *5 JMP *12
JMP
*1