【发布时间】:2011-05-09 23:21:15
【问题描述】:
我正在开发一个将在 pcspim 上运行的 mips 程序,我需要一些帮助。程序的描述是:编写一个程序,读取一个字符串(从键盘),将它存储在内存中,计算并打印每个字符的频率;然后它反转字符串并打印反转的字符串。
到目前为止我是...
.data # Data declaration section
userString: .space 256
Prompt: .asciiz "\nEnter a word: "
newLine: .asciiz "\n"
.text
main: # Start of code section
li $v0, 4
la $a0, Prompt
syscall
li $v0, 8
la $a0, userString
li $a1, 256
syscall
jr $ra
la $a0, userString
move $t0, $a0
lb $t1, 0($t0)
li $v0, 4
move $a0, $t1
syscall # prints first letter of word
现在我只是想看看我是否真的将输入存储到了 userString 数组中。所以最后我试图打印出第一个字母。但它似乎没有打印任何东西。
有什么建议吗? 谢谢。
【问题讨论】:
-
我从未使用过 PCSPIM,但看起来
syscall4 打印的是字符串而不是字符。您可能想尝试删除lb指令并将整个字符串移动到$a0。 (它已经在那里了,但你可以在那里做一个move $a0, $t0。 -
我已经忘记了我对 MIPS 汇编的了解,但在前面几行中,您使用 la $a0, Prompt 展示了 Prompt 中的内容。那么你为什么不通过:la $a0,userString 显示 userString 的内容?为什么所有其他说明可能正确也可能不正确?
-
是的,我只是不确定如何将用户输入字符串存储到数组中。我在网上四处查看并尝试了他们的一些代码。所以我不确定。我真的很讨厌mips。 :(
标签: mips