8086指令系统详解:算术运算与寻址方式

需积分: 41 2 下载量 137 浏览量 更新于2024-08-21 收藏 598KB PPT 举报
"8086寻址方式及算术运算指令综合应用实例" 在8086微处理器中,指令系统是其核心组成部分,包含了多种类型的指令,如数据传送、算术运算、逻辑运算、移位、串操作、控制转移以及处理器控制指令等。在这些指令中,算术运算指令用于执行基本的数学运算,如加、减、乘、除。在给定的描述中,展示了如何使用8086汇编语言进行一个涉及多个算术运算的综合实例,计算表达式 (V - (X * Y + Z)) / X,并将结果分别存入AX(商)和DX(余数)。 首先,我们需要理解8086中的寻址方式。8086支持六种基本的寻址方式: 1. 立即寻址:操作数直接在指令中作为常量给出,例如 `MOV AL, 10`。 2. 寄存器寻址:操作数存储在寄存器中,如 `MOV AH, BL`,直接将BL寄存器的内容移动到AH。 3. 直接寻址:直接指定内存单元的段内偏移地址,例如 `MOV AX, [1000H]`。 4. 寄存器间接寻址:通过寄存器来访问内存中的数据,如 `MOV AX, [BX]`,BX寄存器的内容作为内存地址。 5. 变址寻址:结合基址寄存器和变址寄存器来确定内存地址,如 `MOV AX, [BX+DI]`。 6. 基址变址寻址:结合基址寄存器、变址寄存器和增量来确定内存地址,如 `MOV AX, [BX+SI+10H]`。 在给定的实例中,可以看到8086的算术运算指令如IMUL(乘法)、ADD(加法)、ADC(带进位的加法)、SUB(减法)、SBB(带借位的减法)和IDIV(整数除法)的运用。具体步骤如下: 1. 使用IMUL指令计算X乘以Y,结果的低16位存入AX,高16位存入DX。 2. 将Z的值扩展到16位,然后使用ADD指令加上X和Y的乘积(CX和BX),ADC指令处理进位。 3. V的值也扩展到16位,然后使用SUB指令减去上一步得到的(X*Y+Z),SBB指令处理借位。 4. 最后,使用IDIV指令对结果进行除法运算,商存入AX,余数存入DX。 这个例子充分展示了8086如何处理复杂的算术运算,以及如何巧妙地利用各种寻址方式和运算指令来实现特定的计算任务。在实际编程中,理解并熟练运用这些指令和寻址方式对于编写高效的汇编代码至关重要。