1. MOV指令(赋值)
含义:前者被后者赋值
exp:
MOV EAX,0xFFFFFFFF
此时 EAX = 0xFFFFFFFF
指令格式:
- MOV r/m8,r8
- MOV r/m16,r16
- MOV r/m32,r32
- MOV r8,r/m8
- MOV r16,r/m16
- MOV r32,r/m/32
- MOV r8,imm8
- MOV r16,imm16
- MOV r32,imm32
r – 通用寄存器
m – 内存
imm – 立即数
r8 – 8位通用寄存器
m8 – 8位内存
imm8 – 8位立即数
2. ADD指令(加法)
含义:前者与后者相加,结果赋值给前者
MOV AL,00000000
ADD AL,00000001
此时 AL=00000001=0x01
指令格式:
- ADD r/m8,imm8
- ADD r/m16,imm16
- ADD r/m32,imm32
- ADD r/m16,imm8
- ADD r/m32,imm8
- ADD r/m8,r8
- ADD r/m16,r16
- ADD r/m32,r32
- ADD r8,r/m8
- ADD r16,r/m16
- ADD r32,r/m32
3.SUB指令(减法)
含义:前者减去后者,结果赋值给前者
MOV AL,00000002
SUB AL,00000001
此时 AL=00000001=0x01
指令格式:
- SUB r/m8 ,imm8
- SUB r/m16,imm16
- SUB r/m32,imm32
- SUB r/m16,imm8
- SUB r/m32,imm8
- SUB r/m8,r8
- SUB r/m16,r16
- SUB r/m32,r32
- SUB r8,r/m8
- SUB r16,r/m16
- SUB r32,r/m32
4.AND指令(与运算,两个都为1 结果为1,否则为0)
含义:前者与后者与运算,结果赋值给前者
MOV AL,00000000
AND AL,00000001
此时 AL=00000000=0x00
指令格式:
- AND r/m8 ,imm8
- AND r/m16,imm16
- AND r/m32,imm32
- AND r/m16,imm8
- AND r/m32,imm8
- AND r/m8,r8
- AND r/m16,r16
- AND r/m32,r32
- AND r8,r/m8
- AND r16,r/m16
- AND r32,r/m32
5.OR指令(或运算,两个都为0时结果为0 否则为1)
含义:前者与后者或运算,结果赋值给前者
MOV AL,00000000
OR AL,00000001
此时 AL=00000001=0x01
指令格式:
- OR r/m8 ,imm8
- OR r/m16,imm16
- OR r/m32,imm32
- OR r/m16,imm8
- OR r/m32,imm8
- OR r/m8,r8
- OR r/m16,r16
- OR r/m32,r32
- OR r8,r/m8
- OR r16,r/m16
- OR r32,r/m32
6.XOR指令(异或运算,两个相同时为0 否则为1)
含义:前者与后者进行异或运算,结果赋值给前者
MOV AL,00000000
XOR AL,00000001
此时 AL=00000001=0x01
指令格式:
- XOR r/m8 ,imm8
- XOR r/m16,imm16
- XOR r/m32,imm32
- XOR r/m16,imm8
- XOR r/m32,imm8
- XOR r/m8,r8
- XOR r/m16,r16
- XOR r/m32,r32
- XOR r8,r/m8
- XOR r16,r/m16
- XOR r32,r/m32
7.NOT指令(取反)
含义:
MOV AL,00000000
NOT AL
此时 AL=11111111=0xff
指令格式
- NOT r/m8
- NOT r/m16
- NOT r/m32