我想读取一个字符,基本上使用了以下代码:
main:
li $v0, 12
syscall
li $v0, 10
syscall
因此,ASCII代码以十六进制数字形式保存在$ v0中,但是有什么方法可以使对应的ASCII代码以十进制形式显示?
答案 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