如何计算有效地址?

Sha*_*wic 2 x86 assembly

假设你在组装Nasm中有这个指令

MOV EAX, [label1] ; label1 is at location 0x00D5A360
Run Code Online (Sandbox Code Playgroud)

你如何计算有效地址是^上面的位置.

我知道事实上寻址模式是直接的.

use*_*653 6

在nasm label中指的是标签的地址,同时[label]检索存储在那里的值.所以你可以这样做:

    mov eax, label1      ; eax <- 0x00D5A360
Run Code Online (Sandbox Code Playgroud)

或使用通用lea(加载有效地址):

    lea eax, [label1]    ; eax <- 0x00D5A360
Run Code Online (Sandbox Code Playgroud)

或者您是否询问汇编程序如何确定有效地址?因为它由汇编程序组合处理,可选地是链接器和加载器.通常,您的代码将编译为具有重定位的中间对象格式,链接器或加载器将处理label1为您计算有效地址.