8085微处理器程序执行及结果检查


我们将学习如何使用8085在8085套件中编写程序。我们还将学习如何调试程序并在成功执行后检查结果。

让我们看看8085套件的典型键盘结构。(不同制造商的不同套件,其键盘样式可能会有所不同)

下表将显示不同控制键的功能。有16个字母数字键(0-9,A-F)提供数据和地址:

按键
功能
RESET
重置系统
VCT INT
向量中断。它通过键盘产生硬件中断RST 7.5
SHIFT
为所有按键提供二级命令
GO
执行程序
SI
单步执行模式
EXREG
检查寄存器。它允许查看不同寄存器的值。
PRE
指向之前的内存地址
DEL
删除程序的一部分
INS
插入程序的一部分
B.M
块移动。这有助于将内存块移动到任何RAM区域
FILL
用常数值填充某个RAM区域
REL
重新分配为某个内存区域编写的程序。
INS DATA
将一个或多个数据插入内存
STRING
查找位于特定地址/地址的数据字符串
MEMC
比较两个内存块是否相等

现在我们将看到一个示例程序,其中十六个字节的数据存储在8050H到805FH的内存位置中。将整个数据块传输到从8070H开始的新内存位置。

程序

T状态
地址
十六进制代码
标签
助记符
注释
10
8000
21, 50, 80
START
LXI H, 8050H
将HL设置为源内存指针
10
8003
11, 70, 80


LXI D, 8070H
为目标地址设置DE
7
8006
06, 10


MVI B,10H
将B设置为计数16个字节
4
8008
7E
NEXT
MOV A,M
从源内存获取数据字节
7
8009
12


STAX D
将数据字节存储到目标位置
6
800A
23


INX H
将HL指向下一个源位置
6
800B
13


INX D
将DE指向下一个目标位置
4
800C
05


DCR B
递减计数器
10
800D
C2, 08, 80


JNZ NEXT
如果计数器不为0,则转到传输下一个字节
5
8010
76


HLT
停止
 
总共17个字节








 

总T状态 = 外循环T状态 + 内循环T状态
  = (10+10+7+5) + ((4+7+6+6+4+10) x 16 - 3)
  = 32 + (37 x 16 – 3)
  = 32 + 589
  = 621

8085套件的调试选项。

命令
功能/格式
检查/修改内存
显示/修改内存位置的内容
EXAM MEM <address> NEXT [[<data>] NEXT/PREV] EXEC
检查/修改寄存器
显示/修改8085寄存器内容。
EXAM REG <reg key> [[<data>] NEXT]* EXEC
单步执行
执行单个用户程序指令
SINGLE STEP <start address> NEXT [[<start address>] NEXT]* EXEC
Go
将控制权从监视器转移到用户程序 GO <address> EXEC
块移动/块复制
将数据块从一部分移动/复制到另一部分
BLK MOVE <start address> NEXT <end address> NEXT <destination address> EXEC
插入
在用户程序中插入一个或多个指令
INSERT [<low limit>] NEXT [<high limit>] NEXT <low insert address> NEXT
<number of bytes> NEXT [[<data>] NEXT]* EXEC
删除
删除用户程序中的一个或多个指令
DELETE [<low limit>] NEXT [<high limit>] NEXT <low delete address> NEXT
<high delete address> EXEC


 块移动操作演示

内存地址的初始状态

源地址

目标地址

8000
00H
8100
XXH
8001
11H
8101
XXH
8002
22H
8102
XXH
8003
33H
8103
XXH
8004
44H
8104
XXH
8005
55H
8105
XXH
8006
66H
8106
XXH
8007
77H
8107
XXH
8008
88H
8108
XXH
8009
99H
8109
XXH


 
按键:

<块移动>,8000H <下一步>,8009H <下一步>,8100H <执行>

内存地址的最终状态

源地址

目标地址

8000
00H
8100
00H
8001
11H
8101
11H
8002
22H
8102
22H
8003
33H
8103
33H
8004
44H
8104
44H
8005
55H
8105
55H
8006
66H
8106
66H
8007
77H
8107
77H
8008
88H
8108
88H
8009
99H
8109
99H


 
块插入和块删除操作演示

内存地址的初始状态

源地址

8000
00H
8001
11H
8002
22H
8003
33H
8004
44H
8005
55H
8006
66H
8007
77H
8008
88H
8009
99H


 
按键:

<插入> 8000H <下一步>,8009H <下一步>,8005H <下一步>,5 <下一步>,AAH <插入>,BBH <下一步>,CCH <下一步>,DDH <下一步>,EEH <下一步>

<删除>,8000H <下一步>,800EH <下一步>,8005H <下一步>,8009H <执行>

内存地址的最终状态

源地址

8000
00H
8001
11H
8002
22H
8003
33H
8004
44H
8005
AAH
8006
BBH
8007
CCH
8008
DDH
8009
EEH
800A
55H
800B
66H
800C
77H
800D
88H
800E
99H


这里我们使用的是带有8000H到FFFFH地址映射的32K内存空间62256(U3)。为了结束程序,我们可以使用RST 5 (EFH)返回到监视器程序,而不是使用HLT (76H)指令。因为它可以帮助我们调试程序是否导致停止和挂起。

更新于:2019年10月9日

5K+ 浏览量

启动您的职业生涯

通过完成课程获得认证

开始学习
广告