С2415 недопустимый тип операнда.
Вроде бы обнулил (xor edi, edi ), а при сравнении (cmp) всё равно пишет ошибку
Код:
#include
#include
using namespace std;
int main()
{
int mass[10] = { 15, 10, 22, 360, 76, 2, 88, 115, 9, 3 };
int left, right;
int t;
int count = 10;
left = 0;
right = count - 1;
_asm
{
pushad
mov esi, 1
mov ebx, left
mov eax, right
cycle1 :
cmp ebx, eax
ja exit
cmp esi, 0
jb exit
xor esi, esi
mov ecx, eax
xor edi,edi // edi = 0
cycle2 :
inc edi
usl :
cmp mass[edi * 4], mass[edi * 4 + 4]
jb out_cycle
xchg mass[edi * 4], mass[edi * 4 + 4]
mov edi, 1
out_cycle : loop cycle2
dec eax
xor ecx, ecx
mov ecx, eax
cycle3 :
cmp mass[ecx * 4 - 4], mass[ecx * 4]
jb out_usl1
xchg mass[ecx * 4 - 4], mass[ecx * 4]
mov edi, 1
out_usl1 :
loop cycle3
inc ebx
exit : popad
}
cout << "Mass:" << mass << " ";
}
Вроде бы обнулил (xor edi, edi ), а при сравнении (cmp) всё равно пишет ошибку
Код:
#include
#include
using namespace std;
int main()
{
int mass[10] = { 15, 10, 22, 360, 76, 2, 88, 115, 9, 3 };
int left, right;
int t;
int count = 10;
left = 0;
right = count - 1;
_asm
{
pushad
mov esi, 1
mov ebx, left
mov eax, right
cycle1 :
cmp ebx, eax
ja exit
cmp esi, 0
jb exit
xor esi, esi
mov ecx, eax
xor edi,edi // edi = 0
cycle2 :
inc edi
usl :
cmp mass[edi * 4], mass[edi * 4 + 4]
jb out_cycle
xchg mass[edi * 4], mass[edi * 4 + 4]
mov edi, 1
out_cycle : loop cycle2
dec eax
xor ecx, ecx
mov ecx, eax
cycle3 :
cmp mass[ecx * 4 - 4], mass[ecx * 4]
jb out_usl1
xchg mass[ecx * 4 - 4], mass[ecx * 4]
mov edi, 1
out_usl1 :
loop cycle3
inc ebx
exit : popad
}
cout << "Mass:" << mass << " ";
}