第八章子程序与中断调用

第八章子程序与中断调用

ID:39767252

大小:161.50 KB

页数:87页

时间:2019-07-11

第八章子程序与中断调用_第1页
第八章子程序与中断调用_第2页
第八章子程序与中断调用_第3页
第八章子程序与中断调用_第4页
第八章子程序与中断调用_第5页
资源描述:

《第八章子程序与中断调用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章 子程序与中断调用学习目的掌握汇编语言中子程序的基本结构、掌握子程序与主程序之间的参数传递方法。能够正确的在程序设计中使用子程序。掌握中断调用指令的使用。8.1.1子程序的定义PROCNAME PROC[NEAR/FAR]...RET...PROCNAME ENDP8.1.1子程序的定义PROCNAME:子程序名称字段,必选字段,用于标识子程序第一条指令的段内偏移量或逻辑地址。在关键字PROC和ENDP之间的内容为子程序的主体部分,由指令、伪指令序列构成。子程序类型子程序有NEAR和FAR两种类型NEAR类型的子程序名称对应其段内偏移量;FAR类型的子程序名称对应其完整逻辑地

2、址.子程序与标号的类型具有相同解释,因为子程序调用是一种特殊的程序流程转移,即带返回功能的流程转移。NEAR类型是子程序的隐含类型.子程序类型NEAR类型的子程序只能在其所在的代码段内被调用,即调用指令和子程序本身必须在同一代码段。FAR类型的子程序可以在任何一个代码段中被调用,即调用指令不必和子程序在同一代码段。8.1.2 子程序的调用与返回(1)子程序调用一般格式:CALL   子程序名转移指令通常引用标号作为目标地址的符号地址;类似的,CALL指令引用子程序名作为符号地址。8.1.2 子程序的调用与返回执行CALL指令时,CS:IP指向它后面一条指令,该地址称为返回地址(返回

3、点),子程序执行完毕以后一定要返回到这个地址继续执行.CALL指令在把程序流程转向目标地址(子程序的首地址)之前,会把返回地址首先压入堆栈保存,为子程序返回主程序提供必要条件.8.1.2 子程序的调用与返回CALL指令功能:保存返回地址到堆栈,把程序流程转移到子程序的入口地址。标志位影响:无子程序调用方式子程序调用指令和无条件转移指令相似,按照它获取目标地址的方式,可以分为:段内直接调用段内间接调用段间直接调用段间间接调用1)段内直接调用格式:CALL  PROC_NAMECALL  NEAR PTR PROC_NAME此调用方式仅将子程序名称作为一个符号偏移量来引用.2)段内间接

4、调用段内间接调用仍然仅引用子程序在代码段内的偏移量,但所引用的偏移量存放在某一个16位寄存器或字内存单元中.格式:(例子)CALL  BXCALL20H[BX+SI]3)段间直接调用格式:CALL  PROC_NAMECALL  FAR PTR PROC_NAME此调用方式将子程序名称作为符号地址引用,与段内直接调用不同,这里引用的是完整逻辑地址。4)段间间接调用此调用方式引用子程序的完整逻辑地址,并且假定子程序的入口地址保存在指定的双字内存单元中,低地址保存偏移量,高地址保存段基值.格式:(例子)CALL DWORD PTR DISP[BX+SI]假定子程序的入口地址保存在一个双

5、字单元中,EA=DISP+(BX)+(SI).(2)子程序的返回在任何子程序中,最后一条被执行的指令一定是返回指令。功能:从堆栈中恢复返回地址,把程序流程返回到主程序。标志位影响:子程序返回指令不会影响标志位1)段内返回指令使用段内调用指令调用的子程序,必须使用段内返回指令才能正确返回主程序。格式1:RET(RETN)功能:从堆栈中出栈一个字恢复到IP1)段内返回指令格式2:RETN(RETNN)N必须使用偶数功能:从堆栈中出栈一个字,恢复到IP中,然后执行SP<=(SP)+N1)段内返回指令(SP)+N这一个操作从栈顶直接出栈N/2个字,这一功能主要用于清除主程序通过堆栈传递的入

6、口参数。2)段间返回指令使用段间调用指令调用的子程序必须使用段间返回指令才能正确返回主程序。格式1:RET(RETF)功能:从堆栈中出栈两个字,先出栈的字用于恢复IP,后出栈的字用于恢复CS。2)段间返回指令格式2:RETN(RETFN)N必须是偶数。功能:从堆栈中出栈两个字,分别恢复到IP和CS,然后执行SP<=(SP)+N调用与返回的搭配主程序中的调用指令和子程序中的返回指令必须正确的配合使用才能保证正确的调用和返回过程。段内调用必须和段内返回搭配,段间调用必须和段间返回搭配。调用与返回的搭配在语法上RET形式表示返回指令,既可以解释为RETN,也可解释为RETF。具体如何解释

7、由汇编程序根据该子程序的类型来决定。若在程序中明确使用RETN或RETF形式的返回指令,那么一定注意搭配关系。8.2子程序的设计要求1.具有通用性和独立性一般在程序设计中,具有一定独立性和通用性,且被反复使用的功能模块适合于组织为子程序的形式。使用子程序可以提高代码重用率、编程效率、简化程序结构。8.2子程序的设计要求适合于编制为子程序的功能模块:(1)字处理软件中:在字符串中查找某一个给定的字符;比较两个字符串是否相等;合并两个字符串;在字符串指定位置插入一个新的字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。