文章标题

来源:互联网 发布:哈佛大学学术地位知乎 编辑:程序博客网 时间:2024/06/05 19:54

EFLAGS寄存器
标志寄存器

  必记  : CF  PF  AF  ZF  SF   OF    1.进位标志寄存器 CF    运算结果的最高位产生了  个进位 或借位,那么,其值位1,否则其值为0     mov  al,0xef   mov al,0xfe     mov  al,0xff      add al,2  2.奇偶标志寄存器PF      奇偶标志PF用于反应运算结果中“1”的个数的奇偶性。    如果 1  的个数为偶数,则PF的值为1 ;否则为0  3.辅助进位标志AF    a.在字操作时,发生低字节向高字节进位或错位时,    b.在字节操作时,发生低字节向高字节进位或错位时      mov eax,0x5555ffff              mov ax,0x5eff      add eax,0x1                     add ax,1  4.零标志位ZF    零标志ZF反应计算结果是否为零    运算结果最低字节为0,其值为1;否则为0.判断运算结果是否为0时,可用此标志位。     xor eax,eax       mov eax,2      sub eax,2   5.符号标志位SF      符号标志位SF用来反应运算结果的符号位,它与最高位相同。      mov al,7f      add al,2   6.溢出标志OF     溢出主要是给有符号运算使用的,在有符号的运算中,有如下规律:     正 +  正 = 负  结果是负数,则说明有溢出;     负 +  负 = 正  结果是正数,则说明有溢出。     正 +  负  永远都不会有溢出     1.无符号、有符号都不溢出       mov al,8       add al,8      2.无符号溢出、有符号不溢出       mov al,0ff       add al,2     3.无符号不溢出,有符号溢出       mov al,7f       add al,2      4.无符号,有符号都溢出       mov al,0fe       add al,80       ![这里写图片描述](http://img.blog.csdn.net/20170119211913469?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRHJlYW1SRQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)     无符号数只关注CF位     无符号加起来是否超FF,有符号 正+正=负  负+负=正

0x02 指令
1.ADC指令:带进位加法
格式:ADC R/M , R/M /IMM
adc al,cl
adc byte ptr ds:[12ffc4],2
2.SBB指令:带借位减法
格式:SBB R/M , R/M /IMM
3.XCHG指令:交换数据
格式:XCHG R/M,R/M 两边宽度相同
xchg al,cl
xchg dword ptr ds:[0x12345663],eax
xchg word ptr ds:[0x12345663],ax
4.MOVS指令:移动数据 内存-内存
byte word dword
movs byte ptr es:[edi],byte ptr ds:[esi] 简写为 :MOVSB
movs word ptr es:[edi],word ptr ds:[esi] 简写为 :MOVSW
movs dword ptr es:[edi],dword ptr ds:[esi] 简写为 :MOVSD
DF 为1 则 -
5.STOS指令:将AL/AX/EAX中的值存储到[EDI]指定的内存单元
stos byte ptr es:[edi] 简写为stosb
stos word ptr es:[edi] 简写为stosw
stos dword ptr es:[esi] 简写为stosd
DF 位 为1,edi加4
DF 位 为0,edi减4

  6.rep指令:按计数寄存器(ECX)中指定的次数重复执行字符串指令    mov ecx,10    rep stosd
0 0
原创粉丝点击