assembly - 如何从 MIPS 中的 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
推荐阅读
- powershell - Powershell - 清除日志文件后添加空格
- msbuild - 如何绕过 MSBuild 配置中的 RemoveDir 目标命令?
- python - 使用 PJL 和 Python 打印到端口 9100
- python - 从脚本中运行 pytest 并将字符串输出保存到变量
- android - 适用于 iOS 和 Android 的 Swift?
- flutter - 在 Flutter 中等待异步
- ruby-on-rails - Rails - 找不到没有 ID 的推文
- c# - 用字典计算事物而不永久检查是否存在?
- php - 左连接搜索查询中的未知列,例如
- javascript - Dash 的下拉组件,支持单击所选项目