微机原理及应用 8086指令系统 ☆传送类指令 ☆数据操作类指令 ☆串操作指令 ☆控制类指令 本章要求
微机原理及应用 1 8086指令系统 传送类指令 数据操作类指令 串操作指令 控制类指令 本章要求
微机原理及应用 控制类指令 此类指令主要由以下几部分组成: 子程序调用和返回指令 无条件转移和条件转移指令 循环控制指令 中断控制指令 处理器控制指令 返回
微机原理及应用 2 控制类指令 此类指令主要由以下几部分组成: 一、子程序调用和返回指令 二、无条件转移和条件转移指令 三、循环控制指令 四、中断控制指令 五、处理器控制指令 返回
微机原理及应用 3 子程序调用和返回指令 为了方便模块化程序设计,往往把 程序中某些具有独立功能的部分编 写成独立的程序模块,称之为程序。 子程序调用和返回指令都不影响标 志位 子程序调用指令∶CALL 子程序返回指令:RET 指令说明 返回
微机原理及应用 3 子程序调用和返回指令 为了方便模块化程序设计,往往把 程序中某些具有独立功能的部分编 写成独立的程序模块,称之为程序。 子程序调用和返回指令都不影响标 志位。 一、子程序调用指令:CALL 二、子程序返回指令:RET 返回 指令说明:
微机原理及应用 调用指令的执行过程 将调用指令的下一条指令的地址(断点)压入 堆栈 获取子过程的入口地址(子过程第1条指令的 偏移地址) (执行子过程,含相应参数的保存及恢复) 将断点偏移地址由堆栈弹出,返回原程序 返回
微机原理及应用 4 调用指令的执行过程 • 将调用指令的下一条指令的地址(断点)压入 堆栈 • 获取子过程的入口地址(子过程第1条指令的 偏移地址) • (执行子过程,含相应参数的保存及恢复) • 将断点偏移地址由堆栈弹出,返回原程序 返回
微机原理及应用 5 子程序调用指令 该类指令提供了子程序內直接调用指令、段内 间接调用指令、段间直接调用指令和段间间接 调用指令。 段内直接调用 段内间接调阻 段间直接调用 段间间接调阻 指令说明 返回
微机原理及应用 5 子程序调用指令 • 该类指令提供了子程序内直接调用指令、段内 间接调用指令、段间直接调用指令和段间间接 调用指令。 一、段内直接调用 二、段内间接调用 三、段间直接调用 四、段间间接调用 指令说明… 返回
微机原理及应用 6 段内直接调用 指令格式: CALL DST; (SP)(SP)-2,((SP2,(SP}1)(IP) IP)(IP)+16位偏移量 例如: CALL1000H;段内直接调用,调用地址 在指令中给出 ●子过程与原调用程序在同一代码段,在调用 之前只需保护断点的偏移地址 返回
微机原理及应用 6 段内直接调用 • 指令格式:CALL DST ; (SP) (SP)-2, ((SP)-2, (SP)-1) (IP) (IP) (IP)+16位偏移量 例如: CALL 1000H ; 段内直接调用,调用地址 在指令中给出 返回 ⚫ 子过程与原调用程序在同一代码段,在调用 之前只需保护断点的偏移地址
微机原理及应用 段内间接调用 指令格式: CALL DST (SP)(SP)2,(SP)-2,(SP)-1)(IP) (IP)-(EA) 例如: CALL AX;段内间接调用,调用地址 由AX给出。(IP)(AX) ●子过程与原调用程序在同一代码段,在调用 之前只需保护断点的偏移地址 返回
微机原理及应用 7 段内间接调用 • 指令格式:CALL DST ; (SP) (SP)-2, ((SP)-2, (SP)-1) (IP) (IP) (EA) 例如: CALL AX ; 段内间接调用,调用地址 由AX给出。(IP) (AX) 返回 ⚫ 子过程与原调用程序在同一代码段,在调用 之前只需保护断点的偏移地址
微机原理及应用 8 段间直接调用 指令格式: CALL DST; (SP)(SP)-2,(SP)-2,(SP-1)(CS)段地址 (SP)(SP)-2,(SP)-2,(SP-1)(P)偏移地址 例如: CALL2500:3600;段间直接调用,调用段地 址和偏移量在指令中给出 ●子过程与原调用程序不在同一代码段,在调用之前 需保护断点的段基地址和偏移地址。先将断点的CS 压栈,再压入IP 返回
微机原理及应用 8 段间直接调用 • 指令格式:CALL DST ; (SP) (SP)-2, ((SP)-2, (SP)-1) (CS)段地址 (SP) (SP)-2, ((SP)-2, (SP)-1) (IP)偏移地址 例如: CALL 2500:3600 ; 段间直接调用,调用段地 址和偏移量在指令中给出 返回 ⚫ 子过程与原调用程序不在同一代码段,在调用之前 需保护断点的段基地址和偏移地址。先将断点的CS 压栈,再压入IP
微机原理及应用 9 段间间接调用 指令格式: CALL DST; (SP).(SP)-2,((SP-2,(SP-1)(CS) (SP).(SP)-2,(SP-2,(SP)-1)+(IP) (IP)(EA)寻址方式确定的有效地址 (CS)←(EA+2) 例如: CALL DWORD PTR[D];段间间接调用,指令给出 调用段地址和偏移量的存 放地址
微机原理及应用 9 段间间接调用 • 指令格式:CALL DST ; (SP) (SP)-2, ((SP)-2, (SP)-1) (CS) (SP) (SP)-2, ((SP)-2, (SP)-1) (IP) (IP) (EA) 寻址方式确定的有效地址 (CS) (EA+2) 例如: CALL DWORD PTR[DI] ; 段间间接调用,指令给出 调用段地址和偏移量的存 放地址
微机原理及应用 示例 10 设(DS)=6000H,(S)=0560H 指令 CAL 代码段 CALL DWORD PTRIDI 的操作示意图 60560H XXH XXH IP XXH XXH 数据段 CS 返回
微机原理及应用 10 示例 • 设(DS)=6000H,(SI)=0560H, 指令 CALL DWORD PTR[DI] 的操作示意图 XXH XXH XXH XXH IP CS CALL ┇ ┇ ┇ ┇ 代 码 段 数 据 段 60560H 返回