📦 一、数据传送指令(MOV、XCHG 等)

指令 功能说明 示例
mov 数据传送 mov eax, 100
movzx 零扩展传送(无符号) movzx eax, byte ptr [esi]
movsx 符号扩展传送(有符号) movsx eax, byte ptr [esi]
xchg 交换两个操作数的值 xchg eax, ebx
lea 取有效地址(地址计算) lea eax, [ebx+4*esi]
offset 获取变量地址 mov edx, offset msg

➕ 二、算术运算指令

指令 功能说明 示例
add 加法 add eax, 5
sub 减法 sub ebx, 2
inc 加 1 inc ecx
dec 减 1 dec ecx
imul 整数乘法 imul eax, ebx
idiv 有符号除法(注意 edx) idiv ebx
neg 取负数(0 - eax) neg eax
cdq eax 扩展到 edx:eax cdq(除法前)

🧮 三、逻辑与位运算

指令 功能说明 示例
and 按位与 and eax, 0Fh
or 按位或 or eax, 10h
xor 按位异或 xor eax, eax
not 按位取反 not eax
shl 左移(×2) shl eax, 1
shr 右移(÷2) shr eax, 1
sar 算术右移 sar eax, 1

🔁 四、比较与跳转

比较+跳转指令 功能说明 示例
cmp 比较两个数 cmp eax, ebx
je / jz 相等(等于0)跳转 je label
jne / jnz 不等 jne label
jg / jge 大于/大于等于 jg label
jl / jle 小于/小于等于 jl label
ja 无符号大于 ja label
jb 无符号小于 jb label
jmp 无条件跳转 jmp label
loop ecx–,不为 0 跳 loop label

⏬ 五、堆栈操作与子程序

指令 功能说明 示例
push 压栈 push eax
pop 出栈 pop eax
call 调用子程序 call printInt
ret 返回 ret 4
leave 恢复 ebp、esp 栈帧 leave

📚 六、字符串处理指令(高阶用法)

指令 功能 要求设置寄存器
movsb 拷贝字符串(字节) esi, edi
stosd 存字符串到目的地 edi
lodsb 加载字符串到 al esi
scasb 比较字符串字节 edi, al

💻 七、Irvine32 特殊指令(宏/函数)

指令 功能
call writeint 输出整数
call writestring 输出字符串
call readint 读取整数到 eax
call crlf 输出换行符
exit 程序退出(不能用 call)

👀 八、常用伪指令

伪指令 功能
include 包含其他文件(如 Irvine32)
.data 数据段开始
.code 代码段开始
proc 开始一个过程(函数)
endp 结束一个过程
end main 程序入口