汇编语言第6章.ppt

汇编语言第6章.ppt

ID:48749716

大小:289.00 KB

页数:38页

时间:2020-01-21

汇编语言第6章.ppt_第1页
汇编语言第6章.ppt_第2页
汇编语言第6章.ppt_第3页
汇编语言第6章.ppt_第4页
汇编语言第6章.ppt_第5页
资源描述:

《汇编语言第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六章子程序设计本章主要内容:子程序调用与返回指令编制子程序的基本要求子程序设计举例DOS功能子程序调用1子程序--在一个程序的不同的地方需要多次使用的某个程序段,将其进行独立编制。调用与返回:在主程序中需要使用该功能时,就转移到子程序执行,执行完后又返回原程序继续执行。这样的程序结构称为子程序设计。6.1调用与返回指令在汇编语言中,子程序是以“过程”的形式表示。根据被调用过程与调用程序是否在同一个段内,可以分为两种情况。2主程序与子程序同在一个段内。这时,子程序的调用与返回只需修改指令指针IP。CODEASEGMENT...CALLPRO

2、CAAAA:......PROCAPROC...RET...PROCAENDP...CODEAENDS段内调用与返回右图中指令CALLPROCA就是段内调用。3下面CODEB段中的CALLFARPTRPROCB就是段间调用。CODEASEGMENTCODEBSEGMENT......PROCBPROC...CALLFARPTRPROCB...BBB:......RETPROCBENDPCODEBENDS...CODEAENDS段间调用与返回调用指令与子程序分别在不同的段,这时,需要同时修改CS和IP。4执行CALL指令时,先将断点压入堆栈中

3、保存,然后转移到目标单元。1、调用指令指令格式:CALL过程名CALL指令的执行对各标志位无影响。前述程序结构图中,AAA和BBB就是两条调用子程序指令的断点。断点是调用子程序指令CALL的下一条指令的地址。5汇编指令书写格式为在CALL之后直接书写过程名(1)段内调用(a)段内直接调用例如:CALLSUB1例如:CALLBXCALLCXCALLWORDPTR30H[BX][SI](b)段内间接调用子程序的起始地址(偏移量)由一个通用寄存器或一个字存储单元提供。6调用指令提供一个双字存储单元的地址,它所指向的双字存储单元内容为被调用过程的起

4、始地址。其中,两个低字节存放偏移量,两个高字节存放段基值。(b)段间间接调用例如:CALLDWORDPTRDISP[BX][DI]由于在定义过程时,对提供段间调用的过程,已经说明其属性为FAR。因此调用时,在CALL后直接书写过程名,也可以在过程名前面加FAR属性修饰。(2)段间调用(a)段间直接调用例如:CALLPROC_NAMECALLFARPTRPROC_NAME7两者都是无条件转移到目标单元,但CALL指令要保存“断点”,而JMP指令不保存断点。(3)子程序调用指令与转移指令JMP的区别83、返回指令(2)段间返回——指令编码为CB

5、H执行该指令,将从堆栈顶部弹出两个字分别送IP和CS中。根据子程序调用指令的使用情况,返回指令也分为段内返回和段间返回。其汇编指令书写形式都是RET,但它们的编码是不相同的。一个子程序最后执行的指令一定是返回指令,但不一定是最后一条指令。(1)段内返回——指令编码为C3H执行该指令,将从堆栈顶部弹出一个字送入IP。9汇编指令格式为:RETn其中n为一个立即数,长度为2字节。并且是一个偶数。(1)从堆栈弹出1个字送IP(段内返回)或2个字送IP和CS;(2)执行SP<=(SP)+n。将堆栈中已经用过的参数(n个字节)弹出舍去.指令执行过程:(

6、3)带弹出值的返回指令这条指令既可用于段内返回也可以用于段间返回,但它们的指令编码不同,分别为C2n和CAn。106.2编制子程序的基本要求1、具有一定的通用性2、选择适当的参数传递方法在主程序与子程序之间传递参数,可以选择的方法有:A、使用通用寄存器B、使用指定的存储单元C、使用堆栈选择和设计好子程序所需的各种入口参数和出口参数。11A、在主程序中保存子程序中将要使用的一些寄存器的内容...PUSHBXPUSHCXCALLSUB1POPCXPOPBX...3、注意信息保护信息的保护可以有两种方法:如果在子程序中需要使用某些寄存器或存储单元

7、,为了不破坏它们原来在主程序中的值,为此需要进行信息保护。12B、在子程序中保存将要使用的一些寄存器的内容SUB2PROCPUSHBXPUSHCX......;完成子程序功能指令序列POPCXPOPBXRETSUB2ENDP4、正确使用堆栈由于堆栈中保存着主程序调用子程序时的断点地址。若在子程序中也使用了堆栈,注意各个数据压栈和出栈的顺序不能错,否则将导致数据错误和子程序返回地址错误。13子程序名子程序功能描述子程序的入口参数与出口参数使用哪些寄存器和存储单元本子程序是否又调用其他子程序子程序的调用形式、举例5、编制子程序文件子程序文件应包

8、括文字说明与子程序本身两个部分。而文字说明一般包括:146.3子程序设计举例例5.5.1将两个给定的二进制数(8位和16位)转换为ASCII码字符串。主程序提供被转换的数据和转换

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

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

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