Загрузить позицию индекса, используя введенное пользователем значение, хранящееся в регистре

Итак, у меня есть простая программа на MIPS, которая принимает пользовательский ввод для значения индекса для массива слов, который существует в памяти. Итак, скажем, слово загружено как таковое:

Array: .word 0xAABBCCDD:16

Поэтому я принимаю пользовательский ввод и сохраняю его в $t0. Мой вопрос в том, как мне загрузить этот конкретный индекс из моего слова? Я не могу придумать способ получить значение третьего байта в регистре. Например, предположим, что пользователь вводит значение 3 в приглашении.

Input value: 3

Тогда я хотел бы вернуть значение 0xAA.

Output: 0xAA

Я не могу придумать способ получить правильное смещение при нахождении значения индекса в регистре. Я знаю, что не могу использовать два регистра при использовании lw, потому что для этого недостаточно памяти. Итак, есть ли какая-то простая процедура, которую я здесь пропускаю? Спасибо.


person Slicktopher    schedule 03.02.2014    source источник


Ответы (1)


Предположим, что введенное пользователем значение находится в регистре $t1:

la    $t0,ARRAY   # starting address of array
addu  $t1,$t0     # add starting address to user input value
lb    $t2,($t1)   # load $t2 with the byte at (ARRAY + user_input)
person markgz    schedule 03.02.2014
comment
Разве мне не нужно addu $t2, $t1, $t0 - person Slicktopher; 04.02.2014
comment
Зачем вам это нужно? - person markgz; 04.02.2014
comment
Я думаю, это была просто программа, которую я использовал, MARS. Я только что сделал addu $t1, $t1, $t0 - person Slicktopher; 04.02.2014
comment
Я думаю, это была просто программа, которую я использовал, MARS. Я только что сделал addu $t1, $t1, $t0 Итак, теперь у меня есть 0x10010003, загруженный в регистр, но как мне конкретно напечатать это как целое число? Все это загружается в $a0, когда я делаю add $a0, $t2, $zero Итак, если бы я делал li $v0, 1 add $a0, $t2, $zero syscall, он выводит значение 0xFFFFFFFF, которое равно -1, используя MARS. - person Slicktopher; 04.02.2014