Je dois écrire une procédure dans l'assemblage qui trie un tableau de jusqu'à 20 noms, max 11 caractères. Mes programmes acceptent 3 enregistrements, mais continuent de se briser à tout le reste et je ne peux pas le faire pour trier. J'utilise le tri à bulles.
BTW, je ne peux rien changer en C++ puisqu'il s'agit d'une affectation.Tri d'un tableau de noms dans l'assemblage
Ces 3 premières lignes proviennent du code 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
La déclaration C est pour un tableau à deux dimensions de char, votre code d'assemblage est pour un tableau à 1 dimension de char *. –
Y a-t-il des commentaires dans votre code d'affectation? J'aurais été battu pour tourner dans un projet d'assemblage sans commentaires. Pour comprendre votre code sans commentaires, je dois comprendre comment votre système pousse les arguments sur la pile. En outre, vos noms d'étiquettes ne sont pas particulièrement descriptifs de ce que vous essayez d'accomplir. Ces problèmes de «style», bien qu'ils ne règlent pas directement votre problème, pourraient vous aider à comprendre votre propre code et ses failles. –
Mon professeur n'est pas difficile avec eux, mais je comprends qu'ils aident quand ils sont utilisés. Merci – justbrianr