配列の最初の 2 つの要素が上書きされる MIPS コードで問題が発生しています。ユーザーからの 4 つの異なる入力をそれぞれ 1 バイト受け入れ、サイズ 4 の「.space」に格納します。すべてを印刷すると、最初の 2 つの要素が空白になります。これは改行と関係があると考えていますが、完全にはわかりません。これが私が取り組んでいるものです:
.data
msg: .asciiz "Enter the band colors\n"
band12: .asciiz "Value bands (first 2 band colors)\n"
bandM: .asciiz "Multiplier band\n"
bandT: .asciiz "Tolerance band\n"
buffer: .byte '0'
userInput: .space 4
normalized: .word 0
tolerance: .ascii ""
.text
main: li $v0, 4
la $a0, msg
syscall
la $a0, band12
syscall
la $t0, userInput #store the input array in a register
li $v0, 8 #read the first input into buffer
la $a0, buffer
la $a1, 8
syscall
#store the input into the first element of the input array
lb $t1, buffer
sb $t1, ($t0)
#read the second input into buffer
la $a0, buffer
la $a1, 8
syscall
lb $t2, buffer #store the input into the second element of the input array
sb $t2, 1($t0)
#3rd band message
li $v0, 4
la $a0, bandM
syscall
#read in 3rd band
li $v0, 8
la $a0, buffer
la $a1, 8
syscall
#move to 3rd array index
lb $t3, buffer
sb $t3, 2($t0)
#last prompt
li $v0, 4
la $a0, bandT
syscall
#read tolerance band
li $v0, 8
la $a0, buffer
la $a1, 8
syscall
#move to 4th array index
lb $t4, buffer
sb $t4, 3($t0)
li $v0, 11
lb $a0, ($t0)
syscall
lb $a0, 1($t0)
syscall
lb $a0, 2($t0)
syscall
lb $a0, 3($t0)
syscall
jr $ra
li $v0, 10
syscall
これは QtSpim からの出力です。