请选择 进入手机版 | 继续访问电脑版

[汇编语言] 汇编语言:x86汇编指令大全及其注意 事项

[复制链接]
查看130 | 回复23 | 2021-10-14 13:46:23 | 显示全部楼层 |阅读模式
目次

Part 1:instruction

积少成多,持续更新。(这将会是一个极其漫长的过程)
表格中各条指令的次序 根据笔者所以为 的紧张 或常用程度举行 排序,仅供参考。

Part 2

本表格中所涉及的F是指状态寄存器,CF指进位标志位,别的 以此类推。

2.1 (逻辑)运算、移位等常用指令

这一部分记录汇编语言程序计划 当中使用 频率最高的一部分指令。

2.1 (逻辑)运算、移位等常用指令

这一部分记录汇编语言程序计划 当中使用 频率最高的一部分指令。

指令 作用 注意 事项 示例
mov dest, src 传送指令 1.dest和src不能同时为存储器操作数
2.CS不能作为dest
3.段寄存器之间不能互相传送
4.立即 数不能送入段寄存器
mov ax,word ptr[bx+si+2]
add dest,src 加法指令 dest,src不能同时为存储器操作数或段寄存器
add ax,cx
adc dest,src 带进位加法指令 dest=dest+src+CF,常用于多字节加法
inc dest 加一指令 1.此操作不影响CF的状态 inc byte ptr[si]
sub dest,src 减法指令 1.dest,src的要求与add类似
2.触发OF:异号相减且结果 的符号为与被减数不同
sub ax,cx
sbb dest,src 带进位减法 常用于多字节省 法
dec dest 减一指令 不影响CF的状态,但其他几个标志位都会受到影响 dec ax
mul dest 无符号乘法指 1.dest为字节数据,则与AL相乘,结果 放入AX
2.dest为字数据,与AX相乘结果 低16位放入AX,高16位放入DX
3.dest不能是立即 数
mul ax
imul dest 有符号乘法 细节与mul完全类似 ,对最高位的表明 不同 imul ax
div dest 无符号除法 1.dest为字节数据,用AX除以dest,商放在AL,余数放在AH
2.dest为字数据,用低16位为AX,高16位为DX的双字数据除以dest,商放在AX,余数放在DX
idiv dest 带符号除法 与无符号完全类似 。除法溢出时结果 无效 idiv ax
cbw 扩展AL为AX字数据 1.仅用于扩展带符号数,无符号直接清零即可
2.不带操作数
cbw
cwd 扩展AX字为DX,AX双字数据 要求与cbw类似 cwd
seg 取标号或变量的段地址 mov di,seg label
lea 取偏移地址 1.与offset作用类似
2.load efficient address的简写
lea ax,label
offset 取偏移地址 1.作用与lea类似
2.速率 比lea快
mov ax,offset label
org 设定程序段起始地址(偏移) 1.是origin的缩写
2.若无org默认程序从cs:0开始存放指令代码
3.两个org指令之间空余的空间用0添补
org offsetVal
xlat 转换表指令 1.BX存放表的首地址,AL存放当前表中元素的偏移量
2.不影响F的状态
xlat ;无需操作数

2.2 循环移位指令

循环移位指令非常轻易 混淆,但是却非常 紧张 ,因此必要 牢牢记住并时常查阅此表。

指令 作用 注意 事项 示例
SHL 逻辑左移指令 1.最高位进入CF中
2.最低位直接用0添补
SHL AH,1
SHR 逻辑右移指令 1.最低位进入CF中
2.最高位直接用0添补
SHR BX,1
SAL 算术左移指令 举动 与SHL没有差别 SAL BL,CL
SAR 算术右移指令 1.最低位进入到CF中
2.最高位右移后添补 最高位(即用最高位添补 最高位)
SAR CL,BX
ROL 循环左移指令 最高位进入到CF中并添补 最低位 同上
ROR 循环右移指令 最低位进入到CF中并添补 最高位 同上
RCL 带进位循环左移指令 1.最低位由CF添补
2.最高位进入CF
同上
RCR 带进位循环右移指令 1.最高位由CF添补
2.最低位进入CF
同上

2.3 数据串操作指令

重复前缀指令与数据串操作指令连用常常能起到事半功倍的结果 ,注意 使用 了大大提拔 汇编程序的简洁性。

指令 作用 注意 事项 示例
lods/lodsw/lodsb 载入数据串指令 1.详细 操作:从ds:si读取一个字节/字/双字到AL,AX,EAX中,SI根据DF的值举行 增减对应的数值 lodsw ;无需操作数
stos/stosw/stosb 存数据串指令 1.AX/AL的内容存放到ES:DI中
2.指针修改是自动 且隐式的
stos/stosw/stosb ;无需操作数
cmps/cmpsb/cmpsw 数据串比较指令 cmps必要 两个操作数(数据串首地址),后两个无需操作数,字符串的比较由DI和SI完成 ;NULL
movs/movsb/movsw 数据串传送指令 注意 事项参照上方的cmps等的用法 ;NULL
rep/repz/repnz 重复前缀指令 1.当cx的内容不为0时实行 操作(先判断 )
2.用CLD,STD控制增、减量修改
3.与数据串操作指令联合 使用 ,实现内存拷贝、比较等功能
不必要 操作数

2.4 逻辑运算指令

这一部分指令是以我的明白 举行 划分,以是 大概 不太精准,故意 见欢迎在品评 区提出。

指令 作用 注意 事项 示例
cmp dest,src 1.比较指令 1.用dest减去src,但不保存结果
2.相减的结果 影响F
cmp ax,cx
test dest,src 1.将dest与src相与 可用来测试是否为零等,结果 不保存
2.影响F
test ax,ax
neg dest 取补指令,得到相反数 影响F neg ax
not dest 取反指令 1.将操作数每一位按位取反
2.不影响F
not AX

2.5 基于大小关系的跳转指令

在使用 了cmp,sub,subb等指令后通常使用 如下这些指令衔接以便举行 下一步的操作,令程序非常 简洁。必要 注意 的是,根据有符号和无符号数必要 选择不同的指令举行 基于大小关系的跳转。

无符号数
指令 作用
JA label 大于时跳转
JAE label 大于等于时跳转
JB label 小于时跳转
JBE label 小于等于时跳转
带符号数
指令 作用
JG label 大于时跳转
JGE label 大于等于时跳转
JL label 小于时跳转
JEL label 小于等于时跳转
无符号、带符号通用
JE label 等于时跳转
JNE label 不等于时跳转

2.6 基于单标志位的转移指令

根据标志寄存器F中标志位的状态决定是否举行 跳转,通常在举行 运算后联合 这些指令举行 跳转。

指令 作用
JC label CF=1时跳转
JNC label CF=0时跳转
JZ label ZF=1时跳转
JNZ label ZF=0时跳转
JO label OF=1时跳转
JNO label OF=0时跳转
JS label SF=1时跳转
JNS label SF=0时跳转
JP label SF=1时跳转
JNP label PF=0时跳转

Part 3:Loading… …

第一次更新:2020-05-15 15:29
第二次更新:2020-05-22 00:14
第三次更新:2020-05-24 00:24
第四次更新:2020-05-24 21:10

持续更新中… …

到此这篇关于汇编语言:x86汇编指令大全及其注意 事项的文章就先容 到这了,更多相干 x86汇编指令大全内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 东边是黄海 | 2021-10-15 03:07:55 | 显示全部楼层
好多兽医在广场上义诊,admin楼主去看看吧!
回复

使用道具 举报

avatar yeungg2017 | 2021-10-15 03:17:22 | 显示全部楼层
哥回复的不是帖子,是寂寞!
回复

使用道具 举报

avatar 娣玲 | 2021-10-15 07:03:55 | 显示全部楼层
admin楼主,你妈妈喊你回家吃药!
回复

使用道具 举报

avatar Mirandawsj | 2021-10-16 18:47:37 | 显示全部楼层
每天顶顶贴,一身轻松啊!
回复

使用道具 举报

avatar 心随674 | 2021-10-16 20:22:18 | 显示全部楼层
admin楼主是在找骂么?
回复

使用道具 举报

avatar 珍爱1103 | 2021-10-16 20:47:25 | 显示全部楼层
楼上的心情不错啊!
回复

使用道具 举报

avatar 寒郁轩良 | 2021-10-16 21:07:25 | 显示全部楼层
看了这么多帖子,第一次看到这么有深度了!
回复

使用道具 举报

avatar 姜小黑61 | 2021-10-16 22:10:21 | 显示全部楼层
楼上的这是啥态度呢?
回复

使用道具 举报

我回帖admin楼主给加积分吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则