J'ai le code d'assemblage c suivant qui trie un tableau dans l'ordre décroissant, je l'ai testé en utilisant 8086emu et cela a fonctionné à 100% mais au studio visuel il m'a donné des résultats erronés et une erreur. Des idées ou comment résoudre ce problème.C erreur d'assemblage pour un tableau donné
Mon code: -
#include "stdafx.h"
#include <iostream>
using namespace std;
void main(void)
{
short *arr;
arr = new short[10];
cout << "please enter the array elements" << endl;
for (int i = 0; i < 10; i++)
{
cin >> arr[i];
}
short *p;
p = arr;
_asm{
START:
mov cx, 9
mov esi, p
LABEL2 :
MOV ax, [esi]
CMP ax, [esi + 2]
JGE LABEL1
MOV bx, [esi + 2]
MOV word ptr[esi], bx
MOV word ptr[esi + 2], ax
JMP START
LABEL1 :
inc esi
inc esi
LOOP LABEL2
}
for (int i = 0; i < 10; i++)
{
cout << arr[i] << endl;
}
}
la distance à travers l'ensemble est-il? Qu'avez-vous fait pour déboguer cela? –
@PaulBentley Je n'ai pas débogué cela, il apparaît directement après avoir entré les éléments du tableau, mais le même code qui se trouve dans le bloc ASM fonctionne avec Masm et emu. –
'loop' décrémente probablement et vérifie' ecx', pas seulement le mot inférieur ('cx'). Que faire si vous faites 'mov ecx, 9' au lieu de' mov cx, 9'? – Michael