Intel8086/8088 CPU的控制转移指令详解

需积分: 42 0 下载量 111 浏览量 更新于2024-08-22 收藏 524KB PPT 举报
"Intel8086/8088 CPU的指令系统,包括数据传送、算术运算、逻辑运算、串处理、控制转移和处理机控制指令" 在Intel8086/8088的指令系统中,控制转移指令是程序流程控制的关键部分,它们允许根据特定条件或无条件地改变程序的执行顺序。以下是对这些指令的详细说明: 1. **无条件转移指令 (JMP)**: JMP指令用于立即无条件地跳转到指定的内存地址或寄存器中的地址继续执行程序。 2. **条件转移指令**: 包括一系列基于标志寄存器状态的转移指令,例如: - JZ/JE(零标志ZF=1时转移): 如果最近的算术或逻辑操作结果导致零标志被设置,则执行转移。 - JNZ/JNE(零标志ZF=0时转移): 如果零标志未被设置,则执行转移。 - JS(符号标志SF=1时转移): 如果结果为负,则执行转移。 - JNS(符号标志SF=0时转移): 如果结果为非负,则执行转移。 - JO(溢出标志OF=1时转移): 如果有溢出,则执行转移。 - JNO(溢出标志OF=0时转移): 如果无溢出,则执行转移。 - JP/JPE(奇偶标志PF=1时转移): 如果结果的二进制位中1的个数为偶数,则执行转移。 - JNP/JPO(奇偶标志PF=0时转移): 如果结果的二进制位中1的个数为奇数,则执行转移。 - JB/JNAE/JC( Carry标志CF=1时转移): 如果发生进位,则执行转移。 - JNB/JAE/JNC( Carry标志CF=0时转移): 如果无进位,则执行转移。 - JBE/JNA( Carry标志CF=1或ZF=1时转移): 如果无进位或结果为零,则执行转移。 - JG/JNLE( CF=0且ZF=0时转移): 如果无进位且结果不为零,则执行转移。 - JGE/JNL( SF=OF时转移): 如果符号标志等于溢出标志,则执行转移。 - JL/JNGE( SF≠OF时转移): 如果符号标志不等于溢出标志,则执行转移。 - JLE/JNG( CF=1或ZF=1时转移): 如果有进位或结果为零,则执行转移。 3. **CX寄存器相关的转移指令 (JCXZ)**: 当CX寄存器的值为0时,执行转移。 4. **循环转移指令 (LOOP, LOOPZ/LOOPE, LOOPNZ/LOOPNE)**: LOOP指令用于循环结构,根据CX寄存器的值递减并判断是否继续循环。LOOPZ和LOOPNZ在CX不为0且条件满足时执行转移。 5. **子程序调用指令 (CALL)**: CALL指令用于调用子程序或函数,将返回地址压入堆栈,并跳转到指定地址执行。 6. **返回指令 (RET)**: 结束子程序或函数调用,从堆栈中弹出返回地址并跳转回去。 这些控制转移指令在编程中起到关键作用,允许根据程序的需求灵活地控制程序流程,执行条件判断、循环和子程序调用等复杂操作。了解并熟练运用这些指令是编写有效和高效的汇编语言程序的基础。