在 DosBox 中编译汇编程序时出错
Error compiling assembler program in DosBox
我目前正在 DosBox 中编译汇编程序,但我总是遇到一些错误。
有人可以帮我解决吗?
我附上了一张屏幕截图,其中包含我在 MASM 和 link 上收到的错误。
这是我的代码:
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO MULTIPLY : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO MULTIPLY : $"
MSG3 DB 10 ,13,"RESULT OF MULTIPLICATION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL
MUL NUM1
MOV RESULT,AL
AAM
ADD AH,30H
ADD AL,30H
MOV BX,AX
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,4CH
INT 21H
ENDS
END START
MASM SEGMENT
指令的签名如下:
name SEGMENT [[READONLY]] [[align]] [[combine]] [[use]] [[characteristics]] ALIAS(string) [['class']]
statements
name ENDS
因此您的代码包含汇编器提到的两个错误:
DATA SEGMENT
NUM1 DB ?
...
ENDS ; This line should be: DATA ENDS
和
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
...
ENDS ; This line should be: CODE ENDS
所以您在 `ENDS' 指令之前遗漏了相应的名称,仅此而已。
我目前正在 DosBox 中编译汇编程序,但我总是遇到一些错误。
有人可以帮我解决吗?
我附上了一张屏幕截图,其中包含我在 MASM 和 link 上收到的错误。
这是我的代码:
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO MULTIPLY : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO MULTIPLY : $"
MSG3 DB 10 ,13,"RESULT OF MULTIPLICATION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL
MUL NUM1
MOV RESULT,AL
AAM
ADD AH,30H
ADD AL,30H
MOV BX,AX
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,4CH
INT 21H
ENDS
END START
MASM SEGMENT
指令的签名如下:
name SEGMENT [[READONLY]] [[align]] [[combine]] [[use]] [[characteristics]] ALIAS(string) [['class']]
statements
name ENDS
因此您的代码包含汇编器提到的两个错误:
DATA SEGMENT
NUM1 DB ?
...
ENDS ; This line should be: DATA ENDS
和
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
...
ENDS ; This line should be: CODE ENDS
所以您在 `ENDS' 指令之前遗漏了相应的名称,仅此而已。