我正在尝试添加该系列数字的前3位数字和后3位数字,并使用第一个数字减去第二个结果。我将不得不使用load byte
和store 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
。我无法弄清楚为什么会这样。
答案 0 :(得分:0)
二进制数字-7(有符号)是:
11111111 11111111 11111111 11111001
编号249(签名)是:
00000000 00000000 00000000 11111001
sb(保存字节),只保存一个字节(8LS位)。这就是为什么你得到249而不是-7。
在某人之后你可以这样做:
lui $t8, 65535
#这会将前16位从0更改为1
然后将正确的数字添加到$t8
以获取所需的输出。
但是我不知道你想要完成什么。