子程序的结构形式 一个完整的子程序一般包括下列内容 (1)子程序的说明部分 (2)子程序的调用和返回 (3)子程序的现场保护和现场恢复
子程序的结构形式 ◼ 一个完整的子程序一般包括下列内容: (1) 子程序的说明部分 (2) 子程序的调用和返回 (3) 子程序的现场保护和现场恢复
子程序的说明部分 子程序的说明部分一般包括如下内容: (1)子程序名。命名时要见名知意。 (2)子程序的功能。说明子程序完成的任务。 (3)子程序的入口参数。说明子程序运行所需参数及存放 位置。 (4)子程序的出口参数。说明子程序的运行结果的参数及 存放位置。 (5)子程序所占用的寄存器和工作单元 (6)子程序调用示例
子程序的说明部分 ◼ 子程序的说明部分一般包括如下内容 : (1)子程序名。命名时要见名知意。 (2)子程序的功能。说明子程序完成的任务。 (3)子程序的入口参数。说明子程序运行所需参数及存放 位置。 (4)子程序的出口参数。说明子程序的运行结果的参数及 存放位置。 (5)子程序所占用的寄存器和工作单元。 (6)子程序调用示例
举例 ;子程序名:B16TOD ;子程序的功能:完成将一个16位二进制数(无 符号数)转换为对应的十进制数的 ASCI码,存放在共享存储区 SHALLUNIT ;子程序的入口参数:存放在 BINNUM存储单元 ;子程序的出口参数:存放在共享存储区 SHALLUNIT和共享存储单元 ADDRESS ;子程序所占用的寄存器和:AX,DX,SI,BX ;子程序调用示例:
举例 ;子程序名:B16TOD ;子程序的功能:完成将一个16位二进制数(无 符号数)转换为对应的十进制数的 ;ASCII码,存放在共享存储区SHALLUNIT ;子程序的入口参数:存放在BINNUM存储单元 ;子程序的出口参数:存放在共享存储区 SHALLUNIT和共享存储单元ADDRESS ;子程序所占用的寄存器和:AX,DX,SI,BX ;子程序调用示例:
程序的调用和返回 main sub1 sU call subl call sub2 返回 地址 en ret ret
子程序的调用和返回 . . . . . . . . . . . . ret ret call sub1 call sub2 . . . . . . main sub1 sub2 end 返回 地址
■CALL指令的执行分成两步 第一步,保护返回地址(CAL指令下 条指令的地址),利用堆栈实现,即将 返回地址压入堆栈 第二步,转向子程序,即把子程序的首 地址送入IP或CS:IP ■RET指令的功能是返回主程序,即把子程 序的返回地址送入IP或CSIP
◼ CALL指令的执行分成两步 : 第一步,保护返回地址(CALL指令下一 条指令的地址),利用堆栈实现,即将 返回地址压入堆栈; 第二步,转向子程序,即把子程序的首 地址送入IP或CS:IP ◼ RET指令的功能是返回主程序,即把子程 序的返回地址送入IP或CS:IP