我是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'而且我猜这个数字是十六进制还是其他基数。
提前致谢
答案 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 ) ;