Assembly 反向整数

Assembly 反向整数,assembly,integer,mips,reverse,zero,Assembly,Integer,Mips,Reverse,Zero,我正在研究一个整数反转的MIPS算法。。。。代码如下: li $t3, 0 move $a2, $t3 beq $s0, 0, goto loop1: divu $s0, $t1 # Divide number by 10 mflo $s0 # $s0 = quotient mfhi $t2 # $t2 = reminder mul $a2, $a2, $t1 # reverse=

我正在研究一个整数反转的MIPS算法。。。。代码如下:

    li $t3, 0
    move $a2, $t3
    beq $s0, 0, goto
loop1:
     divu $s0, $t1      # Divide number by 10
     mflo $s0           # $s0 = quotient
     mfhi $t2           # $t2 = reminder
     mul $a2, $a2, $t1  # reverse=reverse*10
     addu $a2, $a2, $t2 #         + reminder    
     bne $s0, 0,loop1   
goto: 
     move $s0, $a2
     j nextalgorithm    # Here $a2 contains the reversed integer
但问题是输入数字中有0。。。。示例:010020变为-->2010


如何修复此代码?thx;)

如果您的输入和输出是数字的(与文本相反),那么当然会省略前导零。因此,您的输入不是
010020
而是
10020
。相反,这将产生
02001
,其中前导零再次被省略是
2001
,这正是您的代码产生的(与您声称的相反)


如果要保留前导/尾随零,则必须使用文本格式或填充到某个固定长度。

什么示例?使用文本?这就是你每天遇到的反字符串问题。例如,将int转换为string,将string反转,然后再次在int中转换。。。。我很明白你的第一句话,那是行不通的。如果您有数字输入,则不会有任何前导零,因为数字可以有任意数量的前导零,而无需更改值<代码>100和
000100都是100。同样,如果输出为数字,则不能返回前导零。文本方法只有在输入和输出是字符串而不是数字的情况下才有效。但问题也在于双/三。。。两个数字之间的零。。。例子。。。10001变成101。。。关于这一点,有一个解决方案吗?
10001
我正确地得到了你的代码(我唯一添加的是一个
li$t1,10
,我想你也有)。嵌入的零起作用。