关于保护现场和恢复现场的调查研究.docVIP

关于保护现场和恢复现场的调查研究.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于保护现场和恢复现场的调查研究.doc

关于保护现场和恢复现场的调查研究 计算机组成原理调研报告 摘要: 《计算机组成原理》课本中对于中断后保护现场和恢复现场的解释仅有寥寥数行,而且相关内容也只是对定义和作用作了一些简单的说明。但保护现场和恢复现场是中断执行过程中不可或缺的重要部分,本调研报告将对保护现场和恢复现场这两个过程进行一些深度的挖掘。 关键词: 保护现场,定义,实现方法,改进 正文: 一、保护现场的含义和方法 保护现场有两个含义,其一是保存程序的断点;其二是保存通用寄存器和状态寄存器的内容。前者由中断隐指令完成,后者由中断服务程序完成。具体而言,可在中断服务程序的起始部分安排若干条存数指令,将寄存器的内容存至存储器中保存,或用进栈指令将各寄存器的内容推入堆栈保存,即将程序中断时的“现场”保存起来。如果在中断服务程序中要占用一些寄存器进行运算,而在主程序中这些寄存器也是很重要的,为了二者互不干扰,所以在进入中断服务程序时就要保存寄存器的数值,以便在从中断返回后继续正常的往下执行,这种保存寄存器数值的过程就是现场保护。常见的需要保护的寄存器有A、B、DPTR、PSW和工作寄存器组。 而一般的中断处理程序均需要保护现场。常见的几种保护现场的方法如下: 累加器A的保护 累加器A是程序中使用最为频繁的寄存器,中段处理程序中如果需要使用累加器A,就会改变A的数值。这样中断调用返回后,主程序中的输出控制字就被破坏了,造成输出错误。为了防止这种现象的出现,在中断处理程序中首先将需要使用的寄存器压入堆栈保存,中段处理程序完成后再使其弹出堆栈。以流水灯的中断程序为例,这一程序如下: K1:PUSH ACC;将累加器A压入堆栈 MOV R6,#0FFH ;中断处理程序 ............... K2:POP ACC ;从堆栈中弹出数据到累加器A中 RETI;中断返回 程序状态字的保护 由于程序状态字寄存器PSW有几个标志位是执行指令时自动设置的,如果子程序中有改变程序状态字寄存器PSW的指令,则一定要将PSW压入堆栈保护。 例如:主程序指令如下: ADD A,#0FH JC L1 其中第一条指令会根据运算结果改变进位标志位C的状态,而第二条指令需要根据C的状态决定是否转移。如果执行完第一条指令后发生中断,中断处理程序中有改变了C的状态,这样终端返回後在执行JC L1 时就会发生错误。尽管在主程序和子程序中并未直接出现PSW ,但是却出现了PSW 寄存器冲突。为了避免这种情况的出现,子程序中只要使用了能影响PSW中某一位的指令,则一定要将PSW压入堆栈保护。 影响PSW中标志位的指令参考指令表。 工作寄存器组的保护 由于并没有PUSH Rn指令,所以需要将工作寄存器压入堆栈是只能使用地址。例如:要将R6对应的地址压入堆栈。但是根据PSW中RS0和RS1的数值,R6可能对应4格地址,即06H、0EH、16H、1EH,究竟应当压哪一个地址判断起来比较麻烦。工作寄存器族的设置则提供了一个保护工作寄存器的简单方法。 程序设计前可以将4格工作寄存器组安排在不同的程序段中,如第0组安排在主程序中使用、第1组安排在外部中断0中使用等。在外部中断0的处理程序中首先将PSW压入堆栈,然后设置RS1=0、RS0=1,这样再使用工作寄存器时就会直接使用第1组工作寄存器组,而不影响第0组工作寄存器组。中断处理程序执行完后弹出PSW,就直接恢复了程序中的工作寄存器组。 保护方法举例如下: PUSH PSW ;将PSW压入堆栈 MOV PSW,#08H ;使用第1组工作寄存器组 ....................... ;中断处理程序 POP PSW ;恢复 PSW RET ;中断返回 DPTR的保护 DPTR是一个常用的地址指针,它是一个16位的寄存器,压入堆栈保护时必须分别将高8位和低8位压入。操作如下: ......................... PUSH DPH ;将DPTR高8位压入堆栈 PUSH DPL ;将DPTR低8位压入堆栈 ......................... POP DPL ;将DPTR低8位弹出堆栈 POP DPH ;将DPTR高8位弹出堆栈 ......................... 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统,而高实时

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档