注册 登录
编程论坛 汇编论坛

如何使用文本宏 TEXTEQU

vfdff 发布于 2008-10-14 16:50, 1586 次点击
为什么
  valexp TEXTEQU %val

% echo valexp
% echo %val
显示的结果不一样??
5 回复
#2
ONEPROBLEM2008-10-14 17:34
例如,IDOK  equ   1  但是,1不一定只表示IDOK 啊?
我是这么理解的,不知对不对.
#3
vfdff2008-10-16 23:55
TEXTEQU 和 = 效果差不多
#4
cnhanxiao2008-10-17 07:29
不喜欢使用宏,所以很少研究,除非迫不得已。给你一段宏,仅供参考:

printe MACRO exp,val
     IF2
          %OUT     exp=val
     ENDIF
ENDM

sym1     EQU     100
sym2     EQU     200
msg      EQU     <'Hello,World.'>
     printe    <sym1+sym2>,%(sym1+sym2)
     printe    msg,%msg

masm显示下面结果:
     sym1+sym2=300
     msg=''Hello,World.'
#5
vfdff2008-11-01 13:46
回复 4# 的帖子
使用时
 printe    <sym1+sym2>,%(sym1+sym2)这里为什么要这个 百分号"%"呢 ?
  %OUT     exp=val不是已经表示 把 val 中的值取出来赋给exp吗?
#6
cnhanxiao2008-11-01 14:47
回复 5# 的帖子
你编译一下就知道了:
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

 Assembling: test.asm
sym1+sym2=300
msg='Hello,World.'

%——它让编译程序把紧随其后的实参作为表达式处理。
%OUT exp =val ——显示表达式和结果

遇到宏,就头大。记得以前清单文件中都被展开,刚才试了一下,怎么也不展开。。。

[[it] 本帖最后由 cnhanxiao 于 2008-11-1 15:42 编辑 [/it]]
1