是否可以对MIPS中的STRING整数执行算术运算?

问题描述 投票:0回答:2

是否可以在MIPS中对STRING整数执行算术运算?例如,如果我有一串整数44051401358,并且想将每个整数乘以某个数字并将它们全部加在一起,我将得到什么结果?

    la $a1, user_input            #assume string is in user input and the length is 11 integers                         
    lb $t0, 0($a1)                      
    lb $t1, 1($a1)
    lb $t2, 2($a1)
    lb $t3, 3($a1)
    lb $t4, 4($a1)
    lb $t5, 5($a1)
    lb $t6, 6($a1)
    lb $t7, 7($a1)
    lb $t8, 8($a1)
    lb $t9, 9($a1)
    lb $s6, 10($a1)


    mul $t0, $t0, 1                                             
    mul $t1, $t1, 3 
    mul $t2, $t2, 7
    mul $t3, $t3, 9
    mul $t4, $t4, 1
    mul $t5, $t5, 3
    mul $t6, $t6, 7
    mul $t7, $t7, 9
    mul $t8, $t8, 1
    mul $t9, $t9, 3 

    add $t0, $t0, $t1
    add $t1, $t1, $t0
    add $t2, $t2, $t1
    add $t3, $t3, $t2
    add $t4, $t4, $t3
    add $t5, $t5, $t4
    add $t6, $t6, $t5
    add $t7, $t7, $t6
    add $t8, $t8, $t7
    add $t9, $t9, $t8

    syscall 1                  #print them

我已尝试执行此操作,但似乎不起作用。也许有一种将字符串转换为整数的方法?不建议使用数组或其他任何东西。我对是否可以使用字符串整数感兴趣。

string assembly integer mips
2个回答
0
投票

如果数组中$a1的字节是数字的ASCII字符,则可以通过从每个数字中减去0的ASCII码(即48)来将它们转换为数字。

您的代码假定字符串长度为11个字符。这是一个相当随意的限制。我敢肯定,给您这项作业的人都不会将其限制为11个字符串。也许您应该写一个循环。

您的muladd部分将忽略第11个字符,即您加载到$ s6的第一个字符。

此外,您的add部分距离很远。跟踪并查看。

[也像其他人说的那样,您的syscall 1序列已关闭。


0
投票

感谢您提供的所有解决方案,但没有帮助。解决方案是将每个整数字符从字符串加载到寄存器:

la $a1, user_input                              
    lb $t0, 0($a1)
    lb $t1, 1($a1)  
    lb $t2, 2($a1)
    lb $t3, 3($a1)
    lb $t4, 4($a1)
    lb $t5, 5($a1)
    lb $t6, 6($a1)
    lb $t7, 7($a1)
    lb $t8, 8($a1)
    lb $t9, 9($a1)
    lb $s6, 10($a1)

然后将每个字符转换为如下所示的正整数:

#convert the string integers to regular integers        
    andi $t0, $t0, 0x0F
    andi $t1, $t1, 0x0F
    andi $t2, $t2, 0x0F
    andi $t3, $t3, 0x0F
    andi $t4, $t4, 0x0F
    andi $t5, $t5, 0x0F
    andi $t6, $t6, 0x0F
    andi $t7, $t7, 0x0F
    andi $t8, $t8, 0x0F
    andi $t9, $t9, 0x0F
    andi $s6, $s6, 0x0F     

然后您可以执行所需的任何算术运算并获得适当的结果。

谢谢大家!!!!

© www.soinside.com 2019 - 2024. All rights reserved.