Как напечатать значение .word, которое находится в памяти в ассемблере, без использования la / li - PullRequest
0 голосов
/ 02 сентября 2011

Как распечатать значение .word, которое находится в памяти в сборке, без использования la/li? Я могу использовать только основные функции. Я могу напечатать .asciiz, но я не знаю, что я делаю неправильно, что он не печатает значения (целые числа) в адресах памяти :(

Вот мой код для распечатки моего asciiz:

lui $a0, 0x1001
addi $a0, $a0, 12 # set the address to my string location
addi $v0, $0, 4 
syscall

Я написал один и тот же код, но с разными адресами, но он ничего не печатает. Я также пытался найти, но не смог найти точного ответа на этот вопрос.

Пожалуйста, сообщите. Любая помощь будет оценена. Пожалуйста, поправьте меня, если я что-то не так понял. Заранее спасибо.

1 Ответ

1 голос
/ 02 сентября 2011

В вашем коде есть пара ошибок.

Во-первых, если вы хотите напечатать целое число, вы должны использовать системный вызов # 1 вместо # 4

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

Ваш код должен выглядеть примерно так:

  lw $a0, 0x100C   # Load the contents of word stored at address 0x1000 + 12
  addi $v0, $0, 1  # Set service #1 (which prints an integer)
  syscall          # Do the system call
...