-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 に答える