如何从MIPS中的ASCII码获取小数?

时间:2018-10-24 18:49:19

标签: assembly ascii mips

我想读取一个字符,基本上使用了以下代码:

main:
li   $v0, 12       
syscall         

li $v0, 10
syscall

因此,ASCII代码以十六进制数字形式保存在$ v0中,但是有什么方法可以使对应的ASCII代码以十进制形式显示?

1 个答案:

答案 0 :(得分:1)

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

例如32(十进制)和0x20(十六进制)是描述同一位模式(0b0000...00100000)的值的两种方法。所有这些都是表达空格的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