Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ошибка MIPS: не выводятся подсказки в новой строке

Автор вопроса: MichaelОтветов: 1

Я пытаюсь разработать базовый калькулятор с MIPS. Я запрашиваю у пользователя первый операнд, оператор, а затем второй операнд. Я получаю и сохраняю первый операнд, но после того, как пользователь вводит оператор, подсказка для второго операнда появляется в той же строке сразу после ввода пользователя. Вот пример того, что я имею в виду:

Enter first number: 8
Select operator: -Enter second number: 3
Result: 5
-- program is finished running (dropped off bottom) --

"Введите второе число" было напечатано сразу после знака "минус". Я использую строку чтения с длиной строки = 2, чтобы получить оператор. Вот соответствующий код для этого:

    GetOperator:
la $a0, prompt2     #Load prompt 2
add $v0, $zero, 4   #Load syscall 4
syscall
la $a0, operator
add $a1, $zero, 2
add $v0, $zero, 8   #Load syscall 8
syscall         #Store the input string to memory
jr $ra

"оператор" - это переменная .word, которую я объявил в .data. Затем я использую системный вызов 4, чтобы напечатать следующее приглашение. Я думаю, что здесь происходит какая-то тонкая вещь, которую я упускаю. Я все еще новичок в MIPS, поэтому любые указатели были бы потрясающими.

  • Нет причин, по которым это должно происходить. Обычно строка продвигается вперед, когда пользователь нажимает клавишу ввода. Чтобы исследовать эту проблему, нам действительно нужно увидеть остальную часть входной последовательности (то есть то, что вы вызываете, прежде чем выводить второе приглашение) Konrad Lindenbach 01.10.2013

outputmips

Ответы

Ответ 1 · Michael

Вы можете напечатать последовательность возврата каретки/перевода строки перед строкой "Введите второй номер".

# 13=carriage return, 10=linefeed, 0=null terminator
CRLF: .byte 13,10,0

Используйте системный вызов 4, чтобы напечатать его.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы