【问题标题】:How can a register have address?寄存器如何有地址?
【发布时间】:2011-09-05 10:16:15
【问题描述】:

根据书,寄存器是CPU中存储空间小的地方(例如16位CPU上的16位)。那么CPU寄存器是如何有地址的呢?如果它不是在内存中而是在 CPU 中,我们如何向它添加位移?

示例:

mov ax, [bx+1000h]

【问题讨论】:

  • 您正在向 BX 中包含的内存地址添加位移,您没有从寄存器 BX 中移动 1000h 字节。
  • 通常寄存器没有内存地址,但有些有,例如 AVR 微控制器中的堆栈指针 SP。

标签: assembly masm cpu-registers masm32


【解决方案1】:

x86 寄存器只能通过名称寻址。表达式bx+1000h 仅表示“寄存器 bx 中的值加上 1000h”,结果被解释为内存中的地址(通过 [...] 表示法),而不是某些寄存器空间。

该表达式的整体解释是,“将位于 bx 指向的地址后 1000h 字节的 16 位加载到 ax 中。”

【讨论】:

    【解决方案2】:

    通过将bx内容解释为地址,然后用偏移量替换它来完成。

    所以如果bx1000h 那么ax 的内容将存储在内存位置2000h

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2018-10-22
      • 2010-11-18
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多