Intel 80186及以上汇编指令代码表

需积分: 9 2 下载量 179 浏览量 更新于2024-11-29 收藏 147KB PDF 举报
"Intel Assembler 80186 and higher CodeTable" 本文将详细解析x86汇编语言中的一些核心指令,这些指令在Intel 80186及更高版本的处理器上运行。这份代码表涵盖了转移、标志操作、算术与逻辑运算、控制流程以及数据处理等多个方面,对于理解和编写x86汇编程序具有重要的参考价值。 1. **转移指令**: - `MOV`:移动或复制操作数,不改变标志位,例如`MOVDest,Source`,将Source的值赋给Dest。 - `XCHG`:交换两个操作数的值,如`XCHGOp1,Op2`,Op1和Op2的值互换。 2. **标志操作指令**: - `STC`:设置进位标志,使CF=1。 - `CLC`:清除进位标志,使CF=0。 - `CMC`:取反进位标志,CF取反。 - `STD`:设置方向标志,用于串操作时向下(地址减小)进行。 - `CLD`:清除方向标志,串操作向上(地址增大)进行。 - `STI`:开启中断,使IF=1。 - `CLI`:关闭中断,使IF=0。 3. **堆栈操作指令**: - `PUSH`:将源操作数压入堆栈,如`PUSHSource`,堆栈指针SP递减,Source的值存入[SP]。 - `POPF`:弹出堆栈中的标志位到相应位置,恢复标志状态。 - `PUSHA`:将所有通用寄存器压入堆栈,顺序是AX, CX, DX, BX, SP, BP, SI, DI。 - `POP`:从堆栈中弹出数据到目标操作数,如`POPDest`,堆栈指针SP递增,[SP]的值赋给Dest。 - `POPA`:将堆栈中的所有通用寄存器值依次弹出,恢复它们的原值。 4. **数据转换指令**: - `CBW`:字节扩展至字,将AL中的带符号字节转换为AX中的带符号字。 - `CWD`:字扩展至双字,将AX中的带符号字扩展为DX:AX的带符号双字。 - `CWDE`(386及以上):字扩展至32位,将AX中的带符号字转换为EAX中的带符号32位数。 5. **其他常用指令**: - `PUSHF`:压入标志寄存器到堆栈,包含O, D, I, T, S, Z, A, P, C等标志,286以上还包含NT, IOPL标志。 - `POPFD`(386及以上):从堆栈中弹出标志寄存器,恢复其值。 以上指令是x86汇编语言的基本组成部分,理解并熟练掌握这些指令,能够帮助开发者有效地编写和调试底层代码。在实际编程中,还会涉及到其他指令,如算术运算指令(ADD, SUB, MUL, DIV等)、逻辑运算指令(AND, OR, XOR, NOT等)、比较指令(CMP)以及控制流程指令(JMP, CALL, RET等),这些指令共同构成了x86汇编语言的完整体系。