(C/C++) 内联汇编 "add dword ptr [address]" 递增地址而不是它的值
(C/C++) Inline Assembly "add dword ptr [address]" increments the address instead of it's value
我正在尝试使用内联汇编增加 DWORD iNumAddr 存储的地址处的值,我注意到它增加了地址而不是它包含的值.例如
->iNumAddr = 57D03390
->addstuff() 运行..
->iNumAddr = 57D033C2
地址是正确的,我已经测试过了
void addstuff()
{
_asm {
add dword ptr [iNumAddr], 50
}
}
如果您在高级语言(如 C++)中声明变量 DWORD iNumAddr
,则汇编语言代码中的符号 iNumAddr
将取 地址的值 的高级语言变量 iNumAddr
。 (此地址通常由链接器分配。)
所以指令add dword ptr [iNumAddr], 50
将增加变量iNumAddr
,而不是iNumAddr
指向的值。
执行您想要的操作需要两条指令。例如:
mov ebx,[iNumAddr]
add dword ptr [ebx],50
我正在尝试使用内联汇编增加 DWORD iNumAddr 存储的地址处的值,我注意到它增加了地址而不是它包含的值.例如
->iNumAddr = 57D03390
->addstuff() 运行..
->iNumAddr = 57D033C2
地址是正确的,我已经测试过了
void addstuff()
{
_asm {
add dword ptr [iNumAddr], 50
}
}
如果您在高级语言(如 C++)中声明变量 DWORD iNumAddr
,则汇编语言代码中的符号 iNumAddr
将取 地址的值 的高级语言变量 iNumAddr
。 (此地址通常由链接器分配。)
所以指令add dword ptr [iNumAddr], 50
将增加变量iNumAddr
,而不是iNumAddr
指向的值。
执行您想要的操作需要两条指令。例如:
mov ebx,[iNumAddr]
add dword ptr [ebx],50