Assembly 负条件标志N是否也设置为溢出?
当我准备下周学校的组装/处理器体系结构考试时,我遇到了一些相当混乱的事情 执行二进制加法时,我们了解了4个条件标志: N=结果为负 Z=结果为零 C=产生进位的操作 V=操作产生的溢出 但我很困惑,当出现溢出时是否必须设置N标志Assembly 负条件标志N是否也设置为溢出?,assembly,cpu,processor,Assembly,Cpu,Processor,当我准备下周学校的组装/处理器体系结构考试时,我遇到了一些相当混乱的事情 执行二进制加法时,我们了解了4个条件标志: N=结果为负 Z=结果为零 C=产生进位的操作 V=操作产生的溢出 但我很困惑,当出现溢出时是否必须设置N标志 我们在6 + 7的两个补中考虑这个4位加法,例如: 0110 0111+ ----- 1101 = result 现在,当用2的补码计算4位时,这显然会导致溢出。它的结果应该是13(01101为5位),但结果是-3,因为它只能以4位显示。 所以我的问题是,在这种情
我们在6 + 7的两个补中考虑这个4位加法,例如:
0110
0111+
-----
1101 = result
现在,当用2的补码计算4位时,这显然会导致溢出。它的结果应该是13(01101为5位),但结果是-3,因为它只能以4位显示。
所以我的问题是,在这种情况下是否也设置了负标志N?因为结果是一个负数。如果不确切知道您使用的是哪个处理器,我无法肯定地回答这个问题,但通常N被设置为等于结果的高位(符号),与所有其他标志无关。因此,在您的示例中,N和V都将被设置
(N、Z和C几乎都是来自ALU的位的简单函数-C是加法器的进位,N等于结果的高位,Z不是(或(寄存器中的所有位))。它的定义很可能因处理器而异。)如果不确切知道您使用的是哪个处理器,我无法肯定地回答这个问题,但通常N被设置为等于结果的高位(符号),与所有其他标志无关。因此,在您的示例中,N和V都将被设置
(N、Z和C几乎都是来自算术运算器的位的简单函数-C是加法器的进位,N等于结果的高位,Z不是(或(寄存器中的所有位))。它的定义很可能因处理器而异。)以4位为例,继续考虑以下示例:
- 0001+1110==1111(小数点:1+(-2)=-1)
- 1100+1001==0101(十进制:(-4)+(-7)==5;-11将不存在溢出)
S = N xor V
其中S是真符号标志(不直接出现在NZVC方案中)。这个标志实际上用于分支操作:例如,当BGT的条件为((nxor V)或Z)==0
,这实际上意味着S或Z==0
,或者换句话说,S==0和Z==0
某些指令集体系结构(例如,
AVR
)具有真符号标志而不是负标志。对于4位示例,请继续考虑以下示例:
- 0001+1110==1111(小数点:1+(-2)=-1)
- 1100+1001==0101(十进制:(-4)+(-7)==5;-11将不存在溢出)
S = N xor V
其中S是真符号标志(不直接出现在NZVC方案中)。这个标志实际上用于分支操作:例如,当BGT的条件为((nxor V)或Z)==0
,这实际上意味着S或Z==0
,或者换句话说,S==0和Z==0
某些指令集架构(例如,
AVR
)具有真符号标志而不是负标志。是,已设置。N标志只是最高有效位的副本。当然,也可以在没有溢出的情况下进行设置。是的,设置了。N标志只是最高有效位的副本。当然,也可以在没有溢出的情况下进行设置。