EFLAGS标志寄存器加深理解

符号位表
这些符号位存在一个叫做PSW(Program Status Word,程序状态字)的16位(4字节)寄存器里面。
符号位 叙述 典型应用 汇编测试
OF 溢出标志,标明一个溢出的运算。真置1,假置0。 CPU 会根据有符号数来进行判断,如果有符号数溢出,OF置1
例如: 16位数
AX:0x858F
进行 SUB AX,0x7869 操作 后 OF就置1 ,CF位还是0,AX没有向第17位进行借位或进位。
MOV AX,858F/ SUB AX,7869
SF 负号标志,标明结果为负数。真置1,假置0。 int i = -100; MOV AL,86
if(i < 0) CMP AL,0
goto somewhere;  
ZF 零标志,标明结果为0。真置1,假置0。 见上cmp例子 MOV AL,0/CMP AL,0
CF 进位标志,标明结果进位了。真置1,假置0。 MOV EAX,1 MOV EAX,0FFE6FF00
MOV EBX,9 ADD EAX,208704
ADD EAX,EBX  
AF 辅助进位标志,记录运算时第3位(半个字节)产生的进位。 操作对象一半位置是否有进位或借位 MOV AX,78FE/ADD AX,3
PF 奇偶标志,结果操作数中1的个数为偶置1(我猜是二进制下)。 最后一个字节操作数中1的个数为偶置1  
DF 方向标志,在串处理指令中控制信息的方向(非运算) 0: 地址加   1:地址减 MOV ECX,3/REP STOS DWORD PTR ES:[EDI]
IF 中断标志(非运算) (null)  
TF 陷井标志(非运算) (null)  
时间: 2024-12-20 21:16:55

EFLAGS标志寄存器加深理解的相关文章

标志寄存器

段寄存器,通用寄存器,隐藏寄存器.这节课再学一个寄存器,叫做标志寄存器. 旗帜标志寄存器(EFLAGS): 主要用于反映处理器的状态和运算结果的某些特征及控制指令的执行. 这话太专业了,我们用大白话给大家举个例子.在CPU里面,有一些指令运行完之后,会把一些运行完的情况放到标志寄存器里面.另外一些指令会根据标志寄存器的一些情况决定如何运行. 大家都知道快过年了,小偷们喜欢偷东西要过年.为了能够提高团队作案的效率,两个小偷组团.第一个小偷负责踩点.第二个小偷负责偷东西. 第一个小偷出去踩点,如果发

标志寄存器9中标志

一.运算结果标志位 1.进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位.如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0. 使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等. 2.奇偶标志PF(Parity Flag) 奇偶标志PF用于反映运算结果中“1”的个数的奇偶性.如果“1”的个数为偶数,则PF的值为1,否则其值为0. 利用PF可进行奇偶校验检查,或产生奇

学 Win32 汇编[20]: 洞察标志寄存器

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF 未使用 嵌套标志 I/O权限标志占2位 溢出标志 方向标志 中断允许标志 单步标志 符号标志 零标志 未使用 辅助标志 未使用 奇偶标志 未使用 进位标志 上表是 32 位寄存器 EFLAGS 的低 16 位. 不能直接读写 EFLAGS, 但有些方便的指令, 如:LAHF: 读取EFLAGS 低 8 位到 AH; SAHF 是 LAHF 的反向操作.

汇编语言学习第十一章-标志寄存器

本博文系列参考自<<汇编语言>>第三版,作者:王爽 8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW).除了前面介绍的寄存器.本博文将介绍最后一个寄存器,标志寄存器.不同于之前的寄存器,标志寄存器是按位起作用的.其每一位都有特殊的含义. 8086标志寄存器的结构如下图所示: 标志寄存器的1,3,5,12,13,14,15都没有特殊含义.其0,2,4,6,7,8,9,10,11用作标志位使用. 11.1 ZF标志(zeros flag) 标志寄存器第6位

汇编语言(王爽) 第11章 标志寄存器

这里讲一个特殊的寄存器,flag 先看flag的16位显示 11.1 zf 指令执行后,结果0,ZF=1 指令执行后,结果不为0,ZF=0 11.2 pf 指令执行后,所有bit位中1的个数是否位偶数,若为偶数,那么pf=1 若为奇数,pf=0 11.3 sf 指令执行后,结果负,SF=1 指令执行后,结果不为负,SF=0 11.4 cf 进位 若出现进位,那么CF=1 没有的话CF=0 11.5 of 溢出, 数字的溢出. 8位范围是-128-127 若130就是溢出了 11.6 abc指令

标志寄存器(学习汇编)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF 未使用 嵌套标志 I/O权限标志占2位 溢出标志 方向标志 中断允许标志 单步标志 符号标志 零标志 未使用 辅助标志 未使用 奇偶标志 未使用 进位标志 1.CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都有可能不同)具有以下3种作用. (1)用来存储相关指令的某些执行结果: (2)用来为CPU执行相关指令提供行为依据: (3

!hdu 1203--dp--(加深理解)

题意:小明有n元钱,他想申请国外的学校,申请第i所学校要用si的费用,申请成功的概率是pi,求小明至少能申请成功一所学校的概率. 分析:概率当然是从反面求最小值.状态转移方程:dp[i]=min(dp[j]*p[i],dp[i]),我想错了,我就按照以前的dp的套路依照数组来遍历,还先排了序,dp[i]代表申请第i所学校时的最优解:正确的应该是从费用出发,dp[i]表示用了i元钱时的最优解,这才是正确的思路. dp还是要加深理解! 代码: #include<iostream> #include

用实验方法加深理解Oracle的外连接(left/right/full)和内连接(inner)

总是对Oracle的左连接.右连接以及(+)对应的外连接类型糊涂,通过实验加深对连接类型语法的理解.外连接分为三种: 1. 左外连接,对应SQL关键字:LEFT (OUTER) JOIN 2. 右外连接,对应SQL关键字:RIGHT (OUTER) JOIN 3. 全外连接,对应SQL关键字:FULL (OUTER) JOIN 左右外连接都是以一张表为基表,在显示基表所有记录外,加上另外一张表中匹配的记录.如果基表的数据在另一张表中没有记录,那么相关联的结果集行中显示为空值. 精确点说,引用MO

CPU的标志寄存器

高一时,学校组织去韶山游玩,我没去,这次趁着五一,总算去了我心心念念的韶山.其实我知道所有的景点都是差不多的,可是因为电视剧<恰同学少年>,让我对毛泽东有了进一层的了解,所以,我一直都想去看看. 有两个同学一男一女是我理想的旅友,可是女生不想去,而男士回家了.所以,我独自一人去了. 准备工作:一小包饼干,一小包山楂片,两个苹果,一瓶水,帽子(防晒),墨镜(装酷) 早晨5:30起床了,洗漱完毕,吃完早餐,赶到公交车站牌那里,才6点过几分.公交车6:31才到,等了近半个小时(公交车上明明说是6:0