Массивы в ассемблерной вставке
Необходимо объявить целочисленный массив размера n на c++, а инициализировать его уже в ассемблерной вставке числами от одного до n. Написал следующий код, но он выдает ошибку:
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Enter integer value: ";
cin >> n;
int* p_darr = new int[n];
__asm
{
mov ecx, n
mov esi, 0
GO:
mov p_darr[esi], esi
inc esi
loop GO
}
delete[] p_darr;
return 0;
}
Ошибка прикреплена скриноштом: 
Скажите, пожалуйста, как это исправить
Ответы (1 шт):
Автор решения: t3f
→ Ссылка
В ассемблерных вставках имя переменной обозначает её адрес, а не значение. Поэтому p_darr - это адрес самого указателя, а не массива, на который он указывает. Так что сначала нужно извлечь значение этого указателя (адрес массива), прочитав его в регистр, и с этим значением уже работать дальше:
mov ecx, n
mov esi, 0
mov eax, p_darr
GO:
mov [4*esi+eax], esi
inc esi
loop GO