有经验的编码员没有装配经验,遇到如下问题:
在从存储器地址0x10000000开始的四个字节处,我有四字节值X(例如0x10203040),并且在存储器地址(X + 40)的字节(例如0x10203068)中,我有值&# 39;是0xAB&#39 ;.我想对这个字节执行操作(例如' not')。
这在语法上如何在汇编中完成?我已经为我收到的编译错误做了很多谷歌搜索。我目前所拥有的是(假设var1 = 0x10000000):
not byte ptr[dword ptr[var1] + 12]
我已经玩了两个小时尝试各种组合,但整个事情并不想用任何我能想到的hackery进行编译。我也试过使用中间变量,但是我的IDE对“dd'关键字。
温柔 - 这里零装配经验。
答案 0 :(得分:1)
您不能在一条指令中执行此操作。 x86指令集仅支持某些寻址模式,而您尝试使用的内存间接寻址模式不是其中之一。
您必须执行以下操作:
mov esi, [var1]
not byte ptr [esi + 12]