#include <iostream>
using namespace std;
int main()
{
const int AI = 10;
_asm
{
lea ebx,AI
mov dword ptr[ebx],30H
}
cout<<AI<<endl;
return 0;
}
我们单步跟踪如下图:
根据AI所在地址修改其值如下图:
但是结果输出为:
为什么会出现这样的结果呢,接着我们来看看反汇编的代码:
从上图我们知道了为什么输出的值还是没有改变,这是因为由于在编译时AI的值已知,并且是const常量,所以生成的代码并不是引用AI,而且直接引用了立即数0Ah。