- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
重要的子程序分析及其程序框图
1.执行监控命令的子程序
在本小节介绍几个执行监控命令的子程序,包括D E U A G T P R共计8个, 简单说明之后,给出这几个子程序的执行流程框图。实现D和E命令的子程序有某些类似之 处,同样,实现U和A命令的子程序有某些类似之处,实现G、T和P命令的子程序有某些 类似Z处,R命令与上述命令的处理方法有一些差别,因此,把8个命令分成4组来说明是 合适的。
第1组 D命令和E命令
D命令:显示一片内存区的内容
D命令后若跟内存地址参数,则该值己在R15中,否则把D命令默认用的内存地址值从 DADR单元读到R15o D命令的基本功能是显示以R15为首地址的128个内存单元的内容。 D命令的执行流程如图1 (a)所示。实现的具体格式,第一列是4位的十六进制的内存地址, 接下来的是用十六进制表示的8个内存字的内容,最右部分是每个字高、低位字节内容的字 符编码表示,当一个字节中的编码不是可显示字符时,将其显示为一个圆点字符。在 显示过程中,可以用ESC键立即结束显示,或用其他键暂停显示,再按非ESC键将继续显 Zj\ c
E命令:修改一片内存区的内容
E命令后若跟内存地址参数,则该值己在R15中,否则把E命令默认用的内存地址值从 EADR单元读到R15o E命令的基本功能是依次显示以R15为首地址的每一个内存单元的内 容并等待输入,可以用输入一个新的数值修改相应内存单元中的内容,若用空格符结束数值 输入,意味着接着显示并修改下一个内存单元的内容,若用回车符结束数值输入,则在完成 修改后就结束E命令的执行过程。E命令的执行流程如图1 (b)所示。在等待输入数值时, 直接打空格键或冋车键,相应内存单元的内容将保持不变。
进人命令带参数?达到否从DADR单元?取默认地址到R15驱冋
进人
命令带参数?
达到
否从DADR单元?取默认地址
到R15
驱冋
巧D命令的使用地 址到DADR单元
进人
图1⑹D命令执行流程
图1(b) E命令执行流程
第2组 U命令和A命令
U命令:反汇编15条机器指令
U命令若跟地址参数,则该地址己在R15中,否则将U命令用的默认地址从UADR单 元读入R15。U命令的功能是反汇编15条机器指令,即把一条机器指令代码翻译成对应的汇 编语句的格式,结果显示在计算机终端(或PC及仿真终端)的屏幕上,其执行流程如图2 所示。
实现U命令处理功能的子程序虽然较长,但实现原理并不难理解。例如,遇到的指令是 二进制的0000000000101001,按照指令格式和编码的具体规定,指令的最高8位是操作码, 查指令汇总表加法指令,汇编语句名为ADD,加法指令的最低8位是两个寄 存器的编码,其中高4位是目的寄存器DR的编号,0010为R2,低4位是源寄存器SR的编 号,1001是R9。按指令格式规定,两个寄存器之间要有一个逗号,因此,对0000000000101001 指令反汇编的结果是ADD R2, R9o这一结果在显示器屏幕上更具体的格式为:
指令地址指令字1指令个2 汇编语句
其中的指令地址,指令字1,指令字2(可以没有),都用4位16进制数值表示,反汇编 语句要满足对汇编语句的格式要求。4项内容之间例如用2个空格作为符号间距。假如上述 指令被保存在内存的2000h (h代表前面的2000是十六进制)单元中,贝IJ反汇编的结果和格 式是:
2000 0029 ADD R2, R9 (单字指令,无指令字2)
如果把对上述特例的处理过程更加一般化来展开讨论,结论是:
每条机器指令8位的操作码,直接对应一个汇编语句名称(最多4个字母),可以保存在 一张表格中,用于从指令操作码查出汇编语句名(反汇编过程使用),或从汇编语句名查出指 令操作码(汇编过程使用)。
每条机器指令第1个字的低8位和第2个指令字(如果有的话),是指令的操作数地址字 段,指令字1的低8位可以是1或者2个4位的寄存器编码,可能是一个8位的IO端口地 址,或相对转移指令的变址偏移量offset,第2个指令字可以是一个立即数,一个直接地址, 或者长转移指令的变址偏移量offset,它们的有无和到底代表的是什么,収决于指令的操作 码,换句话说,知道了指令的操作码,就清楚了怎样去看待与处理操作数地址字段的内容。 这里有个寄存器编码和寄存器名称的对应问题,例如4位二进制0000代表R0,也需要建立 一张对应表,用于从4位编码查出寄存器名(反汇编过程使用),或转换寄存器名为4位编码 (汇编过程使用)。其他情况下的操作数地址字段内容,通常被理解为8位或者16位的整数 数值使用,不存在类型变换问题。唯一例外的一点是,相対转移指令与对应的汇编语句之间, 有一个地址计算过程,例如,在2005 ( 16进制,下同)内存单元有
文档评论(0)