如何从 MIPS 中的 ASCII 码中获取十进制数?

How to get the decimal number from ASCII code in MIPS?

我想读一个字符,我基本上使用这个代码:

main:
li   $v0, 12       
syscall         

li $v0, 10
syscall

那么,$v0 中的 ASCII 码是以十六进制数的形式保存的,但是有什么方法可以得到对应的十进制 ASCII 码吗?

Hex 是二进制整数的文本序列化格式。 $v0 中的值是一个 32 位二进制数,不是十六进制或十进制。

例如32(十进制)和0x20(十六进制)是描述相同位模式(0b0000...00100000)值的两种方式。所有这些都是表达 space 的 ASCII 码的不同方式,就像您从 li $v0, ' '.

中得到的一样

您可以使用调试器将其查看为十六进制或十进制,或者如果您是 运行 MARS 仿真器上的 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