问答题 某字长为8位的计算机中,带符号整数采用补码表示,x=-68,y=-80,x和y分别存放在寄存器A和B中,请回答下列问题(最终要求用十六进制表示二进制序列)。
问答题 寄存器A和B中的内容分别是什么?
【正确答案】[-68]=[-1000100B]=10111100B=BCH;[-80]=[-1010000B]=10110000B=BOH。所以寄存器A和寄存器B中的内容分别为BCH和B0H。
【答案解析】
问答题 若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。
【答案解析】
问答题 若x和y相减后的结果存放在寄存器D中,则寄存器D中的内容是什么?运算结果是否正确?此时,溢出标志OF、符号标志SF和零标志ZF各是什么?加法器最高位的进位Cn是什么?
【正确答案】[x-y]=[x]+[-y]=10111100B+01010000B=(1)00001100B=0CH,最高位前面的一位1被丢弃,因此,寄存器D中的内容为0CH,对应的真值为+12,结果正确。
两个加数的符号位相异一定不会溢出,因此溢出标志OF为0,说明寄存器D中的内容是真正的结果。
结果的第一位0为符号标志SF,表示结果为正数;因为结果不为0,所以零标志ZF=0;加法器最高位向前的进位Cn为1。
【答案解析】
问答题 若将加法器最高位的进位Cn作为进位标志CF,能否直接根据CF的值对两个带符号整数的大小进行比较?
【正确答案】若将加法器最高位的进位Cn作为进位标志CF,则无法直接根据CF的值判断两个带符号整数的大小,因此带符号加减运算中不考虑CF标志。
【答案解析】