子程序的现场保护和现场恢复 在主程序调用子程序时已经占用了一定 数量的寄存器,子程序执行时又要使用 寄存器,子程序执行完返回主程序后, 又要保证主程序按原来状态继续执行, 这就需要对那些在主程序中使用过了的 寄存器,在子程序中又要用,且它们在 主程序中的值又不能被覆盖时(因为子 程序返回后主程序还要使用),这些寄 存器的内容在子程序体执行之前必须加 以保护,这就称为现场保护
子程序的现场保护和现场恢复 ◼ 在主程序调用子程序时已经占用了一定 数量的寄存器,子程序执行时又要使用 寄存器,子程序执行完返回主程序后, 又要保证主程序按原来状态继续执行, 这就需要对那些在主程序中使用过了的 寄存器,在子程序中又要用,且它们在 主程序中的值又不能被覆盖时(因为子 程序返回后主程序还要使用),这些寄 存器的内容在子程序体执行之前必须加 以保护,这就称为现场保护
■子程序执行完再恢复这些寄存器的内容, 称为现场恢复。子程序的现场保护和现 场恢复既可以在主程序中完成,也可以 在子程序中完成,但为了使程序结构清 晰,我们一般在子程序中完成现场保护 和现场恢复
◼ 子程序执行完再恢复这些寄存器的内容, 称为现场恢复。子程序的现场保护和现 场恢复既可以在主程序中完成,也可以 在子程序中完成,但为了使程序结构清 晰,我们一般在子程序中完成现场保护 和现场恢复
子程序的现场保护和现场恢复方法有两 种 利用堆栈实现现场保护和现场恢复(利 用PUSH/POP指令实现)。 利用内存单元实现现场保护和现场恢复 (利用MOV指令实现)
◼ 子程序的现场保护和现场恢复方法有两 种 利用堆栈实现现场保护和现场恢复(利 用PUSH/POP指令实现)。 利用内存单元实现现场保护和现场恢复 (利用MOV指令实现)
利用堆栈实现现场保护和恢复 过程名PROC[ NEAR/ FAR] PUSH AX 保护现场 PUSH DX 过程定义体 POP DX ;恢复现场 POP AX RET 过程名ENDP
利用堆栈实现现场保护和恢复 过程名 PROC [NEAR/FAR] PUSH AX. . . ;保护现场 . PUSH DX . . ;过程定义体 . POP DX . . ;恢复现场 . POP AX RET 过程名 ENDP
442子程序参数传递方法 主程序在调用子程序之前,必须把要子 程序处理的数据传送给子程序,这些加 工处理的数据就称为子程序的输入参数, 也叫入口参数。 当子程序执行完返回主程序时,应该把 本次处理的结果返回给主程序,这些加 工处理的结果就称为输出参数,也称为 子程序的出口参数
4.4.2 子程序参数传递方法 ◼ 主程序在调用子程序之前,必须把要子 程序处理的数据传送给子程序,这些加 工处理的数据就称为子程序的输入参数, 也叫入口参数。 ◼ 当子程序执行完返回主程序时,应该把 本次处理的结果返回给主程序,这些加 工处理的结果就称为输出参数,也称为 子程序的出口参数