汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt

汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt

ID:50177523

大小:610.50 KB

页数:50页

时间:2020-03-09

汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt_第1页
汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt_第2页
汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt_第3页
汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt_第4页
汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt_第5页
资源描述:

《汇编语言程序设计 教学课件 作者 董少明 第5章 子程序设计方法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇编语言程序设计第5章子程序设计方法第5章子程序设计5.1子程序设计5.2模块化程序设计小结提示:在程序设计中,经常会遇到在一个程序的不同地方或在不同的程序中,要求实现某些相同的操作,如输入输出字符、代码转换、数制转换、查找与排序等。为简化程序设计、缩短程序设计的周期和程序长度,便于软件交流和共享软件资源,就把那些频繁使用的基本操作编成相对独立的程序段——子程序。如果需要实现某种操作就可以“调用”这些相应的子程序。另外,在功能复杂的大型软件设计时常采用模块化的程序设计方法,将各项任务分解为相应功

2、能的程序模块实现。5.1.1子程序概述主程序也称为调用程序,即含有CALL子程序调用指令的程序。子程序也称为过程,即被调用的程序,其末尾含有1条RET返回指令。主程序根据需要调用子程序,子程序执行完成后又返回到主程序继续执行。其执行过程如图5-1所示。…………CALL子程序入口下一条指令地址…………第一条指令…………RET主程序子程序5.1子程序概述5.1.2子程序设计方法及应用举例1.子程序的特点1)每个子程序都应有唯一的入口(即有唯一的子程序名称)。以便程序正确地调用它;子程序应以RET指令

3、作为结束,以便正确地返回主程序;2)子程序应具有通用性。为了使子程序具有通用性,子程序的操作对象通常采用寄存器或寄存器间接寻址等寻址方式,而不用立即寻址方式。3)子程序应具有可浮动性。子程序放在存储器中的任何空间都能正常运行称为子程序的可浮动性。为了使子程序能够达到这样的设计目标,子程序中如有转移指令应使用相对转移指令,而不能用绝对转移指令。4)进入子程序时需要对现场进行保护,而在返回时应恢复现场。2.子程序的结构1)保护现场。2)根据入口参数,取得要处理的数据;3)进行算法处理。4)根据出口参

4、数,将处理后的数据送至指定区域。5)恢复现场。6)用RET指令返回主程序。3.保护现场的方法现场是指在从主程序转向子程序之前这一时刻主程序所使用的资源或状态,如寄存器、标志位状态等。由于子程序是一个相对独立的程序,它在执行时可能要使用某些寄存器,而主程序在调用子程序的前后也可能正在使用这些寄存器,这时这些寄存器的使用发生冲突而致使寄存器的内容被破坏,从而使程序得到错误的运行结果。为了避免这种情况的发生,必须在程序中对用到的寄存器、标志位状态等进行保护,称为现场保护。对寄存器的保护既可在主程序中进

5、行,也可在子程序中进行。因为主程序和子程序是分开编制的,一个子程序往往要多次被同一个主程序调用或多次被不同的调用程序所调用,所以选择在子程序中保护寄存器显得更加简洁。一般来说,在子程序的开始安排保护现场,在子程序结束之前恢复现场。子程序中现场保护的形式如下:ADDSUBPROCNEAR;定义子程序PUSHAX;保护现场PUSHBXPUXHCX……;子程序功能段POPCX;恢复现场POPBXPOPAXRETADDSUBENDP当然了,也可以在主程序中CALL指令之前和之后安排保护现场和恢复现场的操

6、作。不管采用哪种方法进行现场的保护和恢复,都应考虑哪些寄存器是必须保护的,哪些是不必要保护或不应该保护的。一般地说,子程序中用到的寄存器都要保护,但若某寄存器是用来传递参数的,该寄存器就不一定需保护,尤其是用于向主程序返回结果的寄存器不需要保护,以免由于保护和恢复现场而破坏了主程序应得的正确结果。4.参数传递的方法在主程序调用子程序时,经常需要向子程序传递一些数据,这些数据称为入口参数;子程序执行完成后,也要将执行的结果返回给主程序,这些数据称为出口参数。参数传递主要采用3种方法:寄存器传递、存

7、储单元传递和堆栈传递。(1)用寄存器传递参数:这种参数传递方法通常是主程序将参数放入约定的寄存器中,进入子程序后,子程序从约定寄存器取得这些参数进行加工处理,子程序处理的结果也放入约定的寄存器中,返回后主程序就可以从约定的寄存器中取得结果。这种方法十分方便,但由于受寄存器数量的限制,故用寄存器传递参数的方法仅用于传递参数较少的情况。例5-1设有一ASCII码字符串存放在内存以STRING为首址的连续单元中,字符串长度在COUNT中。要求将该字符串中每一个字符加偶校验位。试以调用子程序的方法来实现

8、。解为了保证数据传送的正确性,往往采用各种校验方法,最常用且最简便的是奇(偶)校验。此时数据的最高位作为奇(偶)校验位。当数据传送后根据事先约定的校验方法检查数据中的1的个数是否满足约定的条件。若满足约定的条件,则表示数据传送正确,本次传送有效;否则表示传送出错,数据无效,并且进行相应的处理。在8086/8088系统中有1个程序状态字寄存器PSW,它包含1个PF奇(偶)标志位。若数据中1的个数为偶数时,PF=1;反之,PF=0,据此就可确定偶校验位的状态。开始置串地址指针,串长度取字符送回串中,

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

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

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