因为数据定义在引用位置之后,应设置编译开关为“多次扫描”。或者将定义的数据提前:
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START: JMP BBB
DATA DB 255
DB ?
DB 255 DUP(?)
MAXCHAR DB ?
BBB:
PUSH CS
POP DS
PUSH CS
POP ES
LEA DX,DATA
MOV AH,10
INT 21H
LEA SI,DATA
MOV CL,BYTE PTR [SI+1]
XOR CH,CH
INC SI
INC SI
MOV AL,[SI]
MOV BYTE PTR MAXCHAR,AL
INC SI
DEC CX
@MAIN0:
MOV AL,[SI]
CMP AL,BYTE PTR MAXCHAR
JLE @MAIN1
MOV BYTE PTR MAXCHAR,AL
@MAIN1:
INC SI
LOOP @MAIN0
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
MOV DL,BYTE PTR MAXCHAR
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START