请问这个程序错在哪
D SEGMENTD1 DB 20
DB ?
DB 2 DUP(?)
EMON DB 'JAN' ,'FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'
CHAR DB 3 DUP(?),0DH,0AH,'$'
D2 DB 'INPUT MONTH',0DH,0AH,'$'
D3 DB ?
D ENDS
C SEGMENT
ASSUME CS:C,DS:D,ES:D
MAIN PROC FAR
MOV AX,D
MOV DS,AX
MOV ES,AX
START:
CALL INPUT
CALL LOCATE
CALL DISPLAY
JMP START
EXIT:MOV AH,4CH
INT 21H
RET
MAIN ENDP
INPUT PROC NEAR
LEA DX,D2
MOV AH,9
INT 21H
LEA DX,D1
MOV AH,0AH
INT 21H
MOV AL,D1+2
SUB AL,'0'
MOV BL,10
MUL BL
MOV AH,D1+3
SUB AH,'0'
ADD AL,AH
MOV D3,AL
RET
INPUT ENDP
LOCATE PROC NEAR
MOV AL,D3
DEC AL
MOV BL,3
MUL BL
MOV SI,0
MOV BX,OFFSET EMON
MOV AH,0
ADD BX,AX
LOP:
MOV CX,3
MOV AL,[BX+SI]
MOV CHAR[SI],AL
INC SI
LOOP LOP
RET
LOCATE ENDP
DISPLAY PROC NEAR
LEA DX,CHAR
MOV AH,9
INT 21H
RET
DISPLAY ENDP
CODE ENDS
END START