添加和减去数字中的数字

时间:2017-11-27 23:36:31

标签: mips32

我正在尝试添加该系列数字的前3位数字和后3位数字,并使用第一个数字减去第二个结果。我将不得不使用load bytestore byte命令。但是当我使用sb时,我得到了错误的答案。

我的代码如下(使用MIPS汇编语言):

.data
D1: .byte 1,7,2,0,0,3
D2: .byte 0
.text
.globl main
main: la $t0,D1
la $t9,D2
lb $t1,0($t0)
lb $t2,4($t0)
add $t3,$t1,$t2
lb $t4,8($t0)
add $t3,$t3,$t4
lb $t5,16($t0)
lb $t6,20($t0)
lb $t7,24($t0)
add $t8,$t5,$t6
add $t8,$t8,$t7
sub $t8,$t8,$t3
sb $t8,0($t9)
li $v0,10
syscall

sub $t8,$t8,$t3之前,我得到-7中存储的正确答案$t8,但当我使用某人时,答案为249。我无法弄清楚为什么会这样。

1 个答案:

答案 0 :(得分:0)

二进制数字-7(有符号)是:

11111111 11111111 11111111 11111001

编号249(签名)是:

00000000 00000000 00000000 11111001

sb(保存字节),只保存一个字节(8LS位)。这就是为什么你得到249而不是-7。

在某人之后你可以这样做:

lui $t8, 65535#这会将前16位从0更改为1 然后将正确的数字添加到$t8以获取所需的输出。

但是我不知道你想要完成什么。