80x86指令系统详解:寻址方式与运算指令

需积分: 27 3 下载量 157 浏览量 更新于2024-08-20 收藏 1.2MB PPT 举报
"指令作用-中山大学微机原理与接口汇编语言" 在微机原理与接口技术中,汇编语言是计算机硬件与软件之间的重要桥梁,而80x86指令系统是Intel处理器的核心组成部分。本节主要关注的是80x86指令系统中的逻辑运算指令以及寻址方式。 首先,我们来看逻辑运算指令: 1. AND(按位与):此指令用于对两个操作数进行逐位与运算,并将结果存储在目的操作数中。它不会改变标志寄存器的OF和CF位,但会根据运算结果更新SF(符号标志)、ZF(零标志)和PF(奇偶标志)。 2. TEST:这个指令执行与运算,但不保存结果,只影响标志寄存器的状态,通常用于测试某些位是否为0,而不改变原有数据。 3. OR(按位或):执行逐位或运算,将结果存入目的操作数,同样不改变OF和CF标志,只影响SF、ZF和PF。 4. XOR(按位异或):进行逐位异或运算,结果存入目的操作数。OF和CF标志不变,SF、ZF和PF根据结果更新。 5. NOT(按位取反):将操作数的每一位取反,但不改变标志寄存器。 接下来,我们讨论80x86的寻址方式: 1. 立即寻址:操作数直接在指令中给出,如`MOV AX, 1234H`,其中1234H就是立即数,存储在指令的代码部分。 2. 寄存器寻址:操作数存储在CPU的寄存器中,如`MOV AX, BX`,AX和BX是通用寄存器,用于临时存储数据。 3. 存储器寻址:操作数位于内存中,其地址可以通过基址、变址和位移量的组合得到。在16位系统中,如8086,EA = 基址 + 变址 + 位移量;而在32位系统中,如80386,EA = 基址 + (变址 * 比例因子) + 位移量,比例因子可以是1、2、4或8。 存储器寻址方式包括多种类型: - 直接寻址:直接使用操作数的内存地址,如`MOV AX, [1234H]`。 - 寄存器间接寻址:地址在寄存器中,如`MOV AX, [BX]`。 - 寄存器相对寻址:地址由寄存器值加位移量得到,如`MOV AX, [BX+12H]`。 - 基址变址寻址:结合基址寄存器和变址寄存器,如`MOV AX, [BX+SI]`。 - 相对基址变址寻址:基址加变址再加位移,如`MOV AX, [BX+12H+DI]`。 - 比例变址寻址:仅适用于386以上处理器,变址乘以比例因子后加基址,如`MOV AX, [BX*4+DI]`。 - 基址比例变址寻址:同上,但基址也参与计算,如`MOV AX, [EBX*4+DI]`。 - 相对基址比例变址寻址:在基址基础上加上比例因子乘以变址和位移,仅用于386以上处理器。 这些寻址方式丰富了80x86指令系统的灵活性,使得程序员可以根据需要选择合适的方式访问和操作数据。