MIPS Memory Mapped IO полученный байт, вызывающий ошибку

#memory #io #mips

#память #io #mips

Вопрос:

Для университета я пытаюсь использовать Memory Mapped IO для ввода-вывода 6 символов, сохранить их в буфере, затем распечатать буфер. Приведенный ниже код для получателя, $ t0 — это адрес получателя. Он проверяет, готов ли приемник, если да, получает данные. Прямо сейчас я просто пытаюсь убедиться, что я получаю данные. Итак, я пытаюсь распечатать его, но получаю синтаксическую ошибку, и я не могу понять, почему.

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

 lw   $t1, 0($t0)           # receiver control
andi $t1, $t1,0x0001       # check if ready
beq  $t1, $zero,readloop   # if not ready
lb   $s0, 4($t0)           # receiver data

li  $v0, 11               # print char
li  $a0, $s0              # takes address of string as argument <--- This is where the compiler is saying theres a syntax error
syscall
  

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

1. Очень сложно комментировать фрагменты кода.

2. Ну, что li $a0, $s0 вообще предполагается делать? li предназначен для немедленной загрузки и $s0 не является немедленным. Возможно, move это подходящая инструкция для использования, но трудно сказать, учитывая ограниченную информацию, которую вы нам предоставили.