我有一个汇编程序如下。
;=======================
.MODEL SMALL
.STACK 100h
putchar MACRO char
label:
mov dl, char
mov ah, 2
int 21h
ENDM
.CODE
MAIN Proc
putchar 'A'
putchar 'S'
putchar 'M'
mov ah, 4ch
int 21h
MAIN ENDP
我的程序无法编译。
P / S:无法修改putchar
宏。
答案 0 :(得分:2)
您不能在宏中使用像Label这样的标签 您需要使用本地标签
putchar MACRO char
local label
label:
mov dl, char
mov ah, 2
int 21h
ENDM
因为它会将宏代码复制到您的代码中 不喜欢将您带到另一个IP的proc 宏只是复制代码,所以您不能两次创建相同的名称标签...其编译器错误,因此请使用本地
答案 1 :(得分:1)
您的问题可能是宏中的label:
标签被多次定义(宏的每次扩展)。您需要删除标签(实际上没有理由在那里),或使用本地标签。在此页面上搜索“本地标签”:http://webster.cs.ucr.edu/Page_TechDocs/MASMDoc/ProgrammersGuide/Chap_09.htm。
如果您无法修改putchar
宏,那么我看不出如何编译此代码。