某字长为8位的计算机中,带符号整数采用补码表示,x=—68,y=—80,x和y分别存放在寄存器A和B中,请回答下列问题(最终要求用十六进制表示二进制序列)。 若x和y相加后的结果存放在寄存器C中,则寄存器C中的内容是什么?运算结果是否正确?此时,溢出标志

admin2017-04-28  53

问题 某字长为8位的计算机中,带符号整数采用补码表示,x=—68,y=—80,x和y分别存放在寄存器A和B中,请回答下列问题(最终要求用十六进制表示二进制序列)。
若x和y相加后的结果存放在寄存器C中,则寄存器C中的内容是什么?运算结果是否正确?此时,溢出标志OF、符号标志SF和零标志ZF各是什么?加法器最高位的进位Cn是什么?

选项

答案[x+y]=[x]+[y]=10111100B+10110000B=(1)01101100B=6CH,最高位前面的一位1被丢弃,因此,寄存器C中的内容为6CH,对应的真值为+108,结果不正确,溢出标志位OF可采用以下任意一条规则。 规则一:若两个加数的符号位相同,但与结果的符号位相异,则溢出: 规则二:若最高位的进位和次高位的进位不同,则溢出。 通过这两个规则都能判断结果溢出,即溢出标志位OF为1,说明寄存器C中的内容不是正确的结果。x+y的正确结果应是—68+(—80)=—148,而运算结果是108,显然两者不等。其原因是x+y的值(即—148)小于8位补码可表示的最小值(即—128),也即结果发生了溢出。 结果的第一位0为符号标志SF,表示结果为正数。但因为溢出标志位1,所以符号标志实际上也是错的。 因为结果不为0,所以零标志ZF=0。 加法器最高位向前的进位Cn为1。

解析
转载请注明原文地址:https://jikaoti.com/ti/5KfjFFFM
0

最新回复(0)