syscall 8を使用して、ユーザーが数字(0〜9)のみの有効な入力を入力したかどうかを確認する効率的な方法を見つけるのに苦労しています。
入力の長さは4バイト(1ワード)で、
各バイト(char)が数値かどうかを確認する必要があります。
ループを実行して、そのASCII値が48( '0' ascii decimel value)
よりも小さいか57( '9' ascii decimel value)よりも大きい かどうかを確認しようと考えました。
これはこれを行うための効率的な方法ですか?
もしそうなら、MIPSでそのようなifステートメントを実装する正しい方法は何ですか?
例えば
if (x < 48) or (x > 57) {...}
*注:ループを停止する場所を知るためのフラグがあると仮定します
*編集:これはコードの一部であり、明確にするために:
.data
number:
.word w1
.text
.globl main
main:
la $a0, number # read the number input from user
li $a1, 6 # buffer set to max of 4 bytes (32 bits),
# assuming the input is no more than the length of a word,
# + 2 reserved bytes
li $v0, 8
syscall