装配移动指令中的例外情况?

时间:2015-12-09 20:07:52

标签: assembly nasm rules mov

我意识到在以下情况下禁止从内存复制到内存:

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

我知道我们无法在内存位置之间传输数据,但我想知道是否可以将一个变量的内存位置传递给另一个变量。 它实际上是编译,并完成工作 我的问题是:这真的有用吗? 提前谢谢,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

在这种情况下,var2被用作实际的内存地址文字。换句话说,它不会尝试将某些内容移入或移出该地址,而是将地址的值移至[var1]位置。