MIPS:如何处理存储在程序参数中的字符串?

时间:2019-03-03 05:54:45

标签: assembly memory-management 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, 36,以检查是否获得了该值。
主要问题是$t1$t3具有正确的内存地址。我可以看到,在$a1的内存地址中,为字符串位置存储了两个单独的内存地址。 $t1$t3包含这些字符,而$t2$t4应该移过来并读取第二个字符。

由于某种原因,无论程序参数的输入是什么,它总是打印2。如果将syscall更改为34,它将打印0x00000002,如果将其更改为11,则打印char,如下所示通常,它将打印一个框。我只需要确定它是x代表十六进制还是b代表二进制,因此我可以相应地编辑输入。任何帮助都会很棒。

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

0 个答案:

没有答案