2010-11-30 95 views
0

我必须编写一个程序集,它可以对多达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

C声明用于char的2维数组,您的汇编代码用于char *的1维数组。 – 2010-11-30 15:48:22

+0

您的实际任务代码中是否有评论?如果没有评论的话,我会因为打开一个装配项目而遭到殴打。要理解你的代码而没有评论,我必须弄清楚你的系统如何将参数推入堆栈。此外,您的标签名称并不特别描述您要完成的内容。这些'风格'问题虽然不能直接解决您的问题,但可以帮助您理解自己的代码,并且更好地解决问题。 – 2010-11-30 18:18:59

回答

0

我认为你应该比较对所有其他的名字对应的字符(B)每个名称的每个字符(A),然后,最终,交换两个人的名字,如果B和所有的字符之前它是小于A和之前的字符。现在这是我唯一的想法,但我不能在代码中翻译它,我应该考虑一下...

我试图尽可能地解释它,反正我很抱歉,如果它是一个mess .. =)