汇编语言标志位 含义 NV UP EI NG NZ AC PE CY

缩写原意:

Overflow of = OV NV [No Overflow]

Direction df = DN (decrement) UP (increment)

Interrupt if = EI (enabled) DI (disabled)

Sign sf = NG (negative) PL (positive)

Zero zf = ZR [zero] NZ [ Not zero]

Auxiliary Carry af = AC NA [ No AC ]

Parity pf = PE (even) PO (odd)

Carry cf = CY [Carry] NC [ No Carry]

==============

The individual abbreviations appear to have these meanings:

OV = OVerflow, NV = No oVerflow. DN = DowN, UP (up).

EI = Enable Interupt, DI = Disable Interupt.

NG = NeGative, PL = PLus; a strange mixing of terms due to the

fact that ‘Odd Parity‘ is represented by PO (rather than

POsitive), but they still could have used ‘MI‘ for MInus.

ZR = ZeRo, NZ = Not Zero.

AC = Auxiliary Carry, NA = Not Auxiliary carry.

PE = Parity Even, PO = Parity Odd. CY = CarrY, NC = No Carry.

调试程序DEBUG如何表达标志状态?

溢出OV(overflow,OF=1)

无溢出NV(no overflow,OF=0)

减量DN(direction down,DF=1)

增量UP(direction up,DF=0)

允许中断EI(enable interrupt,IF=1)

进制中断DI(disable interrupt,IF=0)

负NG(negative,SF=1)

正PL(plus,SF=0)

零ZR(zero,ZF=1)

非零NZ(no zero,ZF=0)

辅助进位AC(auxiliary carry,AF=1)

无辅助进位NA(no auxiliary carry,AF=0)

偶校验PE(even parity,PF=1)

奇校验PO(odd parity,PF=0)

进位CY(carry,CF=1)

无进位NC(no carry,CF=0)

AH&AL=AX(accumulator):累加寄存器
BH&BL=BX(base):基址寄存器
CH&CL=CX(count):计数寄存器
DH&DL=DX(data):数据寄存器
SP(Stack Pointer):堆栈指针寄存器
BP(Base Pointer):基址指针寄存器
SI(Source Index):源变址寄存器
DI(Destination Index):目的变址寄存器
IP(Instruction Pointer):指令指针寄存器
CS(Code Segment)代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器
OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1.
SF sign Flag 符号标志 记录运算结果的符号,结果负时为1.
ZF zero flag 零标志 运算结果等于0时为1,否则为0.
CF carry flag 进位标志 最高有效位产生进位时为1,否则为0.
AF auxiliary carry flag 辅助进位标志 运算时,第3位向第4位产生进位时为1,否则为0.
PF parity flag 奇偶标志 运算结果操作数位为1的个数为偶数个时为1,否则为0.
DF direcion flag 方向标志 用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大.
IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏蔽中断,否则关闭中断.
TF trap flag 陷阱标志 用于调试单步操作

设置 nv(清除) ov(溢出)

  方向 dn(减) up(增)

  中断 ei(启用) di(禁用)

  正负 ng(负) pl(正)

  零 zr(0) nz(非0)

  辅助进位 ac(进位) na(不进位)

  奇偶校验 pe(偶校验) po(奇校验)

  进位 cy(进位) nc(不进位)

  如:

  OV DN EI NG ZR AC PE CY依次表示OF DF IF SF ZF AF PF CF都为1;

NV UP DI PL NZ NA PO NC依次表示OF DF IF SF ZF AF PF CF都为0.


of


df


if


sf


zf


af


pf


cf


标志位为1


ov


dn


ei


ng


zr


ac


pe


cy


标志位为0


nv


up


di


pl


nz


na


po


nc

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0100   NV UP EI PL NZ NA PO NC
1392:0100 28C0          SUB     AL,AL
-t

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0102   NV UP EI PL ZR NA PE NC
1392:0102 B010          MOV     AL,10
-t

AX=0010  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0104   NV UP EI PL ZR NA PE NC
1392:0104 0490          ADD     AL,90
-t

AX=00A0  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0106   NV UP EI NG NZ NA PE NC
1392:0106 B080          MOV     AL,80
-t

AX=0080  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0108   NV UP EI NG NZ NA PE NC
1392:0108 0480          ADD     AL,80
-t

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=010A   OV UP EI PL ZR NA PE CY
1392:010A B0FC          MOV     AL,FC
-t

AX=00FC  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=010C   OV UP EI PL ZR NA PE CY
1392:010C 0405          ADD     AL,05
-t

AX=0001  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=010E   NV UP EI PL NZ AC PO CY
1392:010E B07D          MOV     AL,7D
-t

AX=007D  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0110   NV UP EI PL NZ AC PO CY
1392:0110 040B          ADD     AL,0B
-

AX=0080  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0108   NV UP EI NG NZ NA PE NC
1392:0108 0480          ADD     AL,80
-另外有人在网上做了很好的总结

http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=19481&kindLevel=1&kindId=34937&postId=39398&readSg=1

补码运算时的溢出判断

这里我做个脚注:即两数原码数值部分是什么意思

10000101

11111011 分别是同一个数的原码与补码,去掉最高位的符号位,相加即得128

当两个以补码表示的负数相加时,会遇到两个问题。第一是两个负数的符号位相加,1+1后,本位为零,似乎负数相加变成了正数;其二是两个负数的数值部分之和,如果不向符号位进位,是不是就说明运算结果没有溢出?但不进位最终将导致两个负数相加成了正数,显然是错误的,这该怎么解释?如果两个以补码表示的负数的数值部分之和向符号位进位,会使运算结果依然为负数,那么这个运算结果是正确的吗?下面我们分析一下这个问题:

①只有真正意义上的相加才可能溢出,比如:

正+正,负+负,正-负,负-正

纯粹的减法是不可能溢出的,这一点仅需常识即可作出判断,所以遇到不是真正意义上的加法运算(当然,包括乘法和左移等)要你判断是否有溢出,直接就可以回答:OF=0;

②两正数之和的数值部分向符号位进位,显然是运算结果超过了指定位数的带符号数的表示范围,这就是典型的溢出;

③两负数之和的溢出判断是我们讨论的重点。我们先考察一下负数原码和补码数值部分之间的关系:以8位补码为例,负数原码和补码数值部分之和始终等于128(见上图)。由于这种关系,当原码数值大时对应的补码数值就小,反之也一样。所以,当两补码表示的负数的数值部分之和没有向符号位进位,说明两负数的原码之和必然向符号位进位,即发生溢出;反之,当两补码表示的负数的数值部分之和向符号位进位,那么对应两负数原码的数值之和就不可能向符号位进位,即运算结果没有溢出;并且在这种情形下补码之和的数值部分向符号位的进位,修正了两负数符号位相加本位为零的问题,使得两负数之和依然是个负数。 
    下面看两个负数补码相加溢出判断的实例: 
例一:085h + 9ch
   = 10000101b + 10011100b
   两数相加,数值部分不会向符号位进位,这是不是就说明没有溢出呢?但由于计算结果为正,显然不对。我们还是看看两个数的原码之和再说: 
    10000101b的原码 = 11111011b(-123)
    10011100b的原码 = 11100100b(-100)
    显然,原码之和的数值部分将向符号位进位,显然是溢出无疑。

例二:0e7h + 0b3h
    =11100111b + 10110011b
    两数相加,数值部分会向符号位进位,这进位是溢出吗?还是看看原码吧!
    11100111b的原码 = 10011001b(-25)
    10110011b的原码 = 11001101b(-77)
    容易看出,两数原码之和没有向符号位进位,即没有发生溢出。 
    其实归结起来,补码的溢出判断规则就一句话:

同号数相加如果结果的符号位和两加数不同,既是溢出。

这自然说明了: 
    ⑴不是同号数相加,则不可能溢出; 
    ⑵同号数相加有可能溢出; 
    ⑶同号数相加如果结果的符号位和两加数不同,既是溢出。

评论次数(7)  |  浏览次数(3316)  |  类型(汇编语言) |  收藏此文  |

younggay   发表于  2009-07-22 09:59  ]

up

zhonghuade   发表于  2009-10-18 19:23  ]

老师!我觉得可以加一些实际的例子来说明补码溢出,比如说:8位机器数运算表示范围-128大于等于x小于等于127,发生溢出的具体情况?用实例来说明能让我们更深刻理解溢出的含义!请您指点!谢谢!

release_lag   发表于  2009-12-31 16:48  ]

呵呵,没想到我和楼主想到一起去了。 
=============================
回楼上的 
如果是两个8位数据相加 
第一个加数的范围是:0ffH~80H(负数的范围) 
第二个加数的范围是:0H~79H(正数的范围) 
那么他们永远不会溢出 
原因是他们符号不同,楼主已经说过:不同符号的两数相加,结果不可能溢出 
同符号相加时,就检查结果的符号,如果符号与两个数据的符号不同时,则溢出 
例如mov al,0e0h
   add al,95H
结果是(al)=75H      ;75H为正数,运算溢出

[  游客   发表于  2011-01-01 21:53  ]

[  游客   发表于  2011-12-17 22:33  ]

文章很不错,可是还有很多地方不太明白。

1、(八位补码溢出判断图示)是根据什么原理推断出来的啊?负数原码和补码数值部分之和始终等于128,为什么?

2、只有真正意义上的相加才可能溢出,什么是真正意义上的相加?

3、请问什么是溢出?文中提到:两正数之和的数值部分向符号位进位,显然是运算结果超过了指定位数的带符号数的表示范围,这就是典型的溢出。运算结果超过了指定位数的带符号数的表示范围——这句话如何理解?不是同号数相加,则不可能溢出,超不超出范围如何判断?

842460904   发表于  2012-09-03 23:38  ]

理论是应该负数原码和补码数值之和等于128,可为什么。fc和它的补码-4相加,即252+(-4)=?好像不在128-127之间。为什么,能解答下吗。谢谢

scuzg   发表于  2012-12-20 19:05  ]

0fch展开成二进制数: 
11111100,其中最高位是符号位,所以: 
7ch+4=80h=128
际原码和补码数值部分之和是128.

汇编语言标志位 含义 NV UP EI NG NZ AC PE CY

时间: 2024-10-07 15:12:24

汇编语言标志位 含义 NV UP EI NG NZ AC PE CY的相关文章

汇编语言标记寄存器标记位_NV UP EI NG NZ AC PE CY

在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的某些执行结果: 2)用来为CPU执行相关指令提供行为依据: 3)用来控制CPU的相关工作方式. flag寄存器各位示意图 注明:16位中未标明字符的各位在8086CPU中没有使用,无意义: 标明字符的各位具有特殊含义. 位     符号    英文全称                        

debug 标志位说明

   of  df  if  sf   zf   af   pf   cf 标志位为1 ov  dn ei  ng  zr   ac  pe  cy标志位为0 nv  up di  pl   nz  na  po  nc

汇编-寄存器数据的存储与变化-算术运算对标志位的影响

实验3:寄存器数据的存储与变化-算术运算对标志位的影响 1.项目设计 将操作数放在2000H和2001H两个单元中,编程进行以下的算术运算 ,并记录标志位的状态. (1)41H+3BH,结果放在2002H单元中; (2)41H+5AH,结果放在2003H单元中; (3)AFH+7EH,结果放在2004H单元中; (4)E3H+1DH,结果放在2005H单元中; (5)41H-3BH,结果放在2006H单元中: (6)3BH-41H,结果放在2007H单元中: 2.项目实施 (1)写出指令代码段,

常用汇编指令及其影响的标志位

加法指令 ADD (addition) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最高有效位向高位无进位 OF=1   两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. OF=0   两个不同符号数相加,或同符号数相加,结果符号与其相同. 带进位加法指令 ADC (add with carry) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最低有效位相高位无进位 OF=1   两个同符号数相加,结果符号与其相反, O

各种标志位的含义

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

汇编语言从入门到精通-标志位的说明

16位标志寄存器--共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征.标志位的分布如下表所示.   15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0         OF DF IF TF SF ZF   AF   PF   CF 32位标志寄存器--32位CPU也把标志寄存器扩展到32位,记为EFLAGS.它新增加了四个控制标志位,它们是:IOPL.NT.RF和VM,这些标志位在实方式下不起作用.其它标志位的位置和作用与先前的完全相同.其主要标志位的分布

标志位介绍

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

3.汇编中的标志位

这周主要学习的是转移指令的相关知识和原理. offset在和汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址. jmp是无条件转移指令,可以只修改IP,也可以同时修改CS和IP. CPU在执行jmp指令的时候不需要转移的目的地址,机器码中包含的的是转移的位移. Ret指令用栈中的数据,修改IP的内容,从而实现近转移. Ret=POP  IP Retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. Retf=POP IP     POP CS   CPU执行call指令时,进

汇编标志位简介

标志(Flag)用于反映指令执行结果或控制指令执行形式,是汇编语言程序设计中必须特别注意的一个方面.许多指令执行之后将影响有关的标志位,同时不少指令的执行要利用某些标志.因此我们在学习使用汇编语言的过程中必须了解标志位. 一.状态标志 1.进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位.如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0. 使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位