首页 > 解决方案 > MIPS:如何操作存储在程序参数中的字符串?

问题描述

所以基本上程序的输入是程序参数部分中的 2 个单独的字符串。它们可以是 0x...(十六进制)或 0b...(二进制)。我到目前为止的代码是:

li $v0, 36
lw $t1, ($a1)
lb $t2, 2($t1)
syscall

li $v0, 36
lw $t3, 4($a1)
lb $t4, 2($t3)
syscall

' li $v0, 36s 只是打印来检查我是否得到了价值。
主要问题是$t1并且$t3具有正确的内存地址。我可以看到在$a1的内存地址中为字符串位置存储了两个单独的内存地址。$t1$t3包含那些,而$t2应该$t4转移并阅读第二个字符。

出于某种原因,无论程序参数的输入是什么,它总是打印 2。如果我将系统调用更改为 34,它将打印0x00000002,如果我将其更改为 11 以打印一个字符,像往常一样,它将打印一个框。我只需要确定它是十六进制的 x 还是二进制的 b ,所以我可以相应地编辑输入。任何帮助都是极好的。

编辑:即使我在 2 班或 1 班时执行 syscall 11,它也会打印一个框。像 [] 而不是实际字符。

标签: assemblymemory-managementmips

解决方案


推荐阅读