Я понимаю, что это запрещено копировать из памяти в память в сценарии, как это:Исключение в инструкции по перемещению сборки?
section .data
var1 db 23
var2 db 9
section .text
global _start
_start:
mov [var1],[var2]
mov eax,1
mov ebx,0
int 80h
Но, недавно я нашел пример кода, который не совсем следующее правило. Вот идея:
section .data
var1 dd 23
var2 dd 9
section .text
global _start
_start:
mov dword [var1],var2
mov eax,1
mov ebx,0
int 80h
Я знаю, что мы не можем передавать данные между ячейками памяти, но мне интересно, если можно передать ячейку памяти одной переменной в другую переменную. Он фактически компилируется и выполняет эту работу.
Мой вопрос: действительно ли это работает?
Спасибо заранее, любая помощь будет оценена по достоинству.
Несомненно, вы можете сохранить адрес 'var2' в' var1', как вы здесь, но это другой операционный результат, чем в первом примере. –
ОК, спасибо;) – misty
'mov [var1], [var2]' было бы попыткой скопировать значение _var1_ в _var2_. Оба операнда являются операндами памяти, поэтому вы не можете этого сделать. 'mov dword [var1], var2' перемещает указатель на _var2_ в _var1_. Указатель - это просто немедленное значение (например, константа), поэтому эта операция разрешена с помощью _MOV_ –