我必须在程序集中编写一个过程,对最多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
答案 0 :(得分:0)
我认为您应该将每个名字的每个字符(A)与所有其他名称的相应字符(B)进行比较,然后,如果B及其前面的所有字符都小于A,则最终交换两个名称。以前的人物。现在这是我唯一的想法,但我不能在代码中翻译它,我应该考虑它还有一段时间......
我试着尽可能地解释它,无论如何我很抱歉,如果这是一团糟...... =)