问答题
假设某字长为8位的计算机中,带符号整数采用补码表示,x=-68,y=-80,x和y分别存放在寄存器A和B中。请回答下列问题(要求最终用十六进制表示二进制序列)。
问答题
寄存器A和B中的内容分别是什么?
【正确答案】[-68]补=[-1000100B]补=10111100B=BCH。
[1-80]补=[-1010000B]补=10110000B=B0H。
所以,寄存器A和寄存器B中的内容分别是BCH和B0H。
【答案解析】
问答题
若x和y相加后的结果存放在寄存器C中,则寄存器C中的内容是什么?运算结果是否正确?此时,溢出标志(OF)、符号标志(SF)和零标志(ZF)各是什么?加法器最高位的进位Cn是什么?
【正确答案】①[x+y]补=[x]补+[y]补=10111100B+10110000B=(1)01101100B=6CH,最高位前面的一位1被丢弃,因此,寄存器C中的内容为6CH。
②寄存器C中的内容为6CH,对应的真值为+108,而x+y的正确结果应是-68+(-80)=-148,故结果不正确。
③溢出标志位OF可采用以下任意一条规则判断得到。
规则1:若两个加数的符号位相同,但与结果的符号位相异,则溢出。
规则2:若最高位上的进位和次高位上的进位不同,则溢出。
通过这两个规则都能判断出结果溢出,即溢出标志位OF为1,说明寄存器C中的内容不是正确的结果。结果的第一位0为符号标志SF,表示结果为整数。因为结果不为0,所以零标志ZF=0。
综上,溢出标志OF为1,符号标志SF为0,零标志ZF为0。
④加法器最高位向前的进位Cn为1。
【答案解析】
问答题
若x和y相减后的结果存放在寄存器D中,则寄存器D中的内容是什么?运算结果是否正确?此时,溢出标志(OF)、符号标志(SF)和零标志(ZF)各是什么?加法器最高位的进位Cn是什么?
【正确答案】①[x-y]补=[x]补+[-y]补=10111100B+01010000B=(1)00001100B=0CH,最高位前面的一位1被丢弃,因此,寄存器D中的内容为CH。
②对应的真值为+12,结果正确。
③两个加数的符号位相异一定不会溢出,因此溢出标志(OF)为0,说明寄存器D中的内容是真正的结果;结果的第一位0为符号标志(SF),表示结果为正数;因为结果不为0,所以零标志ZF=0。
综上,溢出标志(OF)为0,符号标志(SF)为0,零标志(ZF)为0。
④加法器最高位向前的进位Cn为1。
【答案解析】
问答题
若将加法器最高位的进位Cn作为进位标志(CF),则能否直接根据CF的值对两个带符号整数的大小进行比较?
【正确答案】从2)和3)的例子就可得出,带符号整数-68和-80时,Cn为1,而带符号数-68和80时,Cn一样为1,所以若将加法器最高位的进位Cn作为进位标志(CF),无法直接根据CF的值判断两个带符号整数的大小。
【答案解析】