Как мне работать с целыми числами, которые дают значение больше 10 с помощью MIPS?

#mips #fibonacci

#mips #фибоначчи

Вопрос:

Я пытаюсь составить последовательность Фибоначчи с помощью MIPS, и это код, который у меня есть до сих пор.

 main:
    li $t1, 0
    li $t2, 1
    
    add $t3, $t1, $t2
    
    loop:
        add $t3, $t1, $t2
        la $t1, ($t3)
        
        add $t3, $t1, $t2
        la $t2, ($t3)
        j loop
  

Он работает нормально, пока не дойдет до 8, затем следует добавить 5, чтобы получилось 13, но вместо этого в регистре отображается 0x0000000d, затем он полностью запутывает последовательность, каким-то образом появляется 15, затем 22, затем 37.
Я предполагаю, что это как-то связано с переносом, но как мне на самом деле справиться с этим, чтобы он правильно выполнял последовательность?

Спасибо

Комментарии:

1. d в шестнадцатеричном формате равно 13. Ваш отладчик показывает вам шестнадцатеричное число, но 13 десятичных знаков — это то же числовое значение, что и d hex. В некоторых отладчиках есть опция отображения в десятичной системе счисления: например, в меню настроек MARS установлен флажок «Значения, отображаемые в шестнадцатеричной системе счисления» — вместо этого снимите флажок для десятичных значений.

2. Не используйте la для копирования значений между регистрами: используйте move вместо этого.

3. Благодаря вам обоим, теперь это работает. Но он начал работать отлично, как только я снял флажок показывать в шестнадцатеричном формате, я хочу понять, почему он давал мне 15, затем 22 в последовательности вместо 13, затем 21, наверняка он должен был давать мне те же значения, но в шестнадцатеричном формате раньше? Немного запутался в этой части. Спасибо

4. Это всегда работало. Параметр отображения просто изменил радиус отображения отладчика, но в остальном не изменил поведение симулятора или программы.