在程序集中对名称数组进行排序

时间:2010-11-30 14:47:31

标签: assembly

我必须在程序集中编写一个过程,对最多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

1 个答案:

答案 0 :(得分:0)

我认为您应该将每个名字的每个字符(A)与所有其他名称的相应字符(B)进行比较,然后,如果B及其前面的所有字符都小于A,则最终交换两个名称。以前的人物。现在这是我唯一的想法,但我不能在代码中翻译它,我应该考虑它还有一段时间......

我试着尽可能地解释它,无论如何我很抱歉,如果这是一团糟...... =)