【正确答案】程序如下:
DATA SEGMENT
MAXSTRING DB 100
INACT DB?
STRING DB 100
DISMESS DB'PLEASE ENTER A STRING:',0AH,0DH,'$'
DIGITAL DB'DIGITAL IS:','$'
LETTER DB'LETTER IS:','$'
OTHERCHAR DB'OTHER IS:','$'
CRLF DB 0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV BL,0
MOV BH,0
MOV CH,0
DISPSTRING MACRO
MOV AH,9
INT 21H
ENDM
DISPCHAR MACRO
MOV AH,2
INT 21H
ENDM
LEADX,DISMESS
DISPSTRING
BEGIN: LEA DX,MAXSTRING
MOV AH,0AH
INT 21H
MOV DL,INACT
MOV DH,0
INC DX
LEASI,STRING
REPEAT: DEC DX
JZ ENDCHE
MOV AL,[SI]
INC SI
CMP AL,'0'
JB OTHER
CMP AL,'9'
JA NEXT1
INC BL
JMP REPEAT
NEXT1: OR AL,20H
CMP AL,'a'
JB OTHER
CMP AL,'z'
JA OTHER
INC BH
JMP REPEAT
OTHER: INC CH
JMP REPEAT
ENDCHE: LEA DX,DIGITAL
DISPSTRING
MOV CL,BL
CALL DISP
LEA DX,LETTER
DISPSTRING
MOV CL,BH
CALL DISP
LEA DX,OTHERCHAR
DISPSTRING
MOV CL,CH
CALL DISP
MOV AH,4CH
INT 21H
MAINE NDP
DISP PROCNEAR
MOV AL,CL
MOV AH,0
MOV CL,100
DIV CL
MOV CL,AH
MOV DL,AL
ADD DL,30H
DISPCHAR
MOV AL,CL
MOV AH,0
MOV CL,10
DIV CL
MOV CL,AH
MOV DL,AL
ADD DL,30H
DISPCHAR
MOV DL,CL
ADD DL,30H
DISPCHAR
LEA DX,CRLF
DISPSTRING
RET
DISP ENDP
CODE ENDS
END MAIN
【答案解析】