Assembly 使用MOV指令时分配的值是多少?

Assembly 使用MOV指令时分配的值是多少?,assembly,x86,nasm,Assembly,X86,Nasm,你能解释一下MOV指令的两种用法之间的区别吗 mov eax,[namedDataItem] mov eax,namedDataItem 此处namedDataItem是在.data节中定义的命名数据项。取自 规则很简单,任何对内存内容的访问 位置要求在地址周围用方括号括起来,并且需要任何访问权限 到变量的地址不需要 这也意味着NASM不需要MASM的OFFSET关键字,因为 MASM代码mov ax,offset bar与NASM的意思完全相同 mov ax,bar 因此,两行之间的区别是

你能解释一下MOV指令的两种用法之间的区别吗

mov eax,[namedDataItem]
mov eax,namedDataItem
此处namedDataItem是在.data节中定义的命名数据项。

取自

规则很简单,任何对内存内容的访问 位置要求在地址周围用方括号括起来,并且需要任何访问权限 到变量的地址不需要

这也意味着NASM不需要MASM的OFFSET关键字,因为 MASM代码
mov ax,offset bar
与NASM的意思完全相同
mov ax,bar


因此,两行之间的区别是:第一行移动内容,第二行移动地址。

您忘了提到您使用的汇编程序。在某些汇编程序中,这两个词的含义相同。我使用的是NASM汇编程序。在NASM中,第一个词将32位DWORD的内容移动到标有
namedDataItem
的内存地址,并将其移动到EAX。第二个将标签
namedDataItem
的值(其地址)移动到EAX中。