我是MIPS彙編語言的新手。剛開始學習。我有這個問題,我必須顯示用戶輸入的測試分數的字母等級。到目前爲止,我已經完成了這項工作,但我無法完成這項工作。我始終保持了無效或有時在節目結束或給予D.如果語句,邏輯AND,比較
假設:
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.
問題的第二部分是我有顯示A的,B的等後用戶輸入-1的數目。我怎麼去解決這個問題?我知道我必須在單獨的註冊表中存儲每個等級的計數,並且保持遞增,但不知道這是如何完成的。
編輯:我使用MARS 4.1工具在Windows 7
所以如果兩個都是假的,然後它去旁邊一個?但是我在哪裏打印信件等級? – Amjad 2012-02-23 13:44:50
如果兩者都是錯誤的,那麼你打印這封信。打印完成後,跳到所有測試的結尾。 – Patrik 2012-02-23 13:47:25
另外,如果用戶輸入75例如,我怎麼輸出像「75是C」? – Amjad 2012-02-23 13:57:18