汇编基础-EFLAGS,ADC/SBB/XCHG/MOVS/STOS/REP

本文深入解析了EFLAGS寄存器在汇编语言中的作用,包括进位标志CF、奇偶标志PF、辅助进位标志AF、零标志ZF、符号标志SF和溢出标志OF。这些标志用于判断运算结果的各种属性,如是否溢出、是否为零等。同时,文章还提及了方向标志DF在串操作中的应用,以及相关指令如XOR、ADD、MOVS等如何影响这些标志的状态。
摘要由CSDN通过智能技术生成

汇编基础-EFLAGS

EFLAGS

在这里插入图片描述
查看DTDEBUG中的EFLAGS的值,然后转换成二进制的形式,并取出CF/PF/AF/ZF/SF/OF的值

需要记的几个标志寄存器的位置和名称

CF

进位标志CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

PF

奇偶标志PF用于反映运算结果中1最低有效字1节中“1”的个数的奇偶性
如果“1”的个数为偶数,则PF的值为1,否则其值为0。

AF

辅助进位标志AF(Auxiliary Carry Flag):
在这里插入图片描述

ZF

零标志ZF(Zero Flag):零标志ZF用来反映运算结果是否为0。
如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
例子:

XOR EAX,EAX
通过xor将eax清零,会改变zf标志位为1

MOV EAX,0
通过MOV将EAX赋值为0,非运算,不改变zf标志位

SF

符号标志SF(Sign Flag)用来反映运算结果的符号位,它与运算结果的最高位相同

例子:

MOV AL,7F
ADD AL,2

OF

溢出标志OF(Overflow Flag)
溢出标志OF用于反映有符号数加减运算所得结果是否溢出
如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

注意与CF区分!!!

最高位进位与溢出的区别:

进位标志(CF)表示无符号数运算结果是否超出范围.

溢出标志(OF)表示有符号数运算结果是否超出范围.

溢出主要是给有符号运算使用的,在有符号的运算中,有如下的规律:

正 + 正 = 正 如果结果是负数,则说明有溢出
负 + 负 = 负 如果结果是正数,则说明有溢出
正 + 负 永远都不会有溢出

在这里插入图片描述

  • 无符号溢出、有符号不溢出例
    MOV AL,0FF
    ADD AL,2
    无符号数时
    FF+2=255+2=257 在0~255外,溢出
    有符号数时
    FF+2=-1+2=1
    正 + 负 永远都不会有溢出

  • 无符号不溢出、有符号溢出例
    MOV AL,7F
    ADD AL,2
    无符号数时
    7F+2=127+2=129 在0~255内 不溢出
    有符号数时
    7F+2=0x81在80~FF (负数范围)内,两正数相加结果为负数,溢出

  • 无符号、有符号都溢出
    MOV AL,0FE
    ADD AL,80
    无符号数时
    FE+2=254+2=256=0x100 在0~255外 溢出
    有符号数时
    FE+2=0x100在0~FF外,溢出

DF

方向标志DF(Direction Flag)
DF:方向标志位

DF=1时串操作为减地址方式 DF=0为增地址方式

下面的MOVS指令有说明DF的具体应用

ADC/SBB/XCHG

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MOVS指令

MOVZX:不看符号,直接高位补0,低位赋值
MOVSX:先看符号,高位正号全补0、负号全补1,然后低位赋值
在这里插入图片描述

STOS指令

在这里插入图片描述

REP指令

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值