经验丰富的编码员,没有汇编经验,有如下问题:
在内存地址0x10000000以后的四个字节处,我有四字节值 X(例如 0x10203040),在内存地址 (X + 40) 的字节(例如 0x10203068)处,我有值"0xAB"。我想对这个字节执行操作(例如"not")。
这在汇编中是如何在语法上完成的?我已经为我得到的编译错误做了很多谷歌搜索。我目前拥有的是类似(假设 var1 = 0x10000000):
not byte ptr[dword ptr[var1] + 12]
我已经玩了两个小时,尝试各种组合,但整个事情不想用我能想出的任何黑客来编译。我也尝试使用中间变量,但我的 IDE 对"dd"关键字异常。
温柔 - 零装配经验在这里。
您不能在单个指令中执行此操作。x86 指令集仅支持某些寻址模式,您尝试使用的内存间接寻址模式不是其中之一。
您必须执行以下操作:
mov esi, [var1]
not byte ptr [esi + 12]