- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 80x86/Pentium指令系统 按子程序与调用语句间的位置,子程序有两种类型: NEAR:调用指令与子程序在同一个段中 FAR:调用指令与子程序不在同一个段中 子程序调用/返回指令: CALL OPRD ; 用在调用程序中 RET ; 用在被调程序中 程序调用实质上是一种强制改变正常指令指针顺序的过程,调用之前的正常IP值称为“断点”。 与JMP的不同之处:CALL有对应的返回指令;必须保存断点,执行过程与堆栈有关。 主程序 断点 子程序 返回主程序 子程序调用 CALL RET 第3章 80x86/Pentium指令系统 CALL指令有4种形式:段内直接调用 段间直接调用 段内间接调用 段间间接调用 (1) 调用指令 CALL OPRD ① 段内或段间直接调用 CALL proc_name 段内直接的操作:将断点IP进堆栈保护(SP←SP-2,[SP] ←IP); 再修改IP (IP← IP+D16)。 段间直接的操作:将断点CS、IP进堆栈保护(SP←SP-2,[SP]←CS ; SP←SP-2,[SP] ←IP) 再修改CS、IP ( ←子程序的段地址和偏移地址) 与子程序的起始地址相关联 段内:主程序与子程序在同一个代码段内,子程序属性NEAR; 段间:主程序与子程序不在同一个代码段内,子程序属性FAR。 直接:目标地址信息就在CALL指令中; 间接:目标地址在由指令指定的寄存器或内存单元中。 D16为目标地址与断点地址的差,在-32768 ~ +32767 第3章 80x86/Pentium指令系统 (① subp是NEAR过程) CODE SEGMENT ;CODE段 … CALL subp ;yyy入栈 ,D16 = subp-yyy xxx:yyy … … subp PROC NEAR ;过程定义 … RET ;返回 subp ENDP CODE ENDS (② subp是FAR过程) CSEG1 SEGMENT … CALL subp AA: … … CSEG1 ENDS CSEG2 SEGMENT … subp PROC FAR … RET subp ENDP … CSEG2 ENDS AA处的CS:IP入栈后转subp 工作过程如下: 南京航空航天大学 电子信息工程学院 第3章 80x86/Pentium指令系统 DATA SEGMENT X DW 100 Y DW 10 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA MAIN PROC FAR … CALL subp … RET MAIN ENDP subp PROC NEAR MOV AX,X MOV BX,Y MUL BX RET subp ENDP CODE
您可能关注的文档
最近下载
- 风险管理与金融机构第二版课后习题答案+(修复的)()详细分析.doc VIP
- 白砂糖仓库管理方案范本.docx VIP
- 初中语文2024届中考成语专项练习(共20道选择题,附参考答案).doc VIP
- 最新版个人征信报告模板(word版-可编辑-带水印).docx VIP
- 部编版语文三年级下册第三单元3单元整体作业设计.docx VIP
- 新22J04-1 内装修一(墙面、吊顶)参考图集.docx VIP
- GB50278-2010 起重设备安装工程施工及验收规范.docx VIP
- 达索BIOVIA COSMOtherm 2020 用户指南.pdf
- 智慧养殖在线监测系统微型水质自动监测系统使用说明书.pdf
- 铜、铅、锌、银、镍、钼矿地质勘查规范.pdf VIP
文档评论(0)