[讨论] Ax51的一个小问题

月黑1823   2015-5-4 14:50 楼主
大家好,Ax51中有一个宏操作符!,在手册中是这样介绍的:

  1. The exclamation mark operator ('!') is used to indicate that a special character is to be passed to a macro literally. This operator enables you to pass comma (',') and angle bracket characters ('<' and '>'), that would normally be interpreted as delimiters, to a macro.
有哪位大神能帮忙举个栗子吗?

在Keil官网上有这么一个栗子:

  1. ?ID?SEG SEGMENT IDATA
  2.         RSEG    ?ID?SEG
  3. VAL0:   DS      1
  4. VAL1:   DS      1
  5. VAL2:   DS      1

  6. LD_ID   MACRO   Adr, Modi
  7.         MOV     R0,#Adr
  8.         MOV     A,@R0
  9.         Modi    R0
  10. ENDM

  11. ?PR?SEG SEGMENT CODE
  12.         RSEG    ?PR?SEG

  13.         LD_ID   VAL0, INC   ; LOAD VAL0 and INC R0
  14.         ADD     A,@R0       ; VAL1

  15.         LD_ID   VAL2, DEC   ; LOAD VAL0 and DEC R0
  16.         XRL     A,@R0       ; VAL2

  17.         LD_ID   VAL1, !;    ; LOAD VAL1 and leave R0 unmodified
  18.         ADD     A,@R0       ; VAL1

  19. END
但是AX51直接报错,A51生成代码错误。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复