對於此任務,我需要能夠根據用戶從0到50的輸入值創建一個大小爲n的數組。到目前爲止,這是以下所做的。如果您對整體問題有任何建議,那也會非常有幫助。從用戶輸入n創建一個大小爲n的數組n
a)提示用戶輸入範圍在0到50之間的整數。如果用戶輸入0,程序將停止。 b)否則,程序將從0直到輸入值的數字存儲到存儲器中的字數組中,即用從0到N的值初始化該數組,其中N是用戶輸入的值。
c)然後,程序通過從主存儲器中加載數組,將它們的所有項目的值加到一起(最多N),然後將它們加起來,然後用消息「總和0到N是:「。例如,如果用戶輸入5作爲輸入,則程序輸出「0到5之間的整數之和爲15」。
根據教學大綱中規定的zip文件在截止日期之前將您的作品提交到電子教學。
.data
userPrompt : .asciiz "enter in an integer from zero to fifty "
zeroMessage : .asciiz " you have entered a zero , the program will close "
incorrectEntry : .asciiz " you have entered in a value greater than 50 ,
this is an incorrect value"
InputVal : .word
upperLim : .word 50
Array : .space InputVal
.text
main:
addi $t7 , $zero , 50
li $v0, 4 # load for printing of strings
la $a0, userPrompt
syscall
# take in user input and move the read in number to a temp
li $v0, 5
la $t0 , InputVal
syscall
# Store int A into memory
move $t0 , $v0
beq $t0 , $0 , numbersEqual
la $t1 , upperLim
li $v0 , 1
move $a0 , $t1
syscall
slt $t3 ,$t0 , $t1
sw $t0 , InputVal
#beq $t3 , $0 , ELSE
ELSE :
li $v0 , 4
la $a0 , incorrectEntry
syscall
li $v0 , 10
syscall
numbersEqual:
li $v0 , 4
la $a0 , zeroMessage
syscall
li $v0 , 10
syscall
您不能將值從0到N存儲到大小爲N的數組中。只需嘗試N = 2:現在您的數組大小爲2 {[..],[..]} ..現在嘗試將值0,1,2置入(沒有一些壓縮方案)。無法完成。你需要N + 1大小的數組。 – Ped7g