主题:一个小程序为什么用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
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