我必须在汇编中编写一个过程,对最多20个名称的数组进行排序,最多11个字符。我的程序接受3条记录,但在其他地方总是崩溃,我不能让它排序。我使用冒泡排序。
顺便说一句,我不能在C++中更改任何东西,因为这是一个赋值。
前3行来自C++代码。
extern "C" void Sort (char [] [11], char [], double [], long);
char Names [20] [11];
Sort (Names, LetterGrades, Averages, NumStudents - 1);
_Sort proc
mov ecx, [esp +16]
dec ecx
L1: push ecx
mov esi, [esp + 4]
L2: mov eax, [esi]
cmp [esi + 11], eax
jg L3
xchg eax,[esi + 11]
mov [esi],eax
L3: add esi,11
loop L2
pop ecx
loop L1
L4: ret
_Sort endp发布于 2010-12-01 01:58:08
我认为你应该将每个名字的每个字符(A)与所有其他名字的相应字符(B)进行比较,最后,如果B及其前面的所有字符都小于A和之前的字符,则调换这两个名称。现在这是我唯一的想法,但我不能把它翻译成代码,我还是应该考虑一下……
我已经尽力解释了,不管怎么说,如果弄得一团糟,我很抱歉..=)
https://stackoverflow.com/questions/4314972
复制相似问题