预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共65页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章子程序设计7.1子程序概述在设计子程序时,主要应解决如下几个问题:7.2子程序调用与返回指令1.子程序调用指令CALL1.子程序调用指令CALL(1)段内直接调用例7-3:分析下列指令。(2)段内间接调用例7-4:(3)段间直接调用例7-5:分析如下调用指令。(4)段间间接调用例7-6:下面指令都是段间间接调用。以上几条调用指令在使用时应注意:2.子程序返回指令RET(1)段内返回指令(2)段间返回指令(3)带立即数的返回指令例7-7:分析如下返回指令3.子程序定义格式7.3主程序与子程序的参数传递1.用寄存器传递参数例7-8:分析:源程序如下:2.通过存储单元传递参数例7-9:要求同上,现在用存储单元传递参数,计算数组元素的累加和。源程序如下:3.通过堆栈传递参数例7-10:要求同上,现在用堆栈传递参数,计算数组元素的累加和。源程序如下:7.4子程序设计方法1.子程序调用方法说明2.保护现场和恢复现场例如,若子程序SUB1中改变了AX、BX、CX、DX四个寄存器的内容,则可以用如下方法实现保护现场和恢复现场的工作:例7-11:编写一个求两个正整数最大公约数的子程序。子程序清单:例7-12:假设在A、B、C、D四个字单元中各存放一个正整数,试编写程序分别求出A与B的最大公约数M,C与D的最大公约数N,再求出M与N之和,将结果存入RESULT字单元中。源程序如下:例7-13:十进制到十六进制数转换程序。源程序如下:;子程序DECTOBIN;功能:接收从键盘输入的十进制数,并将其转换为二进制数存放在BX寄存器中。;无入口参数。出口参数为BX寄存器。;子程序BINTOHEX;功能:将BX寄存器中的二进制数转换为十六进制数并显示出来。;入口参数:BX寄存器。;无出口参数。;RETURN子程序,用来输出回车换行7.5子程序的嵌套例7-14:假设在BUF1开始的存储区中放有若干个无符号字节数据,试编写程序,找出其中的最大值,并以十六进制的形式在屏幕上显示出来。源程序如下:;子程序MX_DISP;子程序DISPLAY7.6子程序的递归调用例7-15:编写一个程序计算N!(N≥0)。下面以N=5为例进行说明。源程序如下:;递归子程序FACTOR此课件下载可自行编辑修改,供参考! 感谢您的支持,我们努力做得更好!