【发布时间】:2012-06-13 01:47:01
【问题描述】:
我目前正在尝试编写一个 MIPS 程序,该程序将对用户输入的字符串进行排序并对其进行冒泡排序。 A在前面,Z在最后。
现在我有点困惑如何比较字符串中的每个字符。比如:
字符串:堆栈溢出 比较 S 和 T 的前两个字母。由于 S 属于前面,所以它保持不变,不会发生交换。
我将如何继续进行下一组字符进行比较,以便 T 和 A 成为下一组要比较的字符。
我想我会使用 lb(加载字节)指令,但我不完全确定正确使用偏移量。
感谢您的帮助。
【问题讨论】:
-
只需将偏移量增加 1。
-
那么它看起来像这个 lb $t1, 1($t0) 吗?还是 lb $t1, 4($t0)。
-
Nvm。由于字符串是任意长度的,您应该通过将基指针加 1 作为 ASCII 的 1 个字符 = 1 个字节来递增基指针(您可能希望将基指针复制到另一个寄存器以保留其原始值)。
-
嗯,我有点明白你在说什么。所以为了澄清一下,如果字符串是stackoverflow。我将第一个字节“S”加载到寄存器中,因此要将字节“T”加载到另一个寄存器以比较我应该使用什么作为偏移量?
-
你要做的是:(检查长度,以免与终止 0 进行比较),加载偏移量为 0 的当前字节(例如
S),加载下一个字节(例如t) 偏移量为 1,比较,必要时交换,然后递增基指针。
标签: string sorting assembly compare mips