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状态地址十六进制代码标签助记符注释
10800021, 50, 80STARTLXI H, 8050H将HL设置为源内存指针
10800311, 70, 80
LXI D, 8070H将DE设置为目标地址
7800606, 10
MVI B,10H将B设置为计数16个字节
480087ENEXTMOV A,M从源内存获取数据字节
7800912
STAX D将数据字节存储到目标位置
6800A23
INX H将HL指向下一个源位置
6800B13
INX D将DE指向下一个目标位置
4800C05
DCR B递减计数器
10800DC2, 08, 80
JNZ NEXT如果计数器不为0,则转到传输下一个字节
5801076
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 <地址> NEXT [[<数据>] NEXT/PREV] EXEC
检查/修改寄存器显示/修改8085寄存器内容。EXAM REG <寄存器键> [[<数据>] NEXT]* EXEC
单步执行执行单个用户程序指令 SINGLE STEP <起始地址> NEXT [[<起始地址>]NEXT]* EXEC
GO将控制权从监视器转移到用户程序 GO <地址> EXEC
块移动/块复制将数据块从一个部分移动/复制到另一个部分 BLK MOVE <起始地址> NEXT <结束地址> NEXT <目标地址> EXEC
插入在用户程序中插入一个或多个指令 INSERT [<下限>] NEXT [<上限>] NEXT <插入起始地址> NEXT <字节数> NEXT [[<数据>] NEXT]* EXEC
删除删除用户程序中的一个或多个指令 DELETE [<下限>] NEXT [<上限>] NEXT <删除起始地址> NEXT <删除结束地址> EXEC

块移动操作演示

内存地址的初始状态

源地址目标地址
800000H8100XXH
800111H8101XXH
800222H8102XXH
800333H8103XXH
800444H8104XXH
800555H8105XXH
800666H8106XXH
800777H8107XXH
800888H8108XXH
800999H8109XXH

按键:

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

内存地址的最终状态

源地址目标地址
800000H810000H
800111H810111H
800222H810222H
800333H810333H
800444H810444H
800555H810555H
800666H810666H
800777H810777H
800888H810888H
800999H810999H

块插入和块删除操作演示

内存地址的初始状态

源地址
800000H
800111H
800222H
800333H
800444H
800555H
800666H
800777H
800888H
800999H

按键:

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

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

内存地址的最终状态

源地址
800000H
800111H
800222H
800333H
800444H
8005AAH
8006BBH
8007CCH
8008DDH
8009EEH
800A55H
800B66H
800C77H
800D88H
800E99H


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

更新于:2019年7月30日

6K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.