「日と月」を MIPS の年間日数に変換する方法。
(このチュートリアルでは、文字列から int への変換について説明します。)
最初に理解しておくべきことは、入力が文字列であり、int として扱われないことです。そしてストリング。したがって、最初の 2 文字を int に変換する必要があります。残りを文字列として扱います。月の文字列を検証し、プログラムがその時点から実行を継続できるように、元の場所に戻る関数が必要になります。
整数への変換。文字列の例: 1 月 31 日
変数を 1 番目と 2 番目の文字に割り当て、変数を 1 番目と 2 番目の文字に向けます。
次のように、それぞれ $t4 と $t5 を使用します。
lbu $t4,0($a0) # 次の文字を取得 lbu $t5,1($a0) # 2 番目の文字を取得
Ok。これで、変数が指定され、3 と 1 の変数ができました。これから説明する必要があるのは、マシンで文字列がどのように表現されるかを理解して、文字列をどう処理するかを理解することです。
マシンでのデータの
表現例として、1月31日を16進コードで表現すると以下のようになります。このトピックでは、文字がバイナリでどのように表現されるかについては説明しません。このトピックの別のチュートリアルを確認してください。
3 1 space J a n u a r y 00 characters
51 49 74 97 110 117 97 114 121 00 ASCII representation of strings
ASCIIコード表参照
0 で始まり、null である 00 で終わります。
整数の 0 の 16 進コードは 48 です
整数の 1 の 16 進コードは 49 整数の 2 の 16 進コードは 50 整数の 3 の 16 進コードは 51
そして、それが私たちが必要としているものです。
次に、整数に戻すために、48 個の ASCII コード 51 – 48 = 3 および 49 – 48 = 1 を減算する必要があります。
次に、最初の文字を 10 倍し、それを 2 番目の文字の結果に追加します。これにより、変換の結果が得られ、int になります。
3 * 10 + 1 = 31
ユーザーが挿入したのとまったく同じ図であることがわかりますか? しかし、彼/彼女が数値の後に月を追加すると文字列になり、read_int 5 を使用できません。最も一般的な間違いは、入力を文字列ではなく整数と文字列として扱うことです。
このメソッドの表現は、MIPS で以下に示されています
addi $t4,-48 # minus first by 48
mul $t4,$t4,10 # multiply by 10
addi $t5,-48 # minus second by 48
add $t7, $t4, $t5 # sum the two into $t7
これで、プログラムで $t7 を使用して、結果またはブランドを等号で表示することができます。整数になったので機能します。
年を取得する方法は上記のとおりです。プログラムでどのように機能するかを確認するには、3 週間以内に www.computersciencegigs.com の私の Web サイトに表示されます。
残っているのは、残りの月のラベルを作成し、前月の合計を最後の 2 行目に追加することだけです。1 月は 0、2 月は 31、3 月は 59 などとなります。