8086CPU控制转移指令详解

需积分: 22 3 下载量 199 浏览量 更新于2024-08-25 收藏 249KB PPT 举报
"8086CPU指令系统包括无条件转移指令JMP、有条件转移指令JXX组、过程调用指令CALL、过程返回指令RET以及循环控制指令LOOP、LOOPZ和LOOPNZ。这些指令是控制流程的基础,用于实现程序的跳转、条件判断和循环操作。除此之外,8086CPU指令系统还包括数据传送类、算术运算类、逻辑运算类、串操作类和处理器控制类指令。数据传送类指令如MOV、PUSH、POP、XCHG、IN、OUT、XLAT以及LEA、LDS、LES等,它们负责数据在不同位置之间的移动和转换。" 8086CPU的控制转移类指令是程序执行的关键部分,它们允许程序根据条件或无条件地改变执行流程,从而实现复杂逻辑和循环结构。 1. **无条件转移指令JMP**:JMP指令用于不考虑任何条件地将程序执行转移到指定地址,它可以是直接地址、相对地址或者段基址加偏移地址的形式,实现程序的非线性执行。 2. **有条件转移指令JXX组**:JXX组包括一系列如JNE(不相等)、JE(等于)、JG(大于)、JL(小于)等指令,根据标志寄存器中的状态位来决定是否转移,用于实现条件分支。 3. **过程调用指令CALL**:CALL指令用于调用子程序或函数,它将返回地址压入堆栈,然后跳转到指定地址执行,是实现程序模块化的重要手段。 4. **过程返回指令RET**:RET指令用于从子程序或函数返回,它从堆栈中取出顶部的返回地址并跳转到该地址,恢复程序的正常执行顺序。 5. **循环控制指令LOOP、LOOPZ、LOOPNZ**:这些指令用于控制循环,其中LOOP根据CX(计数寄存器)的值递减并检查是否为零来决定是否继续循环;LOOPZ在CX非零且ZF(零标志)为1时继续循环;LOOPNZ则在CX非零且ZF为0时继续循环。 数据传送类指令是8086CPU指令系统的基础,它们负责在不同位置间移动数据,如: 1. **通用传送指令MOV**:MOV是最常用的指令,可以将数据从一个位置传送到另一个位置,支持多种寻址方式,包括寄存器到寄存器、寄存器到存储器、存储器到寄存器等。 2. **累加器AL, AX专用传送指令**:如IN和OUT指令用于I/O端口的数据交换,XLAT指令用于查表操作。 3. **目标地址传送指令LEA、LDS、LES**:LEA用于获取内存地址,LDS和LES分别用于加载段寄存器和段寄存器及偏移地址到双字节寄存器,便于访问内存。 在进行数据传送时,需注意数据类型的匹配和正确使用各种寻址方式,以确保指令正确执行。例如,MOVAL, DL和MOVAL, 2000H这样的指令是错误的,因为AL只能接受8位数据,而2000H是16位数值。同样,直接对存储器地址2000H赋值也需要通过正确的寻址方式,如MOV[BX], 20H。理解这些指令的细节和限制对于编写有效的8086汇编语言程序至关重要。