第3章 指令系统100919.ppt

  1. 1、本文档共111页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 指令系统100919

4、 调用和返回指令 在程序设计中,有时因操作要求,需反复执行某段程序,使这段程序能被公用。这样可减少程序编写和调试的工作量,于是引进了主程序和子程序的概念。指令系统中一般都有主程序调用子程序的指令和从子程序返回主程序的指令。通常把具有一定功能的公用程序段作为子程序,子程序的最后一条指令为返回主程序指令(RET)。 (1) 长调用指令 汇编指令格式 机器码格式 操作 LCALL addr16; 0001 0010 先(PC)+3→PC(断点PC) , 长调用指令提供了16位 addr8-15 后(SP)+1→SP,(PC0-7)→(SP)(保护断点) 目标地址,在64K地 addr0-7 (SP)+1→SP,(PC8-15)→(SP) 址空间内调用。 addr0-15→PC(子程序地址送PC) 汇编指令格式 机器码格式 操作 ACALL addr11; a10a9a81 0001 先(PC)+2→PC(断点PC) , 短调用指令提供了11位 addr0-7 后(SP)+1→SP,(PC0-7)→(SP)(保护断点) 目标地址,限定在2K地 (SP)+1→SP,(PC8-15)→(SP) 址空间内调用。 addr0-10→PC0-10 (子程序地址送PC) (PC11-15 ) 不变 (2) 绝对调用指令 (3) 返回指令 汇编指令格式 机器码格式 操作 RET ; 0010 0010 ((SP))→ PC8-15 ,(SP)-1→SP,(弹出断点高8位) 子程序返回 ((SP))→ PC0-7 ,(SP)-1→SP,(弹出断点低8位) RETI ; 0011 0010 ((SP))→ PC8-15 ,(SP)-1→SP,(弹出断点高8位) 中断服务返回 ((SP))→ PC0-7 ,(SP)-1→SP,(弹出断点低8位) 开放中断逻辑 例如:主程序及子程序段如下: ORG 0100H 0100H MAIN: MOV SP,#60H 0103H LCALL SUB1 0106H … ORG 0200H 0200H SUB1: … RET 分析执行 LCALL SUB1 及 RET 指令后的结果。 解:执行LCALL SUB1的过程:结果如图所示。 (PC)+3→PC : (PC)=0106H (SP)+1 →SP : (SP)=61H (PC0-7)→(SP) : (61H)=06H (SP)+1→SP : (SP)=62H (PC8-15)→(SP): (62H)=01H addr0-15→PC : (PC)=0200H(进入子程序) 执行RET的过程:如图所示。 ((SP)) → PC8-15 : (PC8-15)=01H (SP)-1→SP : (SP)=61H ((SP))→PC0-7: (PC0-7)=06H (SP)-1→SP : (SP)=60H 所以:(PC)=0106H,返回主程序。 01H 06H ///////// 64H 63H 62H 61H 60H RAM PC 0200H SP 62H ///////// 64H 63H 62H 61H 60H RAM PC 0106H SP 60H 例如:主程序及子程序段如下: ORG 0100H 0100H MAIN: MOV SP,#60H 0103H ACALL SUB1 0105H … ORG 0200H 0200H SUB1: … RET 分析执行 ACALL SUB1 指令后的结果。 解:执行ACALL SUB1的过程:结果如图所示。 (PC)+2→PC : (PC)=0105H (SP)+1 →SP : (SP)=61H (PC0-7)→(SP) : (61H)=05H (SP)+1→SP : (SP)=62H (PC8-15)→(SP): (62H)=01H addr0-10→PC0-10 :(PC0-10)= addr0-10 =010 0000 0000 B (PC11-15 )不变: (PC11-15 )=0000 0 B,与SUB1的地址的高5位相同(同一个2K范围内)。 ∴(PC)=0000 0010 0000 0000 B=0200H 01H 05H ///////// 64H 6

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档