将整数转换为其十六进制值以进行打印
假设我将一个整数分配给 $a0,我该如何以十六进制形式打印该整数?
Say I take an integer assigned to $a0, how do I go about and print the integer in its Hexadecimal form?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用系统调用 34。
MARS 系统调用
如果您使用的模拟器没有该系统调用,或者您只想查看必要的字节,则需要手动执行此操作。最简单的方法是迭代。获取 10 个字节的字符串(8 个十六进制值和前导 0x)。
1) 按位与常量 15 的 $a0 相加。
2) 将结果转换为等效的 ASCII 十六进制值。查找表会干净且高效。
3) 在字符串空间中存储等效的十六进制值。请记住小端顺序问题。
4) 将 $a0 逻辑右移 4。
5) 转到 1。
执行此操作,直到 $a0 为 0,并且您应该在字符串中获得十六进制值,然后可以打印该值。
Use syscall 34.
MARS syscalls
If you are using a simulator which does not have that syscall, or you want to see only the necessary bytes, you will need to do it manually. The easiest approach would be iterative. Get a string of 10 bytes (8 hex values and leading 0x).
1) Bitwise and $a0 with constant 15.
2) Convert result to equivalent hex value in ASCII. A lookup table would be clean and efficient.
3) Store equivalent hex value in space for string. Keep in mind little endian issues.
4) Logical right shift $a0 by 4.
5) Goto 1.
Do that until $a0 is 0 and you should have the hex value in a string, which you can then print.