问题描述
对不起,我会有一个问题。 实际上,MASM 汇编器无法识别我的宏标签,或者更确切地说,即使我将它们定义为本地,以下内容也会返回给我:
ERROR A2005 Multidefined Symbol
....
This for more and more time
input_int MACRO register
LOCAL input,stop_input
push ax
push cx
xor register,register
mov cx,5
input: mov ah,01h
int 21h
xor ah,ah
cmp al,13
je stop_input
cmp al,48
jb stop
cmp al,57
ja stop
sub al,48
mov store_in,ax
mov ax,10
mul register
add store_in,ax
mov register,store_in
loop input
pop cx
pop ax
stop_input: mov ah,02h
mov dl,13
int 21h
mov dl,10
int 21h
ENDM
这里是那里的扩展
code SEGMENT Para PUBLIC
ASSUME ss: stack,ds: data,cs: code
_start:
;load the DS
mov ax,data
mov ds,ax
;ouput msg1
mov ah,09h
mov dx,OFFSET msg1
int 21h
;input1
input_int bx
;output msg2
mov ah,09h
mov dx,OFFSET msg2
int 21h
;input msg2
input_int dx
stop: mov ah,04ch
mov al,1
int 21h
code ENDS
END _start
我没有错误,但是有。 在我看来,汇编程序已经疯了,您建议使用另一个版本的 MASM 来生成没有此错误的 16 位可执行文件。 我目前使用的是 MASM 5.0。
abMacro MACRO
LOCAL jump,donothing
mov cx,5
jump: add ax,10
cmp ax,30
je donothing
loop jump
donothing: nop
ENDM
stack SEGMENT Para STACK
db ?
stack ENDS
data SEGMENT Para PUBLIC
db ?
data ENDS
code SEGMENT Para PUBLIC
ASSUME ss: stack,cs: code
_start:
mov ax,data
mov ds,ax
abMacro
abMacro
mov ah,04ch
mov al,1
int 21h
code ENDS
END _start
在我看来,汇编程序已经疯了。 对我来说,它给了我一个写得很糟糕的汇编程序,或者我接触了一些文件,这不太可能,因为我什至不知道来源在哪里。