2016-04-25 2 views
-1

Можете ли вы объяснить, в чем разница между двумя обычаями инструкции MOV?Какое значение присваивается при использовании инструкции MOV?

mov eax,[namedDataItem] 
mov eax,namedDataItem 

Здесь namedDataItem - это именованный элемент данных, определенный в разделе .data.

+2

Вы забыли упомянуть, какой ассемблер вы используете. У некоторых сборщиков эти два означают одно и то же. – Jester

+0

Я использую ассемблер NASM – Kaustav

+0

[nasm требует скобок] (http://www.nasm.us/xdoc/2.11.08/html/nasmdoc2.html#section-2.2.2). – Jester

ответ

4

Взятые из NASM Manual

Правила любого доступа к содержимому памяти места требует квадратных скобок, адрес, и любой доступ к адресу переменного нет.

Это также означает, что NASM не нуждается офсетный ключевого слова MASM, так как код MASM mov ax,offset bar означает точно то же самое, как NASM- mov ax,bar.

Таким образом, разница между обеими линиями: первая перемещает СОДЕРЖАНИЕ, вторая перемещает ADDRESS.

Смежные вопросы