添加位x32 mips assembly

我试图在一个函数中添加2个字符串的位,我无法让它工作...任何建议?这是我的代码如下:
$a0, "11111111111100000001111111111110"    #= -4064

$a1, "00000000001000111000000000000010"   # = 9088

$a2, resultSpace 
$a3, representation                #one's or two's complement

li $t4, 0 #carry flag 

lb $t0, 32($a0)
lb $t1, 32($a1)

move $t5, $a0

loop: 
lb $t0, 32($a0)
lb $t1, 32($a1)


add $t3, $t0, $t1


sb $t3, 32($a2)

sub $a2, $a2, 1 
sub $a0, $a0, 1
sub $a1, $a1, 1 


addi $t4, $t4, 1 # increments 
bne $t4, 32, loop 
    
已邀请:
这里有几点建议。 你用ASCII字符'0'和'1'混淆了比特。如果添加'0'和'1',则不是'1'而是'a'(因为'0'是字符48,'1'是字符49,'a'是字符97)。 您首先要查看每个字符串中的偏移量32。但字符串长度为32个字符,因此它们的有效偏移量为0..31,因此您要做的第一件事就是读取输入数据的结尾。 你没有在附加中使用进位标志。当你添加位时,你也没有做任何检查进位的事情。 但是,您使用您声称的进位标志作为循环计数器。 我离MIPS汇编专家很远,所以这两个可能是错的: 您是否在代码开头时遗漏了一些说明?我的意思是,你真的可以说
$a2, resultSpace
或者你需要
la $a2, resultSpace
或类似的东西吗? 是否存在直接的伪指令?因为我很确定没有实际的直接指令; MIPS指令集中的
bne
指令期望给出两个寄存器而不是寄存器和立即值。     

要回复问题请先登录注册