アセンブリ名に最大20文字の配列をソートする必要があります。 最大11文字です。私のプログラムは3つのレコードを受け取りますが、 にクラッシュし続けます。それでソートすることはできません。私はバブルソートを使用しています。
これは割り当てなので、私はC++で何も変更できません。アセンブリ内で名前の配列を並べ替える
これらの最初の3行は、C++コードのものです。
私はあなたが他のすべての名前の対応する文字(B)に対するすべての名前のすべての文字(A)を比較すべきであるBとそれに先行するすべての文字がある場合、その後、最終的には、二つの名前を交換することを考えて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
Cの宣言はcharの2次元配列のため、アセンブリコードはchar *の1次元配列用です。 –
実際の割り当てコードにはコメントがありますか?私は、コメントなしに組立プロジェクトを開始するために殴られたでしょう。コメントなしでコードを理解するためには、システムが引数をスタックにプッシュする方法を理解する必要があります。また、あなたのラベル名はあなたが達成しようとしていることを特に説明していません。これらの「スタイル」の問題は、あなたの問題を直接修正することはできませんが、自分のコードを理解するのに役立ちます。 –
私の教授は彼らについては不安ではありませんが、使用すると助けてくれます。ありがとう – justbrianr