0

我是 MIPS Assembly 编程的初学者,我想知道在读入数字后如何打印数字的第一个数字。

.data
number_1: .word


.text
#read in first number
li $v0, 5
syscall
sw $v0, number_1

#print first digit
li $v0, 1
lw $a0, number_1
syscall

#end program
li $v0, 10
syscall

例如,如果我输入 590,我只想打印“5”。另外我将如何分别打印接下来的两个数字?

使用上面的代码,它只打印我输入的整数:590 我试过 lb,而不是 lw,但它打印 '78',我猜这个数字是十六进制或其他基数。

提前致谢

4

2 回答 2

1

对于您拥有的这个号码,您需要分别获得第 2 位和第 3 位的数字 mod 10 或 mod 100。模数是您的下一个数字,您可以重复此操作,直到除法的结果为 0。假设您不使用浮点数。

我对 MIPS 汇编的建议始终是使用 C 等高级语言提供通用解决方案,这里有一个类似于我上面概述的解决方案:

int n = 590 ;
while( n >= 10 )
{
    printf( "%d\n", n % 10 ) ;
    n = n / 10 ;
}
printf( "%d\n", n ) ;
于 2017-11-08T16:08:36.267 回答
0

数字以十六进制存储在内存中。你想要的是十进制的第一个数字,必须计算出来。对于 3 位数字,整数除以 100 会得到您的结果。可以在此处找到一般解决方案。

于 2014-09-29T02:16:14.500 回答