' byte ptr' (装配)返回类型?

时间:2016-03-14 01:57:53

标签: assembly x86 masm

有经验的编码员没有装配经验,遇到如下问题:

在从存储器地址0x10000000开始的四个字节处,我有四字节值X(例如0x10203040),并且在存储器地址(X + 40)的字节(例如0x10203068)中,我有值&# 39;是0xAB&#39 ;.我想对这个字节执行操作(例如' not')。

这在语法上如何在汇编中完成?我已经为我收到的编译错误做了很多谷歌搜索。我目前所拥有的是(假设var1 = 0x10000000):

not byte ptr[dword ptr[var1] + 12]

我已经玩了两个小时尝试各种组合,但整个事情并不想用任何我能想到的hackery进行编译。我也试过使用中间变量,但是我的IDE对“dd'关键字。

温柔 - 这里零装配经验。

1 个答案:

答案 0 :(得分:1)

您不能在一条指令中执行此操作。 x86指令集仅支持某些寻址模式,而您尝试使用的内存间接寻址模式不是其中之一。

您必须执行以下操作:

mov esi, [var1]
not byte ptr [esi + 12]