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

Я пытаюсь разработать базовый калькулятор с 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, поэтому любые указатели были бы потрясающими.


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


Ответы (1)


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

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

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

person Michael    schedule 30.09.2013
comment
Просто добавьте \n к строке - person Konrad Lindenbach; 01.10.2013