2016-03-28 2 views
1

Я пытаюсь написать MIPS-код суммирующих целых чисел, взятых у пользователя, пока пользователь не вводит символ «*».Выход из добавления цепочки с символом

Выходной будет, как "1 4 3 * Всего: 8"

Я написал условие цикла завершения кода, когда пользователь вводит "-1" вместо "*". Я пробовал писать синтаксис «*» вместо -1, но он не дает суммы. Как я могу выйти из цикла, когда пользователь вводит символ «*»? Это был мой первый вопрос, и вот мой рабочий код для «-1».

# $s0=Sum, $s1=Checkvalue 

     .data     # Data memory area 
prompt: .asciiz "Total: " 
     .text     # Code area 

main: 
     move $s0, $zero  # Sum is made "0" 
     li  $s1, -1   # Checkvalue is made "-1" 

loop: bne $s0, $s0, exit # Infinite loop is described 
     li  $v0, 5   # Read integer into $v0 
     syscall     # Make the syscall read_int 

     move $t0, $v0   # Move the integer read into $t0 

     beq $t0, $s1, exit # If the read value is equal "-1", exit 
     add $s0, $t0, $s0  # Add the read integer to sum 
     j  loop    # Return loop 

exit: 
     li  $v0, 4   # Syscall to print string 
     la  $a0, prompt 
     syscall 

     move $a0, $s0   # Syscall to print string 
     li  $v0, 1 
     syscall 

     li  $v0, 10   # Syscall to exit 
     syscall 

# Reference: www.es.ele.tue.nl/~heco/courses/ProcDesign/SPIM.ppt 

Мой второй вопрос заключается в том, что я использовал «SYSCALL», это мое использование подходит для стандартного ввода и стандартный вывод, системные функции?

Большое вам спасибо.

ответ

2

Вы читаете целые числа, такие как -1, и это ясно. * не является целым числом. Чтобы выйти из цикла, вам нужно будет выяснить, как читать символы и целые числа. Если ваши цифры длинны только на одну цифру, вы можете прочитать все входные данные как символы и преобразовать их в целые числа. В противном случае вам придется читать строки и преобразовывать их в целые числа.

Что касается вашего второго вопроса, вы правы в использовании системного вызова для стандартных функций ввода и вывода.

+0

спасибо. Я опубликовал новый вопрос, связанный с этим [здесь] (http://stackoverflow.com/questions/36296223/comparing-two-strings-in-mips) – bieaisar

Смежные вопросы