Assembly ';字节ptr';(组件)返回类型?
这里有经验的编码员,没有装配经验,有如下问题: 在从内存地址0x10000000开始的四个字节处,我有四个字节的值X(例如0x10203040),在从内存地址(X+40)(例如0x10203068)开始的字节处,我有值“0xAB”。我想对这个字节执行一个操作(例如“not”) 在汇编中,这在语法上是如何实现的?我在谷歌上搜索了很多编译错误。我目前拥有的东西大致如下(假设var1=0x10000000): 我已经玩了两个小时,尝试了各种组合,但整个东西都不想用我能想到的任何类型的黑客来编译。我也尝试过使用中间变量,但我的IDE对'dd'关键字表示异议Assembly ';字节ptr';(组件)返回类型?,assembly,x86,masm,Assembly,X86,Masm,这里有经验的编码员,没有装配经验,有如下问题: 在从内存地址0x10000000开始的四个字节处,我有四个字节的值X(例如0x10203040),在从内存地址(X+40)(例如0x10203068)开始的字节处,我有值“0xAB”。我想对这个字节执行一个操作(例如“not”) 在汇编中,这在语法上是如何实现的?我在谷歌上搜索了很多编译错误。我目前拥有的东西大致如下(假设var1=0x10000000): 我已经玩了两个小时,尝试了各种组合,但整个东西都不想用我能想到的任何类型的黑客来编译。我也尝
温和一点-这里没有组装经验。你不能在一条指令中完成这项工作。x86指令集仅支持某些寻址模式,而您尝试使用的内存间接寻址模式不是其中之一 您必须执行以下操作:
mov esi, [var1]
not byte ptr [esi + 12]
在“英特尔语法x86汇编程序”中,嵌套的
[]
始终是出错的标志。是的,这看起来很奇怪,我不得不读了两遍要求,看看他的答案是正确的,但不知怎么的,这在阅读时很痛苦:)
mov esi, [var1]
not byte ptr [esi + 12]