【无标题】

汇编基本指令

汇编语言的基本指令围绕数据处理、内存操作、控制流程等核心功能,不同架构(如 x86、ARM)指令略有差异,以下以 x86/x86-64 架构为例,整理最常用的基本指令:

一、数据传输指令(移动数据)

用于在寄存器、内存、立即数之间传递数据,核心是 mov,衍生指令用于特殊场景。

指令功能说明示例
mov将源操作数的值复制到目标操作数mov rax, rbx(寄存器间传值)mov [rbp], 0x123(立即数存内存)
push将数据压入栈(栈顶指针减小,数据入栈)push rax(将 rax 压栈)
pop从栈顶取数据到目标(栈顶指针增大)pop rbx(栈顶数据存入 rbx)
lea计算内存地址并存入寄存器(常用于取地址)lea rax, [rbp+8](计算地址存 rax)

二、算术运算指令(数值计算)

处理加减乘除等运算,结果通常存在第一个操作数中,影响标志位(如进位、零标志)。

指令功能说明示例
add加法:目标 = 目标 + 源add rax, 5(rax += 5)
sub减法:目标 = 目标 - 源sub rbx, rcx(rbx -= rcx)
mul无符号乘法:rax = rax * 源(64 位)mul rbx(rax = rax * rbx)
div无符号除法:rax = 被除数 / 源,余数存 rdxdiv rcx(rax = rax/rcx,rdx = 余数)
inc自增:目标 = 目标 + 1inc rdi(rdi++)
dec自减:目标 = 目标 - 1dec rsi(rsi–)

三、逻辑运算指令(位操作与逻辑判断)

对二进制位进行操作,或执行逻辑判断(与、或、非等)。

指令功能说明示例
and按位与:目标 = 目标 & 源(清零特定位)and rax, 0x0F(保留 rax 低 4 位)
or按位或:目标 = 目标源(置位特定位)
xor按位异或:目标 = 目标 ^ 源(翻转特定位)xor rcx, rcx(rcx 清零,常用技巧)
not按位非:目标 = ~ 目标(每一位取反)not rdx(rdx 所有位取反)
shl逻辑左移:目标 = 目标 << 源(低位补 0)shl rax, 2(rax 左移 2 位,即乘 4)
shr逻辑右移:目标 = 目标 >> 源(高位补 0)shr rbx, 1(rbx 右移 1 位,即除 2)

标题四、控制转移指令(改变执行流程)

用于跳转、循环、函数调用等,改变指令指针(rip/eip)的值。

指令功能说明示例
jmp无条件跳转至目标地址jmp label(跳转到 label 标签处)
je/jz相等 / 零标志位为 1 时跳转(等于则跳)je loop(若相等,跳至 loop)
jne/jnz不相等 / 零标志位为 0 时跳转(不等于则跳)jne exit(若不等,跳至 exit)
jl小于时跳转(有符号比较)jl error(若小于,跳至 error)
jg大于时跳转(有符号比较)jg next(若大于,跳至 next)
call函数调用:压入返回地址,跳至函数入口call func(调用 func 函数)
ret函数返回:从栈弹出返回地址,跳转回去ret(从函数返回调用处)
cmp比较(目标 - 源),仅修改标志位(不存结果)cmp rax, rbx(比较 rax 和 rbx)

五、栈与帧操作指令(函数调用相关)

维护函数调用栈帧,保存 / 恢复程序状态。

指令功能说明示例
push/pop压栈 / 出栈(见上文)push rbp、pop rbp
enter创建栈帧(等价于 push rbp + mov rbp, rsp)enter 0, 0(创建空栈帧)
leave销毁栈帧(等价于 mov rsp, rbp + pop rbp)leave(退出函数前恢复栈帧)

六、特权指令(内核态专用)

指令功能说明
syscallx86-64 系统调用,用户态→内核态切换
sysretx86-64 系统调用,内核态返回用户态
int 0x8032 位系统调用,通过软中断切换态
iret用于 int 0x80 等软中断 / 硬件中断的返回
cli/sti关闭 / 开启中断响应
hlt暂停处理器,等待中断唤醒

sysret和int:两者的核心差异在于:sysret 更高效,因为它直接使用 rcx/r11 寄存器恢复状态,无需像 iret 那样从栈中读取返回信息(栈操作开销更高)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值