Assembly ';字节ptr';(组件)返回类型?

Assembly ';字节ptr';(组件)返回类型?,assembly,x86,masm,Assembly,X86,Masm,这里有经验的编码员,没有装配经验,有如下问题: 在从内存地址0x10000000开始的四个字节处,我有四个字节的值X(例如0x10203040),在从内存地址(X+40)(例如0x10203068)开始的字节处,我有值“0xAB”。我想对这个字节执行一个操作(例如“not”) 在汇编中,这在语法上是如何实现的?我在谷歌上搜索了很多编译错误。我目前拥有的东西大致如下(假设var1=0x10000000): 我已经玩了两个小时,尝试了各种组合,但整个东西都不想用我能想到的任何类型的黑客来编译。我也尝

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

在从内存地址0x10000000开始的四个字节处,我有四个字节的值X(例如0x10203040),在从内存地址(X+40)(例如0x10203068)开始的字节处,我有值“0xAB”。我想对这个字节执行一个操作(例如“not”)

在汇编中,这在语法上是如何实现的?我在谷歌上搜索了很多编译错误。我目前拥有的东西大致如下(假设var1=0x10000000):

我已经玩了两个小时,尝试了各种组合,但整个东西都不想用我能想到的任何类型的黑客来编译。我也尝试过使用中间变量,但我的IDE对'dd'关键字表示异议


温和一点-这里没有组装经验。

你不能在一条指令中完成这项工作。x86指令集仅支持某些寻址模式,而您尝试使用的内存间接寻址模式不是其中之一

您必须执行以下操作:

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

在“英特尔语法x86汇编程序”中,嵌套的
[]
始终是出错的标志。是的,这看起来很奇怪,我不得不读了两遍要求,看看他的答案是正确的,但不知怎么的,这在阅读时很痛苦:)
mov esi, [var1]
not byte ptr [esi + 12]