Assembly MIPS程序集:如何对两个字符串的值求和

Assembly MIPS程序集:如何对两个字符串的值求和,assembly,mips,mars-simulator,Assembly,Mips,Mars Simulator,我一直在尝试对两个字符串的数值求和,然后用syscall 4将其作为字符串返回,我这样做是因为我必须对大的数字求和,而这些数字不适合寄存器,所以我们将它们表示为0x30和0x39之间的ascii数字字符串 到目前为止,我只让用户输入了2个字符串,我一直在想,我可以将字符串中的每个数字进行转换,然后进行1乘1的加法,然后将其发送到一个字符串,然后对每个字符串中的每个数字执行此操作,然后将每个加法的结果叠加到同一个字符串中,然后打印出来。对于加法超过9的情况,例如:6+5=11,当我将其叠加到字符串

我一直在尝试对两个字符串的数值求和,然后用syscall 4将其作为字符串返回,我这样做是因为我必须对大的数字求和,而这些数字不适合寄存器,所以我们将它们表示为0x30和0x39之间的ascii数字字符串

到目前为止,我只让用户输入了2个字符串,我一直在想,我可以将字符串中的每个数字进行转换,然后进行1乘1的加法,然后将其发送到一个字符串,然后对每个字符串中的每个数字执行此操作,然后将每个加法的结果叠加到同一个字符串中,然后打印出来。对于加法超过9的情况,例如:6+5=11,当我将其叠加到字符串中时,它需要将字符串上的前1和最后一个数字相加,我不太确定如何做到这一点

我不太确定如何完成这项工作,因为我是MIPS新手,当输入是0x30和0x39之间的ascii数字字符时,是否有其他方法对大数求和,或者我的路径是否正确?有人能帮我一些关于代码的想法吗?我真的被困在这里了

下面是获取输入的代码:

.data
num1:   .asciiz "\n Inserte 1st number: "
num2:   .asciiz "\n Inserte 2nd number: "
buffer: .space  51


.text
    # Ask number 1
    la $a0, num1
    li $v0, 4
    syscall
    
    li $v0, 8
    la $a0, buffer
    la $a1, 51
    move $t0, $a0
    syscall
       
    
    # Ask number 2
    la $a0, num1
    li $v0, 4
    syscall
    
    li $v0, 8
    la $a0, buffer
    la $a1, 51
    move $t1, $a0
    syscall

缓冲区设置为51,因为字符串上最多只能有50个字符

请先在C中尝试,然后转换为MIPS。如果你不能用C或伪代码来解决这个问题,那么就努力更好地定义这个问题,直到你能做到为止。若你们用C语言或伪代码编写,首先要确保它真的有效,因为在你们学习汇编时,调试汇编中的设计/算法缺陷是非常困难的。然后将其转换为汇编,而不进行算法改进。