吾爱汇编论坛

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2951|回复: 115

[经验资料] 《汇编》常用指令详解

  [复制链接]

  离线 

Momo-小莫 发表于 2021-11-25 14:25 | 显示全部楼层 |阅读模式

GAS中每个操作都是有一个字符的后缀,表明操作数的大小。
C声明
GAS后缀
大小(字节)
char
b
1
short
w
2
(unsigned) int / long / char*
l
4
float
s
4
double
l
8
long double
t
10/12

注意:GAL使用后缀“l”同时表示4字节整数和8字节双精度浮点数,这不会产生歧义因为浮点数使用的是完全不同的指令和寄存器。


操作数格式:
格式
操作数值
名称
样例(GAS = C语言)
$Imm
Imm
立即数寻址
$1 = 1
Ea
R[Ea]
寄存器寻址
%eax = eax
Imm
M[Imm]
绝对寻址
0x104 = *0x104
(Ea)
M[R[Ea]]
间接寻址
(%eax)= *eax
Imm(Ea)
M[Imm+R[Ea]]
(基址+偏移量)寻址
4(%eax) = *(4+eax)
(Ea,Eb)
M[R[Ea]+R[Eb]]
变址
(%eax,%ebx) = *(eax+ebx)
Imm(Ea,Eb)
M[Imm+R[Ea]+R[Eb]]
寻址
9(%eax,%ebx)= *(9+eax+ebx)
(,Ea,s)
M[R[Ea]*s]
伸缩化变址寻址
(,%eax,4)= *(eax*4)
Imm(,Ea,s)
M[Imm+R[Ea]*s]
伸缩化变址寻址
0xfc(,%eax,4)= *(0xfc+eax*4)
(Ea,Eb,s)
M(R[Ea]+R[Eb]*s)
伸缩化变址寻址
(%eax,%ebx,4) = *(eax+ebx*4)
Imm(Ea,Eb,s)
M(Imm+R[Ea]+R[Eb]*s)
伸缩化变址寻址
8(%eax,%ebx,4) = *(8+eax+ebx*4)

注:M[xx]表示在存储器中xx地址的值,R[xx]表示寄存器xx的值,这种表示方法将寄存器、内存都看出一个大数组的形式。


数据传送指令:
指令
效果
描述
movl S,D
D <-- S
传双字
movw S,D
D <-- S
传字
movb S,D
D <-- S
传字节
movsbl S,D
D <-- 符号扩展S
符号位填充(字节->双字)
movzbl S,D
D <-- 零扩展S
零填充(字节->双字)
pushl S
R[%esp] <-- R[%esp] – 4;
M[R[%esp]] <-- S
压栈
popl D
D <-- M[R[%esp]];
R[%esp] <-- R[%esp] + 4;
出栈

注:均假设栈往低地址扩展。


算数和逻辑操作地址:
指令
效果
描述
leal S,D
D = &S
movl地版,S地址入D,D仅能是寄存器
incl D
D++
加1
decl D
D--
减1
negl D
D = -D
取负
notl D
D = ~D
取反
addl S,D
D = D + S
subl S,D
D = D – S
imull S,D
D = D*S
xorl S,D
D = D ^ S
异或
orl S,D
D = D | S
andl S,D
D = D & S
sall k,D
D = D << k
左移
shll k,D
D = D << k
左移(同sall)
sarl k,D
D = D >> k
算数右移
shrl k,D
D = D >> k
逻辑右移



特殊算术操作:
指令
效果
描述
imull S
R[%edx]:R[%eax] = S * R[%eax]
无符号64位乘
mull S
R[%edx]:R[%eax] = S * R[%eax]
有符号64位乘
cltd S
R[%edx]:R[%eax] = 符号位扩展R[%eax]
转换为4字节
idivl S
R[%edx] = R[%edx]:R[%eax] % S;
R[%eax] = R[%edx]:R[%eax] / S;
有符号除法,保存余数和商
divl S
R[%edx] = R[%edx]:R[%eax] % S;
R[%eax] = R[%edx]:R[%eax] / S;
无符号除法,保存余数和商

注:64位数通常存储为,高32位放在edx,低32位放在eax。


条件码:
条件码寄存器描述了最近的算数或逻辑操作的属性。
CF:进位标志,最高位产生了进位,可用于检查无符号数溢出。
OF:溢出标志,二进制补码溢出——正溢出或负溢出。
ZF:零标志,结果为0。
SF:符号标志,操作结果为负。


比较指令:
指令
基于
描述
cmpb S2,S1
S1 – S2
比较字节,差关系
testb S2,S1
S1 & S2
测试字节,与关系
cmpw S2,S1
S1 – S2
比较字,差关系
testw S2,S1
S1 & S2
测试字,与关系
cmpl S2,S1
S1 – S2
比较双字,差关系
testl S2,S1
S1 & S2
测试双字,与关系



访问条件码指令:
指令
同义名
效果
设置条件
sete D
setz
D = ZF
相等/零
setne D
setnz
D = ~ZF
不等/非零
sets D

D = SF
负数
setns D

D = ~SF
非负数
setg D
setnle
D = ~(SF ^OF) & ZF
大于(有符号>)
setge D
setnl
D = ~(SF ^OF)
小于等于(有符号>=)
setl D
setnge
D = SF ^ OF
小于(有符号<)
setle D
setng
D = (SF ^ OF) | ZF
小于等于(有符号<=)
seta D
setnbe
D = ~CF & ~ZF
超过(无符号>)
setae D
setnb
D = ~CF
超过或等于(无符号>=)
setb D
setnae
D = CF
低于(无符号<)
setbe D
setna
D = CF | ZF
低于或等于(无符号<=)



跳转指令:
指令
同义名
跳转条件
描述
jmp   Label

1
直接跳转
jmp   *Operand

1
间接跳转
je     Label
jz
ZF
等于/零
jne    Label
jnz
~ZF
不等/非零
js     Label

SF
负数
jnz    Label

~SF
非负数
jg     Label
jnle
~(SF^OF) & ~ZF
大于(有符号>)
jge    Label
jnl
~(SF ^ OF)
大于等于(有符号>=)
jl     Label
jnge
SF ^ OF
小于(有符号<)
jle     Label
jng
(SF ^ OF) | ZF
小于等于(有符号<=)
ja     Label
jnbe
~CF & ~ZF
超过(无符号>)
jae    Label
jnb
~CF
超过或等于(无符号>=)
jb     Label
jnae
CF
低于(无符号<)
jbe    Label
jna
CF | ZF
低于或等于(无符号<=)



转移控制指令:(函数调用):
指令
描述
call    Label
过程调用,返回地址入栈,跳转到调用过程起始处,返回地址是call后面那条指令的地址
call    *Operand
leave
为返回准备好栈,为ret准备好栈,主要是弹出函数内的栈使用及%ebp


评分

参与人数 52HB +51 THX +18 收起 理由
decajoins + 2 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
一路走来不容易 + 1
459121520 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 1
WolfKing + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
冷亦飞 + 1
美好映像 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
车太震 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
别来无恙 + 1
侠客行 + 1
zyyujq + 1 + 1
fengyuan0128 + 1
ghostxu + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
XiaoWeiSec + 1
河图 + 1 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zxjzzh + 2
temp + 1 + 1
不苦小和尚 + 1 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zwc123xyz + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
xrzr + 1
l7518597 + 2 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
EMT + 1 + 1
ldzsl + 1
趴趴熊 + 1
eurchin + 1
小声点我布隆 + 1
hetao8003200 + 2
裤裆有把机枪 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
pygicx + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
LJX1314 + 1
zwj00544 + 1 + 1
2323816 + 1
ding520 + 1 [快捷评语]--你将受到所有人的崇拜!
brswbx201610 + 1
beamstyle + 1
kevinjian + 1
gwgirl + 1 [快捷评语]--2021年,我们爱0爱1
xk1007325 + 1 [快捷评语]--2021年,我们爱0爱1
cunzhang2016 + 1 [通知]学破解论坛即将在近期更名为吾爱汇编论坛WWW.52HB.COM
hnymsh + 1 + 1
firstcmm + 1 [快捷评语]--2021年,我们爱0爱1
蓝色青菜 + 1
lies + 1 [快捷评语]--评分=感恩!简单却充满爱!感谢您的作品!
Mo. + 1
king51999 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
xx001 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
jzat + 1 + 1
janford + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
mengzhisuoliu + 1 + 1
保安 + 1 [快捷评语]--2021年,我们爱0爱1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

253795676 发表于 2021-11-25 15:31 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

开心果lu 发表于 2021-11-25 17:55 | 显示全部楼层

满满的感谢。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

bbip 发表于 2021-11-26 10:51 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

yhfyhf 发表于 2021-11-26 15:11 | 显示全部楼层

我也收藏了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

逆光尘埃 发表于 2021-11-29 10:29 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

保安 发表于 2021-11-30 21:10 | 显示全部楼层

收藏了 感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

1097507759 发表于 2021-12-1 00:53 | 显示全部楼层

我是来学习的
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

1097507759 发表于 2021-12-1 00:55 | 显示全部楼层

我是来学习的
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

府街黄角树 发表于 2021-12-1 20:37 | 显示全部楼层

新手学习中,谢谢分享了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编论坛(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编论坛不承担任何因为技术滥用所产生的连带责任。吾爱汇编论坛内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长微信:SharkHeng


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编论坛 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

0.092182 , 61

Powered by Discuz!

吾爱汇编论坛 www.52hb.com

快速回复 返回顶部 返回列表