假定有4个整数用8位补码分别表示r1=FEH, r2=F2H, r3=90H, r4=F8H,若将运算结果存放在一个8位的寄 存器中,则下列运算会发生溢出的是(B) A: r1 *r2 B :r2 *r3 C:r1 *r4 D:r2 *r4
时间: 2024-04-01 21:31:35 浏览: 554
首先,我们需要知道8位补码表示的范围是从-128到127。其中,最高位表示符号位,0表示正数,1表示负数。
对于题目中给定的4个整数,它们的十进制表示分别为:
r1 = -2
r2 = -14
r3 = 144
r4 = -8
现在考虑每个选项的计算结果:
A:r1*r2 = (-2)*(-14) = 28,未发生溢出。
B:r2*r3 = (-14)*144 = -2016,发生溢出,因为结果超过了8位补码表示的范围。
C:r1*r4 = (-2)*(-8) = 16,未发生溢出。
D:r2*r4 = (-14)*(-8) = 112,未发生溢出。
因此,选项B会发生溢出。
相关问题
某8位计算机中,假设x和y是两个带符号整数变量,用补码表示,[x]补=3CH,[y]补=E5H,则x+y的真值和溢出标志分别是
在8位计算机中,使用补码表示有符号整数,最高位通常作为符号位,0表示正数,1表示负数。对于给定的补码:
[x]补 = 01111101 (3CH)
[y]补 = 11101011 (E5H)
首先,我们需要将十六进制转换成二进制:
[x]补 = 000001111101
[y]补 = 1111101011
将它们相加:
```
000001111101 (x)
+ 1111101011 (y)
-----------------
100001010010 (结果)
```
注意:因为最左边的一位是1,所以这是个负数。在8位系统中,如果最右边的一位超出范围(超过7),就会发生溢出。由于我们只看最后一位,它是0,所以没有溢出。
真值计算需要加上符号位(这里是1代表负),所以我们减去1得到真值:
真值 = 结果 + 符号位 = 100001010010 - 1 = 100001010001
现在,我们将这个真值转换回十进制:
100001010001_2 = -3 + 128 + 64 + 8 = 207
因此,x + y 的真值是 -207,没有溢出。溢出标志为0(无溢出)。
编写程序。设一个有符号16位二进制数以原码形式存放在R1R0中,求其补码并把结果存于R3R2中。 【参考例题】:16位数求补。设16位二进制数在R1R0中,求补结果存于R3R2中。其程序段如下: ORG 1000H START: MOV A,R0 CPL A ADD A,#01H MOV R2,A MOV A,R1 CPL A ADDC A,#00H MOV R3,A SJMP $
R1 INC
JC OVER MOV R1,R2 CPLA ADDA #1 MOV R2,R3 JMP END OVER: CLR R3, R2 END: …(程序继续) 该程序通过将R0取反并加1来求得补码,最后存储在R3R2中。
阅读全文