【问题标题】:Nasm assembly accessing specific byte in memoryNasm 程序集访问内存中的特定字节
【发布时间】:2013-01-29 03:07:25
【问题描述】:

这次我有一个简单的问题,如何访问内存中的特定字节?

我试过了:

mov cx, addr_seg

mov es, cx

mov cx, addr_off

mov bx, [es:cx]

但这只是给了我“无效的有效地址”,所以我认为我做错了什么。

有人可以告诉我怎么做吗?提前致谢。

【问题讨论】:

  • 卷。同一手册的 2A 列出了在表 2-1 中以 16 位模式寻址存储器操作数的可能方法。具有 ModR/M 字节的 16 位寻址形式。
  • 谢谢你给我指点这个,我以后一定会用的。不过我想知道,表 2-1 not 是否将 [es:si] 显示为寻址内存的有效方式?

标签: assembly x86 nasm memory-address


【解决方案1】:

在谷歌、我的教科书等之后对代码进行了一些处理之后。我想出了一个相当令人惊讶的解决方案......

显然,唯一的问题是我通过[es:cx] 引用地址。它通过[es:si]工作,所以我猜在实际寻址方案中cx和si存在差异。

呵呵,每天都学点新东西。

【讨论】:

  • mov bx, [es:si] 获取一个字(16 位)。如果您真的想访问单个字节,mov bl, [es:si}(或任何用于目标的 8 位寄存器)。请注意,32 位寻址模式更加灵活:mov bl, [es:ecx] 工作正常。
  • 感谢您的解释,解决方案肯定让我对答案感到困惑。
  • 如果您回答了自己的问题,请选择您的答案作为接受的解决方案
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2019-04-13
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多