首页 > 解决方案 > 如何从 MIPS 中的 ASCII 码中获取十进制数?

问题描述

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

main:
li   $v0, 12       
syscall         

li $v0, 10
syscall

所以,ASCII 码作为 HEX 数字保存在 $v0 中,但是有没有办法以十进制获取这个对应的 ASCII 码?

标签: assemblyasciimips

解决方案


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

推荐阅读