### 汇编指令整理非常全的命令 #### 数据传输指令 数据传输指令主要用于实现不同存储位置(如内存与寄存器、寄存器与寄存器、寄存器与输入输出端口)之间的数据传递。 1. **通用数据传送指令** - **MOV**:最常用的指令之一,用于将一个字或字节从源位置移动到目的位置。 - **MOVSX**:执行有符号扩展后进行数据传输。适用于当需要将较小的数据类型扩展为较大类型时,并保持原有的符号位。 - **MOVZX**:执行零扩展后进行数据传输。适用于无符号数据类型的扩展。 - **PUSH**/**POP**:分别用于将数据压入堆栈和从堆栈弹出数据。这些操作通常用于临时保存和恢复寄存器的值。 - **PUSHA**/**POPA**:用于一次性保存或恢复一组寄存器(AX, CX, DX, BX, SP, BP, SI, DI)。常用于子程序调用。 - **PUSHAD**/**POPAD**:与PUSHA/POPA类似,但针对的是32位寄存器(EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)。 - **BSWAP**:用于32位寄存器内部字节顺序的交换。这对于网络编程或字节序转换特别有用。 - **XCHG**:用于交换两个操作数的值。至少有一个操作数必须是寄存器。 - **CMPXCHG**:条件性地交换两个操作数的值,如果比较成功,则交换;否则不做任何操作。通常用于原子操作。 - **XADD**:先交换后加,即先将两个操作数的值交换,然后将原来的第一个操作数与现在的第一个操作数相加。 - **XLAT**:字节查表转换指令。根据寄存器BX指向的表格和寄存器AL作为索引来查找一个值,并将查找到的值放入AL。 2. **输入输出端口传送指令** - **IN**/**OUT**:用于从I/O端口读取数据到寄存器或向I/O端口写入寄存器中的数据。支持直接通过立即数指定端口号(0-255)或通过寄存器DX指定端口号(0-65535)。 3. **目的地址传送指令** - **LEA**:用于将一个存储位置的有效地址加载到寄存器中。 - **LDS**/**LES**/**LFS**/**LGS**/**LSS**:用于将一个存储位置的有效地址和段地址加载到指定的寄存器对中,其中不同的指令对应不同的段寄存器。 4. **标志传送指令** - **LAHF**/**SAHF**:用于将标志寄存器的值复制到寄存器AH或从AH复制到标志寄存器。 - **PUSHF**/**POPF**/**PUSHD**/**POPD**:用于将标志寄存器的值压入堆栈或将堆栈顶部的值弹出到标志寄存器。 #### 算术运算指令 算术运算指令用于执行基本的数学运算,如加法、减法、乘法和除法等。 1. **加法指令** - **ADD**/**ADC**:执行加法或带进位加法。 - **INC**:对操作数加1。 - **AAA**/**DAA**:进行ASCII码调整后的加法。 - **SUB**/**SBB**:执行减法或带借位减法。 - **DEC**/**NEG**:对操作数减1或取反(以0减之)。 - **CMP**:比较两个操作数的值,只更新标志位而不改变操作数本身。 - **AAS**/**DAS**:进行ASCII码调整后的减法。 - **MUL**/**IMUL**:执行无符号或有符号乘法。 - **DIV**/**IDIV**:执行无符号或有符号除法。 - **AAD**:进行ASCII码调整后的除法。 2. **移位指令** - **SHL**/**SAL**:逻辑或算术左移。 - **SHR**/**SAR**:逻辑或算术右移。 - **ROL**/**ROR**:循环左移或右移。 - **RCL**/**RCR**:通过进位的循环左移或右移。 #### 逻辑运算指令 逻辑运算指令用于执行位级逻辑运算,如与、或、异或、取反等。 1. **基本逻辑指令** - **AND**/**OR**/**XOR**/**NOT**:执行按位与、或、异或或取反操作。 - **TEST**:执行按位与操作,但不改变操作数,只更新标志位。 2. **移位指令** - 上述移位指令同样适用于逻辑操作。 #### 串指令 串指令用于处理内存中的连续数据块,如字符串或其他数组。 1. **串操作指令** - **DS:SI**/**ES:DI**/**CX**/**AL/AX**/**DF**/**ZF**:定义串操作的相关寄存器及其功能。 - **DS:SI**:源串段寄存器和源串变址。 - **ES:DI**:目标串段寄存器和目标串变址。 - **CX**:重复次数计数器。 - **AL/AX**:扫描值。 - **DF**:方向标志,决定串操作的方向(增/减)。 - **ZF**:零标志,控制串操作的终止条件。 以上指令覆盖了大部分8088汇编语言的基础指令集,为理解和编写低级代码提供了坚实的基础。
- 粉丝: 55
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助