我在大会上有点生疏。我想问你们一些问题。
1)这些装配说明在NASM中是否有效?
2)有什么区别,什么时候应该使用它们?
mov EAX,EBX
VS
mov EAX,[EBX]
答案 0 :(得分:10)
mov EAX,EBX
在EAX中移动EBX的值,而
mov EAX, [EBX]
在EBX中移动地址的值(因此EBX必须包含有效地址,否则会返回分段错误)。
答案 1 :(得分:3)
你能读C吗?如果是,则根据先前的定义int a, b;
,第一条指令或多或少等同于
a = b;
然而,鉴于先前的定义int a, *b;
,第二条指令或多或少等同于
a = *b;
除了EAX和EBX是寄存器而不是堆栈驻留变量。
还有很多可以说的,但前面给出了你的想法。
(顺便说一句,NASM - 我承认在过去的五年里没有使用过 - 与GNU的汇编程序相比,它提出了相反的顺序.NASM将目标寄存器放在左边,源寄存器放在右边而GNU则反过来。与GNU的“AT& T语法”相比,NASM的惯例也称为“Intel语法”。)