2010-11-30 62 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 .. =)