如何在MIPS汇编编程中打印数字的第一个数字?

时间:2014-09-28 18:46:05

标签: assembly mips digits mars-simulator

我是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; 78'而且我猜这个数字是十六进制还是其他基数。

提前致谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

对于这个号码,您需要分别获得第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 ) ;