汇编
在计算机程序设计中,汇编语言,是任何一种低级语言语言中的指令和结构中的机器代码指令之间有很强的对应关系。汇编语言通常每个指令有一个语句,但是通常也支持常量、注释、汇编程序指令、象内存位置、寄存器和宏的符号标签。
比如and 运算
Operand1: 0101
Operand2: 0011
----------------------------
After AND -> Operand1: 0001
常用的指令
- SHL shift left (左移)指令对目标操作数执行逻辑左移,将最低位填充为0。SHR (右移)指令对目标操作数执行逻辑右移。最高位的位置填充为零。SAL (左移位算法)与 SHL 相同。
- EAX extended 它代表通用寄存器。16位 AX 寄存器可以寻址为 AH (高字节)和 AL (低字节)。EAX 寄存器是 AX 寄存器的32位版本。代表扩展。
- MOV 数据移动指令 mov 指令将其第二个操作数(即寄存器内容、内存内容或常量值)引用的数据项复制到其第一个操作数引用的位置(即寄存器或内存)。
- ECX count register BX 被称为基寄存器,因为它可以用于索引寻址。CX 称为计数寄存器,因为 ECX、 CX 寄存器在迭代操作中存储循环计数。DX 被称为数据寄存器。它也用于输入/输出操作。
分类
数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
- MOV 传送字或字节.
- PUSH 把字压入堆栈.
- POP 把字弹出堆栈.
- BSWAP 交换32位寄存器里字节的顺序
- XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
- XADD 先交换再累加.( 结果在第一个操作数里 )
2. 输入输出端口传送指令.
- IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
- OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
3. 目的地址传送指令.
-
LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.
- LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
- LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
- LAHF 标志寄存器传送,把标志装入AH.
- POPF 标志出栈.
- PUSHD 32位标志入栈.
- POPD 32位标志出栈.
算术运算指令
ADD 加法.
ADC 带进位加法.
SUB 减法.
SBB 带借位减法.
逻辑运算指令
AND 与运算.
OR 或运算.
XOR 异或运算.
参考
https://www.tutorialspoint.com/assembly_programming/assembly_logical_instructions.htm
https://sites.google.com/site/huibianyuyanzaixianbangzhu/emu8086bang-zhu/hui-bian-zhi-ling