一、汇编指令简表
- 数据传送指令
| 汇编格式 | 指令的操作 |
|---|---|
| mov dest,source | 数据传送 |
| CBW | 字节转换成字 |
| CWD | 字转换成双字 |
| LAHF | FLAGS低8位装入AH寄存器 |
| SAHF | AH寄存器内容送到FLAGS低8位 |
| LDS dest,source | 设定数据段指针 |
| LES dest,source | 设定附加段指针 |
| LEA dest,source | 装入有效地址 |
| PUSH source | 将一个字压入栈顶 |
| POP dest | 将一个字从栈顶弹出 |
| PUSHF | 将标志寄存器FLAGS的内容压入栈顶 |
| POPF | 将栈顶内容弹出到标志寄存器FLAGS |
| XCHG dest,source | 交换 |
| XLAT source | 表转换 |
2.算数运算指令
| 汇编格式 | 指令的操作 |
|---|---|
| AAA | 加法的ASCII调整 |
| AAD | 除法的ASCII调整 |
| AAM | 乘法的ASCII调整 |
| AAS | 减法的ASCII调整 |
| DAA | 加法的十进制调整 |
| DAS | 减法的十进制调整 |
| MUL source | 无符号乘法 |
| IMUL source | 整数乘法 |
| DIV source | 无符号除法 |
| IDIV | 整数除法 |
| ADD dest,source | 加法 |
| ADC dest,source | 带进位加 |
| SUB dest,source | 减法 |
| SBB dest,source | 带借位减 |
| CMP dest,source | 比较 |
| INC dest | 加1 |
| DEC dest | 减1 |
| NEG dest | 求补 |
3.逻辑运算指令
| 汇编格式 | 指令的操作 |
|---|---|
| AND dest,source | 逻辑‘与’ |
| OR dest,source | 逻辑‘或’ |
| XOR dest,source | 逻辑‘或非’ |
| NOT dest | 逻辑‘非’ |
| TEST dest,source | 测试(非破坏性逻辑‘与’) |
4.移位指令
| 汇编格式 | 指令的操作 |
|---|---|
| RCL dest,count | 通过进位循环左移 |
| RCR dest,count | 通过进位循环右移 |
| ROL dest,count | 循环左移 |
| ROR dest,count | 循环右移 |
| SHL / SAL dest,count | 逻辑左移/算数左移 |
| SHR dest,count | 逻辑右移 |
| SAR dest,count | 算术右移 |
5.串操作指令
| 汇编格式 | 指令的操作 |
|---|---|
| MOVS / MOVSB / MOVSW dest,source | 字符串传送 |
| CMPS / CMPSB / CMPSW dest,source | 字符串比较 |
| LODS / LODSB / LODSW source | 装入字节串或字串到累加器 |
| STOS / STOSB / STOSW dest | 存储字节串或字串 |
| SCAS / SCASB / SCASW dest | 字符串扫描 |
6.程序控制指令
| 汇编格式 | 指令的操作 |
|---|---|
| CALL dest | 调用一个过程(子程序) |
| RET [ 弹出字节数(必须为偶数)] | 从过程(子程序)返回 |
| INT int_type | 软件中断 |
| INTO | 溢出中断 |
| IRET | 从中断返回 |
| JMP dest | 无条件转移 |
| JG / JNLE short_label | 大于或不小于等于转移 |
| JGE / JNL short_label | 大于等于或不小于转移 |
| JL / JNGE short_label | 小于或不大于等于转移 |
| JLE / JNG short_label | 小于等于或不大于转移 |
| JA / JNBE short_label | 高于或不低于等于转移 |
| JAE / JNB short_label | 高于等于或不低于转移 |
| JB / JNAE short_label | 低于或不高于等于转移 |
| JBE / JNA short_label | 低于等于或不高于转移 |
| JO short_label | 溢出标志为1转移(溢出转移) |
| JNO short_label | 溢出标志为0转移(无溢出转移) |
| JS short_label | 符号标识为1转移(结果为负转移) |
| JNS short_label | 符号标识为1转移(结果为正转移) |
| JC short_label | 进位标志为1转移(有进位转移) |
| JNC short_label | 进位标志为0转移(无进位转移) |
| JZ / JE short_label | 零标志为1转移(等于或为0转移) |
| JNZ /JNE short_label | 零标志为0转移(不等于或不为0转移) |
| JP /JPE short_label | 奇偶标志为1转移(结果中有偶数个1转移) |
| JNP / JPO short_label | 奇偶标志为0转移(结果中有奇数个1转移) |
| JCXZ short_label | 若CX=0则转移 |
| LOOP short_label | CX 不等于0时循环 |
| LOOPE / LOOPZ short_label | CX不等于0且ZF=1时循环 |
| LOOPNE / LOOPNZ short_label | CX不等于0且ZF=0时循环 |
| STC | 进位标志置1 |
| CLC | 进位标识置0 |
| CMC | 进位标志取反 |
| STD | 方向标志置1 |
| CLD | 方向标志置0 |
6.程序控制指令
| 汇编格式 | 指令的操作 |
|---|---|
| STI | 中断标志置1(允许可屏蔽中断) |
| CLI | 中断标志置0(禁止可屏蔽中断) |
| ESC | CPU交权 |
| HLT | 停机 |
| LOCK | 总线封锁 |
| NOP | 无操作 |
| WAIT | 等待至TEST(上边有个横线)信号有效为止 |
7.输入/输出指令
| 汇编格式 | 指令的操作 |
|---|---|
| IN acc,source | 从外设接口输入字节或字 |
| OUT dest,acc | 向外设接口输出字节或字 |
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176712.html原文链接:https://javaforall.net
