Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 比较字符串MIPS中的字符_String_Sorting_Assembly_Compare_Mips - Fatal编程技术网

String 比较字符串MIPS中的字符

String 比较字符串MIPS中的字符,string,sorting,assembly,compare,mips,String,Sorting,Assembly,Compare,Mips,我目前正在尝试编写一个MIPS程序,它将对用户输入的字符串进行排序,并对其进行冒泡排序。A在前面,Z在最后 现在我对如何比较字符串中的每个字符感到困惑。例如: 字符串:Stackoverflow 比较前两个字母的S和T。因为S属于前面,所以它保持不变,不会发生交换 我将如何进行下一组要比较的字符,以便T和A将是下一组要比较的字符 我想我会使用lb(load byte)指令,但我不能完全确定是否正确使用偏移量 感谢您的帮助。作为提醒,在循环中,您必须检查当前指针是否>大于索引(基本指针+字符串长度

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

现在我对如何比较字符串中的每个字符感到困惑。例如:

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

我将如何进行下一组要比较的字符,以便T和A将是下一组要比较的字符

我想我会使用lb(load byte)指令,但我不能完全确定是否正确使用偏移量


感谢您的帮助。

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

确保将基指针的副本保存在某个位置(在寄存器或内存中)


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

只需将偏移量增加1。那么它看起来像lb$t1,1($t0)吗?或者是英镑1美元,4美元0.Nvm。由于字符串的长度是任意的,您应该通过向其添加1来增加基指针,作为ASCII的1字符=1字节(您可能希望将基指针复制到另一个寄存器以保留其原始值)。嗯,我有点明白您的意思。为了澄清一下,如果字符串是stackoverflow。我将第一个字节“S”加载到寄存器中,以便将字节“T”加载到另一个寄存器中进行比较我应该使用什么来进行偏移量?您要做的是:(检查长度以便不与终止0进行比较),加载当前字节(例如
S
)和偏移量0,加载下一个字节(例如
T
)和偏移量1,比较,如有必要,交换,然后增加基指针。