如何从 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
我想读一个字符,我基本上使用这个代码:
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