Это домашнее задание, поэтому я собираюсь дать вам подсказки сейчас и добавить к нему, когда вы идете. Несколько вещей:
1/Вы должны сообщить нам, что это такое предположительно. Это самое главное.
2/Вы сохраняете адрес array1 в t0, затем повторно используете t0 в первом цикле.
3/Вы, кажется, путаетесь с адресами и содержимым этих адресов ("la $s0, valuec"
и "addu $t0, $t1, $s0"
).
UPDATE:
На самом деле я должен подписать на некоторое время, так что я выложу свое решение так, чтобы не оставить в беде.
Путаница, о которой я упомянул ранее, заключалась в том, что вы загружаете два адреса в $ t1 и $ s0, а затем добавляете их вместе, чтобы получить другой адрес - это, вероятно, далеко за пределами вашей области данных (вы должны действительно добавляем адрес и смещение).
Это в основном проблема, с которой вы столкнулись с вашим кодом (оба нули печатаются и сбой). Лучше всего было бы исправить это и ссылаться на мой код ниже только в крайнем случае, чтобы увидеть, как бы я это сделал. Копирование кода вам не поможет в долгосрочной перспективе, и вам было бы разумно предположить, что ваш педагог также проверяет все веб-сайты для плагиата.
Это код, который я придумал (быстро, так что вам нужно его протестировать - у него могут быть ошибки). Я предлагаю вам прочитать комментарии в отлично подробно, чтобы понять, что он делает.
Я вернусь через несколько минут, чтобы увидеть, как вы поживаете. Приветствия.
.text
main:
# Initialization of array pointers and loop
la $t0, array1 # address of array 1
la $t1, array2 # address of array 2
li $t2, 1 # element number
li $t3, 6 # upper limit of elements
# Process each word in array 2, adding 10 and placing
# into array 1.
Loop:
lw $t3, 0($t1) # get word from array 2
addi $t3, $t3, 10 # add 10 to word
sw $t3, 0($t0) # store word into array 1
addi $t0, $t0, 4 # move to next entry in array 1 and 2
addi $t1, $t1, 4
addi $t2, $t2, 1 # increment element number
blt $t2, $t3, Loop # loop until all elements done
# Initialize printing loop by going back to start of array 1
la $t0, array1 # address of array 1
li $t2, 1 # element number
# Loop through array 1, printing each element.
pLoop:
lw $t2, 0($t0) # get word from array 1
li $v0, 1 # 'print' command code
move $a0, $t2 # needs value in $a0
syscall # print it
addi $t0, $t0, 4 # move to next entry in array 1
addi $t2, $t2, 1 # increment element number
blt $t2, $t3, Loop # loop until all elements done
li $v0, 10 # 'terminate' command code
syscall # exit
# Data arrays for array 1 and 2
.data
array1: .word 0,0,0,0,0
array2: .word 1,2,3,4,5
Я думаю, что это обработано окончательным syscall с кодом команды $ v0, установленным в 10. – paxdiablo