关于汇编中宏的操作

1.宏操作符"<>"

在宏调用时, 当实在参数包含空格或逗号等间隔符号时,必须使用"<"和">"作为参数的定界符。例如:

Data      marco   TheData;宏定义

db  TheData

endm;

调用:Data  5,4,3;展开为 db 5

 Data  <5,4,3>;展开为 db 5,4,3

2.宏操作符"&"

    在宏定义时,当形式参数作为标识符或字符串的一部分时,必须使用&作为分隔符

DebugMsg  macro Point,String

               local  SkiData

       push ds

               push  cs

               pop   ds

               lea    dx,Msg&Point&

               mov   ah,9

               int     21h

               pop   ds

               jmp   ds

Msg&Point&     db   'At point &Point&:&String&',0dh,0ah,'$'

SkipData:

       endm

调用:DebugMsg   2,<Invalid   operand>

输出信息:“At point 2:Invalid operand”

被展开发:Msg2   db   'At  point 2:Invalid operand',0dh,0ah,'$'

3.宏操作符 ’ %‘

当宏调用时,若在实在参数中使用"%",则MASM将"%"后常数表达式的值作为参数,而非表达式本身。

GetData     marco   Param

                  mov    ax,Array [Param*2]

 endm

调用:GetData    100+5;展开为mov ax,Array[100+5*2]

调用 :GetData     %100+5;展开为mov ax,Array[105*2]

4.宏操作符"!"

对于包含在"<"和">"这间的文本串,MASM将出现在"!"之后的特殊字符(<,>,%,",',,)作为普通字符处理。若将"!"作为普通字符,则使用"!!"."!"不适用于 包含在引号中的字符串。

DefString    macro  String

                  db          "&String&$"

宏调用:        DefString  <Input a Integer(!>0):>

宏展开:      db         "Input a  Integer (>0):$"

再如:

<20!%!>10!%>;被 汇编为文本串20%>10%

5.宏注释符";;"

在宏定义中,以";;"开始的宏注释,在宏展开时被忽吃略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值