2016-04-25 8 views
-1

Können Sie erklären, was der Unterschied zwischen den beiden Verwendungen von MOV-Anweisung ist?Welcher Wert wird bei der Verwendung der MOV-Anweisung zugewiesen?

mov eax,[namedDataItem] 
mov eax,namedDataItem 

Hier ist namedDataItem ein benanntes Datenelement, das im .data-Abschnitt definiert ist.

+2

Sie vergessen zu erwähnen, welchen Assembler Sie verwenden. Bei manchen Monteuren bedeuten diese beiden dasselbe. – Jester

+0

Ich benutze NASM Assembler – Kaustav

+0

[Nasm erfordert Klammern] (http://www.nasm.us/xdoc/2.11.08/html/nasmdoc2.html#section-2.2.2). – Jester

Antwort

4

Entnommen NASM Manual

Die Regel ist einfach, dass jeder Zugriff auf den Inhalt eines Speicher Lage eckigen Klammern um die Adresse erfordert, und jeder Zugriff an die Adresse einer Variablen nicht.

auch Das bedeutet, dass NASM keine Notwendigkeit für MASM des OFFSET Schlüsselwort hat, da die MASM Code mov ax,offset bar bedeutet genau das gleiche wie NASM des mov ax,bar.

So ist der Unterschied zwischen beiden Zeilen: der erste verschiebt den Inhalt, der zweite verschiebt die ADRESSE.