回 帖 发 新 帖 刷新版面

主题:一个小程序为什么用masm5.1编译没问题,用masm6.15就有问题?

最多只需一分多钟,请帮忙看一下。
Thank very much!!!
   mname      macro       x,y,z
        push    ax
        mov        ax,x
        oper    ax,y
        mov        z,ax
        pop        ax
        endm
        endm
data    segment
    A    dw    25
    B    dw    12
    C    dw    ?
    data    ends
code    segment
    assume    cs:code,ds:data
main    proc     far
        mov        ax,data
        mov        ds,ax
        .LALL
        dmac    addition,add   
        addition    A,B,C
        dmac    logic_and,and
        logic_and    A,B,C
        mov        ax,4c00h
        int        21h
        main    endp
        code    ends
        end        main
        
        
        masm5.1编译器:
Microsoft (R) Macro Assembler Version 5.00                  12/10/7                                                             Page     1-1


                dmac    macro    mname,oper 
                    mname    macro    x,y,z 
                        push    ax 
                        mov        ax,x 
                        oper    ax,y 
                        mov        z,ax 
                        pop        ax 
                        endm 
                        endm 
 0000                data    segment 
 0000  0019                A    dw    25 
 0002  000C                B    dw    12 
 0004  ????                C    dw    ? 
 0006                    data    ends 
 0000                code    segment 
                    assume    cs:code,ds:data 
 0000                main    proc     far 
 0000  B8 ---- R                mov        ax,data 
 0003  8E D8                    mov        ds,ax 
                        dmac    addition,add 
                        addition    A,B,C 
 0005  50                    1            push    ax 
 0006  A1 0000 R             1            mov        ax,A 
 0009  03 06 0002 R          1            add    ax,B 
 000D  A3 0004 R             1            mov        C,ax 
 0010  58                    1            pop        ax 
                        dmac    logic_and,and 
                        logic_and    A,B,C 
 0011  50                    1            push    ax 
 0012  A1 0000 R             1            mov        ax,A 
 0015  23 06 0002 R          1            and    ax,B 
 0019  A3 0004 R             1            mov        C,ax 
 001C  58                    1            pop        ax 
 001D  B8 4C00                    mov        ax,4c00h 
 0020  CD 21                    int        21h 
 0022                        main    endp 
 0022                        code    ends 
                        end        main 
    
    
    masm6.15:
    
    Microsoft (R) Macro Assembler Version 6.15.8803            12/10/07 07:29:06
test2.asm                             Page 1 - 1


                dmac    macro    mname,oper
                    mname    macro    x,y,z
                        push    ax
                        mov        ax,x
                        oper    ax,y
                        mov        z,ax
                        pop        ax
                        endm
                        endm
 0000                data    segment
 0000 0019                A    dw    25
 0002 000C                B    dw    12
                    C    dw    ?
test2.asm(13) : error A2008: syntax error : C
 0004                    data    ends
 0000                code    segment
                    assume    cs:code,ds:data
 0000                main    proc     far
 0000  B8 ---- R                mov        ax,data
 0003  8E D8                    mov        ds,ax
                        .LALL
                        dmac    addition,add   
                 1        addition    macro    x,y,z
                 1            push    ax
                 1            mov        ax,x
                 1            add    ax,y
                 1            mov        z,ax
                 1            pop        ax
                 1            endm
                        addition    A,B,C
 0005  50             1            push    ax
 0006  A1 0000 R         1            mov        ax,A
 0009  03 06 0002 R         1            add    ax,B
                 1            mov        C,ax
test2.asm(22) : error A2008: syntax error : C
 addition(4): Macro Called From
  test2.asm(22): Main Line Code
 000D  58             1            pop        ax
                        dmac    logic_and,and
                 1        logic_and    macro    x,y,z
                 1            push    ax
                 1            mov        ax,x
                 1            and    ax,y
                 1            mov        z,ax
                 1            pop        ax
                 1            endm
                        logic_and    A,B,C
 000E  50             1            push    ax
 000F  A1 0000 R         1            mov        ax,A
 0012  23 06 0002 R         1            and    ax,B
                 1            mov        C,ax
test2.asm(24) : error A2008: syntax error : C
 logic_and(4): Macro Called From
  test2.asm(24): Main Line Code
 0016  58             1            pop        ax
 0017  B8 4C00                    mov        ax,4c00h
 001A  CD 21                    int        21h
 001C                        main    endp
 001C                        code    ends
                        end        main
        

回复列表 (共1个回复)

沙发

C    dw    ?

C是masm 6.15的保留字, 你不能用的
换个名字,比如_C就ok了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册