【发布时间】:2019-03-29 06:50:12
【问题描述】:
我想读一个字符,我基本上使用这个代码:
main:
li $v0, 12
syscall
li $v0, 10
syscall
那么,ASCII 码作为 HEX 数字保存在 $v0 中,但是有什么方法可以得到这个对应的十进制 ASCII 码吗?
【问题讨论】:
我想读一个字符,我基本上使用这个代码:
main:
li $v0, 12
syscall
li $v0, 10
syscall
那么,ASCII 码作为 HEX 数字保存在 $v0 中,但是有什么方法可以得到这个对应的十进制 ASCII 码吗?
【问题讨论】:
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
【讨论】: