标志位寄存器
标志位 | 名称 | 说明 |
---|---|---|
C | 进位标志 | 无符号运算结果超过最大值为1,FFFFFFFF为最大值 |
P | 奇偶标志 | 1的个数为奇数则为0 为偶数为1 |
Z | 零标志 | 结果为0则为1 |
S | 符号标志 | 结果为负数则为1 |
O | 溢出标志位 | 结果溢出为1 |
A | 辅助进位标志 | |
T | 单步标志 | |
I | 中断标志 |
汇编命令
命令 | 说明 |
---|---|
nop | 空指令,无任何操作 |
push-pop | 入栈-出栈 |
pushad-popad | eax、ecx、edx、ebp、esp、ebp、esi、edi 入栈-出栈 |
mov | 赋值,第二操作数赋值给第一个操作数 |
movsx | 赋值,2字节赋值给4字节时,用符号位填充 |
movzx | 赋值,2字节赋值给4字节时,用0填充 |
lea | 赋值,内存地址赋值给寄存器 |
xchg | 交换,第二个操作数必须为寄存器 |
add | 加法,第一操作数加第二操作数赋值给第一操作数 |
sub | 减法,第一操作数减第二操作数赋值给第一操作数 |
adc | 带进位的加法,加完在加C进位标志位 |
sbb | 带进位的减法,减完在减C进位标志位 |
inc | 自增1 |
dec | 自减1 |
mul | 无符号乘法,默认和eax做乘法,结果分别存在eax和edx,前edx后eax |
div | 无符号除法,除cl,商存al,余数存ah。除cx,商存ax,余数存dx |
imul | 有符号乘法,带符号乘,乘积存到第一操作数 |
idiv | 有符号除法,带符号除,商和余数都是带符号的数,余数符号与被除数相同 |
xadd | 交换并相加,第一个操作数的值给第二操作数,第一个操作数和第二操作数相加存在第一操作数 |
neg | 取反,符号位相反 |
and | 与运算,转为二进制运算,1 and 1=1,其他为0,结果存到eax |
or | 或运算,转为二进制运算,有1为1, 0 or 0=0,结果存到eax |
xor | 异或运算,转为二进制运算,1 xor 1=0,0 xor 0=0,相同为0,不同为1,结果存到eax |
not | 取反运算,转为二进制运算,32位补齐,not 1=0,not 0=1,结果存到eax |
cmp | 比较,减法,结果不储存,影响标志位 |
test | 测试操作数是否为0,与运算 |
JMP | 无条件跳转,不受标志位影响 根据标志位来判断是否跳转 |
je/jz | 受Z标志位跳转,0跳转,Z为1跳转 |
jne/jnz | 受Z标志位跳转,非0跳转,Z为0跳转 |
js | 受S标志位跳转,负数跳转,S为1跳转 |
jns | 受S标志位跳转,非负数跳转,S为0跳转 |
jp/jpe | 受P标志位跳转,偶数跳转,P为1跳转 |
jnp/jpo | 受P标志位跳转,奇数跳转,P为0跳转 |
jo | 受O标志位跳转,溢出跳转,O为1跳转 |
jno | 受O标志位跳转,非溢出跳转,O为0跳转 |
jb | 受C标志位跳转,无符号数,进位跳转,C为1跳转 |
jnb | 受C标志位跳转,无符号数,非进位跳转,C为0跳转 |
jbe | 受C标志位和Z标志位跳转,小于或等于,C或Z为1跳转 |
jnbe/ja | 受C标志位和Z标志位跳转,大于,C和Z为1跳转 |
jl | 受S标志位跳转,有符号数,小于跳转 |
call | 带参数去执行函数,后跟指定位置,然后带结果返回回来 |
retn | 返回结果到call的下一行 |
loop | 循环指令,执行dec ecx test ecx,ecx jnz |