汇编达人视频学习8(EFL标志寄存器、JCC指令)


title: 汇编达人视频学习8(EFL标志寄存器、JCC指令)
date: 2021年8月5日 09点40分
tags: 汇编达人
categories: 汇编达人

27、标志寄存器(EFLAGS)

在这里插入图片描述

1、CF(bit 0)【Carry flag】

若算术操作产生的结果在最高有效位发生进位或借位则将其置为1,反之清零。

这个标志通常用来指示无符号整型运算的溢出状态。

例:

进位:mov al,0xfe

​ add al,2

借位:mov al,0x7f

​ sub al,0xff

2、PF(bit 2)【parity flag】奇偶检验位

如果结果的最低有效字节(就是最后一个字节)包含偶数个1位,则置1,反之清零。

利用PF可进行奇偶检验检查

例子:

需要传输"11001110",数据中含5个"1",同时最低有效位包含3个1所以其奇偶验位为"0",同时把"11001110"传输给接收方,接收方收到数据后再一次计算奇偶性,“11001110"中仍然含有5个"1”,且最低有效位还是3个1,所以接收方计算出的奇偶验位还是"0",与发送方一致,表示在此次传输过程中未发生错误

3、AF(bit 4)【Auxiliary Carry flag】

如果算术操作在结果的第3位发生进位或借位则将该标志置为1,否则清零

这个标志在BCD算术运算中被使用。

4、ZF(bit 6)【Zero flag】

若运算(加减乘除左移右移)的结果为0,则将它置为1,反之清零。

经常与CMP(相当于SUB)或者TEST(相当于AND)等指令一起使用

例1:判断2个值是否相等

mov eax ,100

mov ecx,100

sub eax,ecx // 这里sub相减之后,会改变eax的值,所以用cmp指令

(CMP指令相当于SUB指令,但是相减的结果并不保存到第一个操作数中)

例2:判断某个值与运算之后是否为0

AND eax,eax

TEST eax,eax

(TEST指令相当于AND指令,但是与的结果并不保存到第一个操作数中)

5、SF(bit 7)【Sign flag】

该标志被设为有符号整型的最高有效位

(0指示结果为正,反之则为负)

例子:

mov al,0x7f

add al,2

mov al,0xfe

add al,2

6、OF(bit 11)【Overflow flag】

溢出标志OF用于反映有符号数加减运算所得结果是否溢出。

可以这样理解:

如果是无符号位运算,是否溢出看CF位

如果是有符号位运算,是否溢出看OF位

有符号和无符号,取决与我们本身

例子:

mov al,0x7f

add al,2

7、DF(bit 10)【Direction flag】

这个方向标志控制串指令(MOVS,CMPS,SCAS,LODS以及STOS)设置DF标志(也就是让DF为1)使得串指令自动递减(从高地址向低地址方向处理字符串),清除该标志(也就是DF为0)则使得串指令自动增加。

STD(把DF设置成1)以及CLD(把DF设置成0)指令分别用于设置以及清除DF标志

我们知道DF是1的时候,用完MOVS指令,那么EDI、ESI就会自减1 2 4,反之为0的时候,自加1 2 4

8、JCC指令

JCC指令要不要修改EIP的值,跟标志寄存器的位有关。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值