この割り当てでは、ユーザが入力した値0〜50に基づいてサイズnの配列を作成する必要があります。これまでのところ、これは以下の通りです。質問全体についてアドバイスがある場合は、それも非常に役に立つでしょう。ユーザ入力nからサイズnの配列を作成する
a)ユーザに0〜50の整数を入力するように要求します。ユーザが0を入力すると、プログラムは停止します。
b)そうでなければ、プログラムは入力値までの数値をメモリ内のワードの配列に格納する。すなわち、0からNまでの値で配列を初期化する。ここでNはユーザが入力した値である。
c)プログラムは、メインメモリからロードして合計したアレイの全項目の値を加算し(Nまで)、次にそれらを加算してメッセージの合計を出力します。 0〜Nは: "です。たとえば、ユーザが5を入力として与えた場合、プログラムは「0から5までの整数の合計は15です」と出力します。
シラバスに指定されているzipファイルとして、あなたの作品を期日までにeラーニングに送信してください。
.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
サイズNの配列に0からNまでの値を格納することはできません。N = 2で試してみましょう:今はサイズ2の配列{[..]、[..]} ..その中に値0,1,2を入れます(圧縮スキームなし)。できません。 N + 1サイズの配列が必要です。 – Ped7g