假设你在组装Nasm中有这个指令
MOV EAX, [label1] ; label1 is at location 0x00D5A360
Run Code Online (Sandbox Code Playgroud)
你如何计算有效地址是^上面的位置.
我知道事实上寻址模式是直接的.
在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为您计算有效地址.