1 / 156
文档名称:

第5章子程序107.ppt

格式:ppt   大小:651KB   页数:156页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第5章子程序107.ppt

上传人:zbfc1172 2017/6/6 文件大小:651 KB

下载得到文件列表

第5章子程序107.ppt

相关文档

文档介绍

文档介绍:1新编汇编语言程序设计新新编编汇编语言程序设计汇编语言程序设计 2第五章第五章子程序子程序 子程序 参数的传递 嵌套和递归子程序 多模块程序设计 汇编语言与 C语言混合编程 DOS 和 BIOS 调用****题五 子程序 参数的传递 嵌套和递归子程序 多模块程序设计 汇编语言与 C语言混合编程 DOS 和 BIOS 调用****题五 3 子程序( Subroutine ): 把程序需要完成的任务分解为若干个“子任务”, 每个“子任务”由一段相对独立的程序完成,称为“子程序”。调用子程序的程序称为“主程序”或者“主调程序”。子程序也称为“过程”( Procedure ), 在高级语言里还称作“函数”( Function )。子程序( Subroutine ): 把程序需要完成的任务分解为若干个“子任务”, 每个“子任务”由一段相对独立的程序完成,称为“子程序”。调用子程序的程序称为“主程序”或者“主调程序”。子程序也称为“过程”( Procedure ), 在高级语言里还称作“函数”( Function )。 4 子程序结构程序的优点: ,提高了程序的可阅读性和可维护性。 ,由于程序规模较小,降低了调试难度。 , 提高程序的“可重用性”,提高了软件开发效率。子程序结构程序的优点: ,提高了程序的可阅读性和可维护性。 ,由于程序规模较小,降低了调试难度。 , 提高程序的“可重用性”,提高了软件开发效率。 5 主程序: ………… CALL PROC1 MOV AX, BX ……子程序 PROC1 : ……………… RET 把下一条指令地址压入堆栈保存按照堆栈保存的地址返回图 5-1 子程序的调用和返回 6 近程子程序: ?只能被同一个代码段里的程序调用的子程序。?由于主程序和子程序处于同一个代码段,调用和返回时只需要改变 IP寄存器的值, CS 寄存器的值保持不变。?近程子程序的入口地址用 16位段内偏移地址表示。 7 远程子程序: ?能够被不同代码段的程序调用,也能被同一代码段的程序调用的子程序。?调用这样的子程序时,需要同时改变 CS 和 IP寄存器的值,返回时,需要从堆栈里弹出 32位的返回地址送入 IP, CS 寄存器。?远程子程序的入口地址用 16位段基址和 16位段内偏移地址表示。子程序的类型在定义时说明子程序的类型在定义时说明 8 子程序子程序 CALL 和RET 指令 子程序的定义 子程序文件 子程序应用 9 CALL ( Call ,调用)指令?段内直接调用格式: CALL 子程序名操作: SP ← SP-2, SS:[SP] ← IP(保存 16位返回地址) IP ←子程序入口的偏移地址例如: CALL PROC1 ?段内间接调用格式: CALL REG16/MEM16 操作: SP ← SP-2 , SS:[SP] ← IP (保护 16位返回地址) IP ← REG16/MEM16 CALL 和 RET 指令 10 例如:调用名为“ PROC1 ”的近程子程序。(1) CALL PROC1 (2) LEA CX, PROC1 CALL CX (3) ADDR_PROC1 DW PROC1 ;子程序偏移地址放入存储器字变量…… CALL ADDR_PROC1 ;调用近程子程序 PROC1 (4)…… LEA BX, ADDR_PROC1 CALL WORD PTR [BX] ;调用近程子程序 PROC1 (1) CALL PROC1 (2) LEA CX, PROC1 CALL CX (3) ADDR_PROC1 DW PROC1 ;子程序偏移地址放入存储器字变量…… CALL ADDR_PROC1 ;调用近程子程序 PROC1 (4)…… LEA BX, ADDR_PROC1 CALL WORD PTR [BX] ;调用近程子程序 PROC1