Чтобы напечатать подсказку и получить один символ, я думаю, вам нужно загрузить немедленно $v0
правильное значение для syscall
. Согласно файлу справки MARS 4.5, таблица доступных служб предполагает, что ваш код должен выглядеть примерно так, как показано в строке 24:
la $a0, prompt3
li $v0, 4
syscall
li $v0, 12
syscall
То есть, вы хотите "напечатать строку", которая находится в prompt3
, а затем "прочитать символ", чтобы получить один символ. Первый syscall
, который вы делаете, - 12, что означает «читать символ», поэтому он ждал, пока вы что-то введете.
Я рекомендую вводить магические числа, такие как 4 и 12, которые представляют определенные системные вызовы, в код как константы:
.eqv SYS_PRINT_STRING 4
[...]
li $v0, SYS_PRINT_STRING