0

那里我目前正在尝试编写一个 MIPS 程序,该程序将对用户输入的字符串进行排序并对其进行冒泡排序。A在前面,Z在最后。

现在我有点困惑如何比较字符串中的每个字符。例如:

字符串:Stackoverflow 比较 S 和 T 的前两个字母。由于 S 属于前面,因此它保持不变并且不会发生交换。

我将如何继续进行下一组字符进行比较,因此 T 和 A 将是下一组要比较的字符。

我想我会使用 lb (加载字节)指令,但我不完全确定正确使用偏移量。

谢谢您的帮助。

4

1 回答 1

1

提醒一下,在循环中,您必须检查当前指针是否 > 大于索引(基指针 + 字符串长度 - 1),或者您也可以检查索引处的值(当前指针 + 1)是否等于0 (NUL) 字符串终止字符与否。

确保将基指针的副本保存在某处(在寄存器或内存中)。

在每个循环中,您将在当前指针的偏移量为 0 的加载字节处读取当前指针当前指向的字符,并在当前指针的偏移量为 1 的加载字节处读取下一个字符。然后您可以进行比较和交换。之后,将当前指针增加 1(因为 ASCII 中的字符是 1 个字节,所以您将仅将地址增加 1 个字节)。

于 2012-06-13T02:26:49.363 回答