如果我有一个名为的宏,例如test,我想将变量值传递给它,我应该怎么做? 例如:
test macro num
; ...
endm
我称之为:
test num
例如,和num在数据段中定义为db。
我的问题是,这可能吗?为什么我这样做会出错?我甚至需要这样做吗?我只是在宏中访问num
而不将其作为参数传递?
无论如何,谢谢。
编辑1:这是一个实际代码示例:
;... in the data segment i have car_fich defined like this
car_fich db 9
; ........................................................
fill_array macro car_fich
mov ah, car_fich
; .. do other things
endm
Main proc
fill_array car_fich
Main endp
答案 0 :(得分:0)
我仍然猜测数据段car_fich
与宏定义car_fich
之间存在名称冲突。为什么你们两个都一样?
有些汇编程序使用符号的最新定义作为当前符号(这与<{3>}在高级语言中的使用根本不同)。
因此,在这种情况下,宏中的定义将覆盖数据段中的定义,实质上使后者不可见,从而产生错误(最有可能;感谢汇编程序它是,因为否则将更难调试)。
如果是这种情况,可以通过更改宏中的符号来检查:
;... in the data segment i have car_fich defined like this
car_fich db 9
; ........................................................
fill_array macro m_car_fich ; changed symbol name
mov ah, m_car_fich ; changed symbol name
; .. do other things
endm
Main proc
fill_array car_fich ; refers to data segment variable
Main endp