Как получить десятичное число из кода ASCII в MIPS? - PullRequest
0 голосов
/ 24 октября 2018

Я хочу прочитать символ и в основном использую этот код:

main:
li   $v0, 12       
syscall         

li $v0, 10
syscall

Итак, код ASCII сохраняется в $ v0 как шестнадцатеричное число, но есть ли какой-то способ получить этосоответствующий код ASCII в десятичном виде?

1 Ответ

0 голосов
/ 25 октября 2018

Hex - это формат сериализации текста для двоичных чисел.Значение в $v0 представляет собой 32-разрядное двоичное число, а не шестнадцатеричное или десятичное.

например, 32 (десятичное) и 0x20 (шестнадцатеричное) - два способа описания значения одного и того же биташаблон (0b0000...00100000).Все это разные способы выражения кода ASCII для пробела, как вы можете получить из li $v0, ' '.

. Вы можете просматривать его как шестнадцатеричный или десятичный, используя отладчик, или используя разные MARS print-вызовы системы счисления, если вы используете код MIPS на эмуляторе MARS.(SPIM имеет только системный вызов print integer, но MARS имеет вызовы для печати в шестнадцатеричном формате, печати в десятичном формате и печати в двоичном формате. http://courses.missouristate.edu/kenvollmar/mars/help/syscallhelp.html)

move  $a0, $v0     # $a0 = integer to print 
li    $v0, 1       # $v0 = system-call number
syscall            # print_integer($a0)  in decimal
...