私はMIPSアセンブリ言語を使い慣れていません。ちょうど学び始めた。私は、ユーザーが入力したテストスコアの文字グレードを表示する必要があるこの問題を抱えています。私はこれまでこれをしてきましたが、私はそれを働かせることはできません。私はいつもそれが想定されif文、論理AND、比較
無効または時々プログラムが終了したりできますD.
得続ける:Score Range Letter Grade
90 to 100 A
80 to 89 B
70 to 79 C
60 to 69 D
0 to 59 F
私が間違ってやっているかを把握助け、私のコードを修正してください!
.data
prompt: .asciiz "Enter a test score [0 to 100] or -1 to stop: "
invalidPrompt: .asciiz "Invalid \n"
A: .asciiz "A \n"
B: .asciiz "B \n"
C: .asciiz "C \n"
D: .asciiz "D \n"
F: .asciiz "F \n"
.globl main
.text
main:
li $v0, 4
la $a0, prompt
syscall
li $v0, 5
syscall
#move $a1, $v0
beq $v0, -1, end # -1 to stop
checkA:
bge $v0, 90, checkB
ble $v0, 100, checkB
li $v0, 4
la $a0, A
syscall
# j main
checkB:
bge $v0, 80, checkC
ble $v0, 89, checkC
li $v0, 4
la $a0, B
syscall
# j main
checkC:
bge $v0, 70, checkD
ble $v0, 79, checkD
li $v0, 4
la $a0, C
syscall
# j main
checkD:
bge $v0, 60, checkF
ble $v0, 69, checkF
li $v0, 4
la $a0, D
syscall
# j main
checkF:
#bge $v0, 0, invalid
ble $v0, 59, end
li $v0, 4
la $a0, D
syscall
# j main
invalid:
blt $v0, 0, end
bge $v0, 100, end
li $v0, 4
la $a0, invalidPrompt
syscall
# j main
j main
end:
#--- TERMINATE ---
li $v0, 10 # terminate program run and
syscall # return control to the OS.
問題の2番目の部分は、ユーザーが-1を入力した後、A、Bなどの数を表示する必要があることです。これについてどうすればいいですか?私は別の登録簿で真であるときに各成績の数を記憶しなければならないことを知っています。
編集:私は
がそう、それは次の右に行くなければなりませんか?しかし、どこで書状を印刷するのですか? – Amjad
両方ともfalseの場合は、文字を印刷します。印刷後、すべてのテストの最後にジャンプします。 – Patrik
また、ユーザーが75を入力した場合、「75 is C」のように出力するにはどうすればよいですか? – Amjad