odd是什么意思

更新时间:2022-11-25 10:48:25 阅读: 评论:0


2022年11月25日发(作者:七年级上册英语书电子书)

汇编语⾔标志位含义NVUPEINGNZACPECY

缩写原意:<?xml:namespaceprefix=o/>

Overflowof=OVNV[NoOverflow]

Directiondf=DN(decrement)UP(increment)

Interruptif=EI(enabled)DI(disabled)

Signsf=NG(negative)PL(positive)

Zerozf=ZR[zero]NZ[Notzero]

AuxiliaryCarryaf=ACNA[NoAC]

Paritypf=PE(even)PO(odd)

Carrycf=CY[Carry]NC[NoCarry]

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

Theindividualabbreviationsappeartohavethemeanings:

OV=OVerflow,NV==DowN,UP(up).

EI=EnableInterupt,DI=DisableInterupt.

NG=NeGative,PL=PLus;astrangemixingoftermsduetothe

factthat'OddParity'isreprentedbyPO(ratherthan

POsitive),buttheystillcouldhaveud'MI'forMInus.

ZR=ZeRo,NZ=NotZero.

AC=AuxiliaryCarry,NA=NotAuxiliarycarry.

PE=ParityEven,PO==CarrY,NC=NoCarry.

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

溢出OV(overflow,OF=1)

⽆溢出NV(nooverflow,OF=0)

减量DN(directiondown,DF=1)

增量UP(directionup,DF=0)

允许中断EI(enableinterrupt,IF=1)

进制中断DI(disableinterrupt,IF=0)

负NG(negative,SF=1)

正PL(plus,SF=0)

零ZR(zero,ZF=1)

⾮零NZ(nozero,ZF=0)

辅助进位AC(auxiliarycarry,AF=1)

⽆辅助进位NA(noauxiliarycarry,AF=0)

偶校验PE(evenparity,PF=1)

奇校验PO(oddparity,PF=0)

进位CY(carry,CF=1)

⽆进位NC(nocarry,CF=0)

AH&AL=AX(accumulator):累加寄存器

BH&BL=BX(ba):基址寄存器

CH&CL=CX(count):计数寄存器

DH&DL=DX(data):数据寄存器

SP(StackPointer):堆栈指针寄存器

BP(BaPointer):基址指针寄存器

SI(SourceIndex):源变址寄存器

DI(DestinationIndex):⽬的变址寄存器

IP(InstructionPointer):指令指针寄存器

CS(CodeSegment)代码段寄存器

DS(DataSegment):数据段寄存器

SS(StackSegment):堆栈段寄存器

ES(ExtraSegment):附加段寄存器

OFoverflowflag溢出标志操作数超出机器能表⽰的范围表⽰溢出,溢出时为1.

SFsignFlag符号标志记录运算结果的符号,结果负时为1.

ZFzeroflag零标志运算结果等于0时为1,否则为0.

CFcarryflag进位标志最⾼有效位产⽣进位时为1,否则为0.

AFauxiliarycarryflag辅助进位标志运算时,第3位向第4位产⽣进位时为1,否则为0.

PFparityflag奇偶标志运算结果操作数位为1的个数为偶数个时为1,否则为0.

DFdirecionflag⽅向标志⽤于串处理.DF=1时,每次操作后使SI和DI减⼩.DF=0时则增⼤.

IFinterruptflag中断标志IF=1时,允许CPU响应可屏蔽中断,否则关闭中断.

TFtrapflag陷阱标志⽤于调试单步操作

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

⽅向dn(减)up(增)

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

正负ng(负)pl(正)

零zr(0)nz(⾮0)

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

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

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

如:

OVDNEINGZRACPECY依次表⽰OFDFIFSFZFAFPFCF都为1;

NVUPDIPLNZNAPONC依次表⽰OFDFIFSFZFAFPFCF都为0.

ofdfifsfzfafpfcf

标志位为1ovdneingzracpecy

标志位为0nvupdiplnznaponc

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0100NVUPEIPLNZNAPONC

1392:010028C0SUBAL,AL

-t

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0102NVUPEIPLZRNAPENC

1392:0102B010MOVAL,10

-t

AX=0010BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0104NVUPEIPLZRNAPENC

1392:01040490ADDAL,90

-t

AX=00A0BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0106NVUPEINGNZNAPENC

1392:0106B080MOVAL,80

-t

AX=0080BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0108NVUPEINGNZNAPENC

1392:01080480ADDAL,80

-t

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=010AOVUPEIPLZRNAPECY

1392:010AB0FCMOVAL,FC

-t

AX=00FCBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=010COVUPEIPLZRNAPECY

1392:010C0405ADDAL,05

-t

AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=010ENVUPEIPLNZACPOCY

1392:010EB07DMOVAL,7D

-t

AX=007DBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0110NVUPEIPLNZACPOCY

1392:0110040BADDAL,0B

-

AX=0080BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=1392ES=1392SS=1392CS=1392IP=0108NVUPEINGNZNAPENC

1392:01080480ADDAL,80

-另外有⼈在⽹上做了很好的总结

补码运算时的溢出判断

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

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-2209:59]

up

[zhonghuade发表于2009-10-1819:23]

⽼师!我觉得可以加⼀些实际的例⼦来说明补码溢出,⽐如说:8位机器数运算表⽰范围-128⼤于等于x⼩于等于127,发⽣溢出的具体情

况?⽤实例来说明能让我们更深刻理解溢出的含义!请您指点!谢谢!

[relea_lag发表于2009-12-3116:48]

呵呵,没想到我和楼主想到⼀起去了。

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

回楼上的

如果是两个8位数据相加

第⼀个加数的范围是:0ffH~80H(负数的范围)

第⼆个加数的范围是:0H~79H(正数的范围)

那么他们永远不会溢出

原因是他们符号不同,楼主已经说过:不同符号的两数相加,结果不可能溢出

同符号相加时,就检查结果的符号,如果符号与两个数据的符号不同时,则溢出

例如moval,0e0h

addal,95H

结果是(al)=75H;75H为正数,运算溢出

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

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

⽂章很不错,可是还有很多地⽅不太明⽩。

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

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

3、请问什么是溢出?⽂中提到:两正数之和的数值部分向符号位进位,显然是运算结果超过了指定位数的带符号数的表⽰范围,这就是典

型的溢出。运算结果超过了指定位数的带符号数的表⽰范围——这句话如何理解?不是同号数相加,则不可能溢出,超不超出范围如何判

断?

[842460904发表于2012-09-0323:38]

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

解答下吗。谢谢

[scuzg发表于2012-12-2019:05]

0fch展开成⼆进制数:

11111100,其中最⾼位是符号位,所以:

7ch+4=80h=128

际原码和补码数值部分之和是128.

本文发布于:2022-11-25 10:48:25,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/17980.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图