Почему я получаю сообщение об ошибке в коде MIPS для преобразования Hexa в двоичный код? - PullRequest
0 голосов
/ 17 ноября 2018

Здравствуйте, может кто-нибудь, пожалуйста, помогите исправить мой код или посмотрите, где ошибка, чтобы исправить это?Я пытаюсь преобразовать шестнадцатеричное число в двоичное в MIPS, но получаю сообщение об ошибке, когда пытаюсь его запустить, и понятия не имею, где ошибка или как ее исправить.

Мой код:

.data

buffer: .space 8

prompt: .asciiz "\nInput a hexadecimal number: "

asnwer: .asciiz "\nBinary number is: "

.text

main: 

    la $a0, prompt 
    li $v0, 4
    syscall

    li $v0, 8
    la $a0, buffer
    li $a1, 2 

    move $t0, $a0 
    syscall

hextodec: 

    slti $t0, $a0, 0x41
    beq $t0, $zero, letter
    addi $v0, $a0, -0x30

    j end

letter:

    addi $t0, $a0, -0x41
    addi $v0, $t0, 10

end:
    jr $a0

1 Ответ

0 голосов
/ 17 ноября 2018

это говорит о том, что произошла ошибка на ПК = 0x10010004

Вы делаете jr $a0, а не обычный jr $ra, чтобы вернуться к адресу возвратав регистре ссылок.

Переход косвенного регистра устанавливает PC = $a0, но $a0 по-прежнему указывает на buffer от la $a0, buffer.

...