0

私は MIPS アセンブリでのプログラミングの初心者であり、数値を読み込んだ後に数値の最初の桁をどのように出力するのか疑問に思っていました.

.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」のみを印刷します。さらに、次の 2 つの数字を別々に出力するにはどうすればよいでしょうか。

上記のコードを使用すると、入力した整数のみが出力されます。

前もって感謝します

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 に答える