汇编笔记

 

                          数据类型(大小)原语(Size Directives)

  • BYTE PTR - 1 Byte
  • WORD PTR - 2 Bytes
  • DWORD PTR - 4 Bytes

 

 

 

                                                                         x86通用寄存器

 

 

                  表A-3 常见的x86指令

指令 描述
数据传输
❶ mov dst,src 将src赋给dst
xchg dst1,dst2 互换dst1和dst2
❷ push src 将src压栈,并递减rsp
pop dst 出栈赋给dst,并递增rsp
算术
add dst, src dst +=src
sub dst, src dst –= src
inc dst dst += 1
imul dst dst *= 1
idiv dst dst /= 1
dec dst dst –= 1
neg dst dst = –dst
❸ cmp src1, src2 根据src1−src2设置状态标志位
逻辑/按位
and dst, src dst &= src
or dst, src dst |= src
xor dst, src dst ˆ= src
not dst dst = ~dst
❹ test src1, src2 根据src1 & src2设置状态标志位
无条件分支
jmp addr 跳转到地址
call addr 压入返回地址到栈上,然后调用函数地址
ret 从栈上弹出返回地址,然后跳转到该地址
❺ syscall 进入内核执行系统调用
跳转分支(基于状态标志位)jcc addr仅在条件cc成立时才跳转到该地址,否则进入jncc相反条件,在条件cc不成立时跳转
❻ je addr / jz addr 如果设置ZF零标志位则跳转(如当上一个cmp中的操作数相同时)
ja addr 上一次比较中,如果dst大于src则跳转(无符号)
jb addr 上一次比较中,如果dst小于src则跳转(无符号)
jg addr 上一次比较中,如果dst大于src则跳转(有符号)
jl addr 上一次比较中,如果dst小于src则跳转(有符号)
jge addr 上一次比较中,如果dst大于等于src则跳转(有符号)
jle addr 上一次比较中,如果dst小于等于src则跳转(有符号)
js addr 上一次比较中,如果结果为负则跳转,符号位置1
杂项
❼ lea dst, src 将内存地址加载到dst中,(dst=&src,其中src必须在内存)
nop 空指令,不执行操作(用作代码填充)
posted @ 2023-02-21 13:25  evendemon  阅读(12)  评论(0编辑  收藏  举报