使用汇编语言修改数组

时间:2015-07-18 20:10:41

标签: c++ assembly

我试图弄清楚如何使用汇编语言修改数组中的值。这是该计划:

#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移入其中,但显然我不是。

1 个答案:

答案 0 :(得分:4)

lea ebx, p表示ebx=&p,但您想要ebx=p,即mov ebx,p