Code:
%define x 0x03
x equ 0x03
他们之间有什么区别?
%define
是一种更强大的执行宏的方法,类似于 C 预处理器。在您的简单情况下,没有太大区别,使用x
源代码中将导致常量3
被替换。这其中有一个细微的差别equ
语句在第一次被读取时被评估一次,并且%define
只要在源代码中遇到宏,就会对其进行求值。
您可以看到两个语句片段之间的区别:
addr equ $
%define addr $
在这种情况下,addr
,当在代码中遇到时,将具有不同的值。在第一种情况下,$
将是装配位置所在的位置equ
是。换句话说,它在哪里defined.
在第二种情况下,它计算出位于以下位置的装配位置:addr
is used.
Where %define
闪耀的是这样的东西:
%define thricexplusy(x,y) (3 * x + y)
or:
%define ctrl(c) (c & 0x1F)
: :
mov al, ctrl('z')
(或者甚至更复杂的东西),它允许您将参数传递给宏,这是简单的不可能实现的equ
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)