常用汇编指令
2020-03-29 本文已影响0人
欧皇ff
指令 | 注释 |
---|---|
r | 通用寄存器 |
m | 内存 |
imm | 立即数 |
r8 | 8位通用寄存器 |
m8 | 8位内存 |
imm8 | 8位立即数 |
MOV 指令格式: 赋值指令
// 寄存器赋值到 寄存器或内存
// 举例:
// mov al,cl
// mov byte ptr ds:[12fff0],al
MOV r/m8,r8
// mov ax,cx
// mov word ptr ds:[12ffcc],ax
MOV r/m16,r16
//mov eax,ecx
//mov dword ptr ds:[12ffcc],eax
MOV r/m32,r32
//寄存器或内存 赋值到 寄存器
//mov al,byte ptr ds:[12ffe0]
MOV r8,r/m8
//mov ax,word ptr ds:[12ffe0]
MOV r16,r/m16
MOV r32,r.m32
//寄存器 赋值 立即数
MOV r8,imm8
MOV r16,imm16
MOV r32,imm32
ADD 指令格式:加指令
//寄存器或内存 加 立即数 结果保存到 寄存器或内存
//例子:
//add al, cl
//add ax, word ptr ds:[12fff0]
add r/m8,imm8
add r/m16,imm16
add r/m32,imm32
//寄存器或内存 加 寄存器 结果保存到 寄存器或内存
add r/m8,r8
add r/m16,r16
add r/m32,r32
//寄存器 加 寄存器或内存 结果保存到 寄存器
add r8,r/m8
add r16,r/m16
add r32,r/m32
SUB指令格式:减 指令
//寄存器或内存 减 立即数
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
AND指令格式: 与 指令
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
思考:0x0000 0001 AND 0x0000 0002 = ?
1 = 0001
2 = 0010
AND
0 = 0000
故输出 0x0000 0000
OR指令格式: 或 指令
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
思考:0x0000 0001 OR 0x0000 0002 = ?
1 = 0001
2 = 0010
OR
3 = 0011
故输出 0x0000 0003
XOR指令格式:异或 指令
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
1.思考:0x0000 0003 XOR 0x0000 0002 = ?
3 = 0011
2 = 0010
XOR
1 = 0001
故输出 0x0000 0001
2.思考: 0x0000 0001 XOR 0x0000 0002 = ?
试写出结果。
答案:0x0000 0003
NOT指令格式: 非 指令
NOT r/m8
NOT r/m16
NOT r/m32
思考:NOT 0x0000 0000 = ?
答案:0xFFFFFFFF