8086汇编指令速查手册

5星 · 超过95%的资源 需积分: 9 35 下载量 14 浏览量 更新于2024-11-18 收藏 7KB TXT 举报
"8086 汇编速查手册" 8086汇编语言是Intel 8086处理器使用的编程语言,它直接对应于机器指令,用于编写低级程序,如操作系统、设备驱动程序等。下面将详细阐述8086汇编中的几个关键知识点。 1. 数据移动指令 - MOV: 将源操作数的数据复制到目标操作数,可以用于寄存器与寄存器、寄存器与内存、内存与内存之间的数据传输。 - MOVSX: 有符号扩展,将一个8位或16位源操作数扩展为16位或32位,并将其移动到目的寄存器。 - MOVZX: 无符号扩展,将一个8位或16位源操作数扩展为16位或32位,并将其移动到目的寄存器。 - PUSH: 将一个操作数压入堆栈,通常用于保存临时数据或调用子程序时保留寄存器值。 - POP: 从堆栈顶部弹出一个操作数到指定寄存器,恢复先前保存的值。 - PUSHA/POPA: 分别将所有通用寄存器(AX, CX, DX, BX, SP, BP, SI, DI)一次性压入或弹出堆栈。 - PUSHAD/POPAD: 与PUSHA/POPA类似,但在32位环境下,将所有32位通用寄存器(EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)压入或弹出堆栈。 2. 位操作指令 - BSWAP: 交换一个32位寄存器的高低字节,用于字节顺序转换。 - XCHG: 交换两个操作数的值,可以是寄存器与寄存器、寄存器与内存。 - CMPXCHG: 在比较后交换,原子操作,常用于同步原语。 - XADD: 交换并添加,同时更新两个操作数的值。 - XLAT: 查找表指令,根据AL的内容在内存地址[BX+AL]处查找并加载到AL。 3. 输入/输出指令 - IN: 从端口读取数据到寄存器,通常与DX寄存器一起使用,指定端口号。 - OUT: 将数据从寄存器写入端口,同样需要DX寄存器指定端口号。 - 端口地址范围:对于8位端口,地址范围是0-255;对于16位端口,地址范围是0-65535。 4. 寄存器间接寻址 - LEA: 计算内存地址,将表达式的结果加载到寄存器,不进行实际的数据访问。 - LDS/LDS/LES/LFS/LGS/LSS: 用于加载段寄存器(DS/ES/FS/GS/SS),并将内存地址加载到对应的指针寄存器(DX/SI/DI)。 5. 控制和算术指令 - LAHF/SAHF: 从标志寄存器加载或存储特定的标志位。 - PUSHF/POPF: 压入或弹出标志寄存器的值,用于保存和恢复程序状态。 - PUSHD/POPD: 对应于32位环境下的标志寄存器。 - ADD/ADC: 加法指令,ADC会在加法后加上进位标志CF。 - INC: 自增1操作。 - AAA/AAS: ASCII调整指令,用于处理十进制算术。 - DAA/DAS: 用于处理十六进制算术。 - SUB/SBB: 减法指令,SBB会减去带进位标志CF的值。 - DEC: 自减1操作。 - NEG: 取反,将操作数变为它的负数。 - CMP: 比较指令,不改变任何寄存器,仅设置标志位。 - MUL/IMUL: 乘法指令,结果可能溢出。 - AAM: ASCII除法辅助指令,用于处理ASCII格式的除法。 - DIV/IDIV: 整数除法指令,处理除法和求余数。 6. 类型转换指令 - CBW/CWD/CWDE/CDQ: 用于字节到字、字到双字的转换,确保正确的符号扩展。 这些指令构成了8086汇编语言的基础,它们在编写汇编代码时被频繁使用,理解和掌握这些指令是学习8086汇编的关键。通过熟练运用这些指令,开发者可以编写出高效、精确的低级程序。