-1

我一直在尝试编写代码以按字母顺序对单词进行排序,但遇到了一些问题。这是我的主要 .cpp

#include <iostream>

using namespace std;

extern "C" int Sort (char [] [20], int, int);

void main ()
{
char Strings [10] [20]
                = { "One",
                    "Two",
                    "Three",
                    "Four",
                    "Five",
                    "Six",
                    "Seven",
                    "Eight",
                    "Nine",
                    "Ten"   };
int i;
cout << "Unsorted Strings are" << endl;
for (i = 0; i < 10; i++)
    cout << '\t' << Strings [i] << endl;
Sort (Strings, 10, 20);
cout << "Sorted Strings are" << endl;
for (i = 0; i < 10; i++)
    cout << '\t' << Strings [i] << endl;
}

到目前为止,这是我的代码。

.386
public  _Sort
.model flat
.code
.data

_Sort       proc
        push    ebp
        mov     ebp, esp
        push    esi
        push    edi
        mov     ecx, [ebp + 16]     
        add     ecx, 3
        sar     ecx, 2
        sal     ecx, 2
        sub     esp, ecx    
        mov     edx, esp    

        mov     edi, [ebp + 8]  
        mov     esi, edi

        L1:
        push    ecx
        mov     esi, [ebp +8]

        L2:
        mov     al, [esi]
        cmp     [esi + 20], al
        jg      L3
        mov     eax, [esi]
        xchg    eax, [esi +20]
        mov     [esi], eax

        L3:
        add     esi, 20
        loop    L2
        pop     ecx
        loop    L1

        L4:
        pop     edi
        pop     esi
        pop     ebp
        ret
_Sort       endp

    end

我正在尝试按照书中的说明进行操作,但这与我必须编写的程序有些不同。有人愿意澄清我做错了什么吗?谢谢。

4

1 回答 1

0

好吧,到现在为止,你进展顺利。中的堆栈帧代码Sort已准备就绪,似乎没问题。参数传递也准备好了。

mov esi, edi现在您必须在行和行之间编写冒泡排序本身pop edi

于 2013-11-05T17:40:55.177 回答