Обработка нецифрового пользовательского ввода для системного вызова MARS read-integer? - PullRequest
0 голосов
/ 06 мая 2018

Я делаю простую программу автостоянки, которая принимает ввод от пользователя и разветвляет метку в соответствии с вводом.

Проблема в том, что программа всегда внезапно завершается, если пользователь вводит данные с типом данных, отличным от целого (например, "a" или любые алфавиты)

Ниже мой код (который относится к части ввода):

    li $v0,5 #system call to get input from user
    syscall
    li $t1,2
    beq $v0,1,park # go to "park" section of codes if input is 1
    beq $v0,2,exit # go to "exit" section of codes if input is 2
    beq $v0,0,end # go to "end" section of codes if input is 0
    la $a0,statement6 #load statement6 into $a0
    li $v0,4 #call code for print statement2
    syscall
    j start

Как обработать неправильный тип данных на ассемблере, чтобы программа не заканчивалась, если пользователь вводит данные с неправильным типом данных (или отличным от int).

Есть идеи?

1 Ответ

0 голосов
/ 06 мая 2018

Используйте системный вызов, который читает текст, а не определенный тип данных, а затем проверьте текст на предмет правильного формата и символов при преобразовании его в значение.

...