我试图弄清楚如何使用汇编语言修改数组中的值。这是该计划:
#include "stdafx.h"
#include <windows.h>
void func(byte *p)
{
__asm
{
lea ebx, p
mov[ebx],5
}
}
int _tmain(int argc, _TCHAR* argv[])
{
using byte = unsigned char;
byte array[4];
for (int i = 0; i < 4; i++)
array[i] = i*i;
func(array);
return 0;
}
当我进入func时,我可以看到p指向数组。 *(p + 1)是1,*(p + 2)是4,等等。我希望func将* p设置为5但是虽然没有错误输出,但它不会这样做。
我想要做的是将p的地址放入ebx并将5移入其中,但显然我不是。
答案 0 :(得分:4)
lea ebx, p
表示ebx=&p
,但您想要ebx=p
,即mov ebx,p