功能 | 对应指令 |
---|---|
段超越前缀指令 | CS、DS、SS、ES、FS、GS |
数据传送指令 | mov |
区分标识符大小写 | OPTION CASEMAP:NONE |
显示字符串(入口参数eax=字符串地址) | dispmsg |
显示一个字符(入口参数al=字符的ascii码) | dispc |
换行 | dispcrlf |
显示8个32位通用寄存器的内容 | disprd |
显示6个状态标志位的标志 | disprf |
– | – |
进栈指令 | push |
出栈指令 | pop |
将32位通用寄存器全部进栈 | pushad |
将32位通用寄存器全部出栈 | popad |
换码指令 | xlat |
复位进位标志:CF=0 | CLC |
置位进位标志:CF=1 | STC |
求反进位标志:0->1 1->0 | CMC |
复位方向标志:DF=0 | CLD |
置位方向标志:DF=1 | STD |
复位中断标志:IF=0 | CLI |
置位中断标志:IF=1 | STI |
地址传送指令 | lea |
– | – |
加法指令 | add |
带进位加法指令 | adc |
增量指令 | inc |
减法指令 | sub |
带借位减法指令 | sbb |
减量指令 | dec |
求补指令 | neg |
比较指令 | cmp |
– | – |
无符号乘法 | mul src |
有符号乘法 | imul src |
双操作数乘法 | imul dest,src |
三操作数乘法 | imul dest,src,imm |
无符号数除法 | div src |
有符号数除法 | idiv src |
零位扩展和符号扩展指令 | movzx/movsx |
– | – |
逻辑与 | and |
逻辑或 | or |
逻辑非 | not |
逻辑异或 | xor |
测试指令 | test |
– | – |
逻辑左移 | shl |
逻辑右移 | shr |
算术左移 | sal |
算术右移 | sar |
不带进位循环左移 | rol |
不带进位循环右移 | ror |
带进位循环左移 | rcl |
带进位循环右移 | rcr |
– | – |
串传送指令 | movs |
串存储指令 | stos |
串读取指令 | lods |
重复前缀指令 | rep |
– | – |
无条件转移指令 | jmp |
jz/je | 等于0/相等 |
jnz/jne | 不等于0/不相等 |
js | 符号为负 |
jns | 符号为正 |
jp/jpe | 1的个数为偶 |
jnp/jpo | 1的个数为奇 |
jo | 溢出 |
jno | 无溢出 |
jc | 进位 |
jnc | 无进位 |
jb/jnb | 低于/不低于 |
jbe/jnbe | 低于等于/不低于等于 |
ja/jna | 高于/不高于 |
jae/jnae | 高于等于/不高于等于 |
jl/jnl | 小于/不小于 |
jle/jnle | 小于等于/不小于等于 |
jg/jng | 大于/不大于 |
jge/jnge | 大于等于/不大于等于 |
– | – |
循环指令 | loop |
子程序调用指令 | call |
子程序返回指令 | ret |
二、指令说明
1.mov eax,es:[ebx] 用es:表达数据在es段
mov eax,[ebx+esi*4+80h] 偏移地址:esi内容乘以四加上eax再加偏移量80h
2.主存寻址方式:32位斜体样式有效地址=基址寄存器+(变址寄存器x比例)+位移量
- 基址寄存器:8个32位通用寄存器之一
- 变址寄存器:除ESP之外的32位通用寄存器之一
- 比例:1、2、4、8
- 位移量:8或32位有符号值
3.进栈指令push eax 等同于:
①sub esp,4
②mov [esp],eax
4出栈指令pop eax 等同于:
①mov eax,[esp]
②add esp,4
5.加法指令
6.减法指令
7.乘法指令
8.
8.除法指令