微机原理及应用 子程序调用指令说明 调用指令在执行时,会把下一 条指令的地址推入堆栈,这个 地址叫返回地址。在段内调用 入口 地址 的情况下,只把返回地址的偏 移量推入堆栈,在段间调用的 情况下,把返回地址的段地址 和偏移量都推入堆栈。 断点 返回
微机原理及应用 11 子程序调用指令说明 • 调用指令在执行时,会把下一 条指令的地址推入堆栈,这个 地址叫返回地址。在段内调用 的情况下,只把返回地址的偏 移量推入堆栈,在段间调用的 情况下,把返回地址的段地址 和偏移量都推入堆栈。 返回 断点 入口 地址
微机原理及应用 12 子程序返回指令 该指令有以下两条: 子程序返回指令:RET 带参数的返回指令:RETn 所有返回指令都不影响标志位 返回
微机原理及应用 12 子程序返回指令 • 该指令有以下两条: 一、子程序返回指令:RET 二、带参数的返回指令:RET n • 所有返回指令都不影响标志位 返回
微机原理及应用 13 子程序返回指令:RET 指令格式:RET;(P)-(SP)+1,(SP) (SP)(SP)+2 指令说明:返回指令RET作为子程序的最后 条指令用来返回高一层的程序。执行时,会从 堆栈顶部弹出返回地址出栈送IP寄存器(段内 或段间)和CS寄存器(段间)。8086指令系统中, 段内返回指令和段间返回指令形式是一样的 不影响标志位。 返回
微机原理及应用 13 子程序返回指令:RET • 指令格式:RET ; (IP) ((SP)+1, (SP)) (SP) (SP)+2 • 指令说明:返回指令RET作为子程序的最后一 条指令用来返回高一层的程序。执行时,会从 堆栈顶部弹出返回地址出栈送IP寄存器 (段内 或段间)和CS寄存器(段间)。8086指令系统中, 段内返回指令和段间返回指令形式是一样的。 不影响标志位。 返回
微机原理及应用 带参数的返回指令:RETn 指令格式: RET EXP (IP)+((SP)+l, (SP) (SP)(SP)+2 (SP)(SP)+D16 指令说明:EXP是一个表达式,根据它的值计算出常数 为指令中的位移量n。n可以表示为0~FFFH范围中的任 何一个偶数 应用范围:主程序为某个子程序提供一定的参数或参数 地址,在进入子程序之前,主程序将这些参数或参数的 地址压入堆栈中,通过堆栈供子程序调用,子程序使用 后,这些参数已无使用价值,堆栈中不需要保存这些参 数,因而在返回指令RET中提供参数n在返回同时堆栈指 针自动增加几个字节,以去掉堆栈中的几个字节。 返回
微机原理及应用 14 带参数的返回指令:RET n • 指令格式:RET EXP ; • (IP) ((SP)+1, (SP)) (SP) (SP)+2 (SP) (SP)+D16 • 指令说明:EXP是一个表达式,根据它的值计算出常数 为指令中的位移量n。n可以表示为0~FFFFH范围中的任 何一个偶数。 • 应用范围:主程序为某个子程序提供一定的参数或参数 地址,在进入子程序之前,主程序将这些参数或参数的 地址压入堆栈中,通过堆栈供子程序调用,子程序使用 后,这些参数已无使用价值,堆栈中不需要保存这些参 数,因而在返回指令RET中提供参数n在返回同时堆栈指 针自动增加几个字节,以去掉堆栈中的几个字节。 返回
微机原理及应用 15 无条件转移和条件转移指令 通过修改指令的偏移地址或段地址及偏移地址实 现程序的转移 无条件转移指令 无条件转移到目标地址,执行新的指令 二、条件转移指令 在具备一定条件的情况下转移到目标地址 返回
微机原理及应用 15 无条件转移和条件转移指令 一、无条件转移指令 无条件转移到目标地址,执行新的指令 二、条件转移指令 在具备一定条件的情况下转移到目标地址 返回 通过修改指令的偏移地址或段地址及偏移地址实 现程序的转移