【正确答案】DATA SEGMENT
STRIN DB 'ABjjilaJLHGl24hf*' ;字符串STRIN
SL DB 0 存放字符串长度
N DB 0 ;存放大写英文字母个数
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS: DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,STRIN
NEXT: MOV AL,[SI]
CMP AL,'*' ;判断是否为结束符'*'
JZ OV ;是,则结束
INC SL ;不是,字符串长度加1
CMP AL,'A' ;判断是否大于'A'
JB A1 ;否,转到A1
CMP AL,'Z' ;判断是否小于'Z'
JA A1 ;否,转到A1
INC N ;是大写英文字母,N加1
A1: INC SI ;调整指针
JMP NEXT ;未完,转到NEXT
OV: INC SI, ;是'*',字符串长度加1
MOV AL,SI, ;显示字符串长度
CALL ABC
MOV AL,N ;显示大写英文字母个数
CALL ABC
MOV AH,4CH
INT 21H
ABC PROC ;显示数字子程序
CMP AL,0 ;判断是否为0
JZ B1 ;是,转到B1
MOV AH,0 不是,除以10
MOV BL,10
DIV BL
ADD AX,3030H ;转换为相应ASCⅡ码
MOV DL,AL
MOV DH,AH ;保护AH
MOV AH,02H ;显示商(十位)
INT 21H
MOV DL,DH ;显示余数(个位)
INT 21H
MOV DL,'' ;显示空格
INT 21H
JMP B2 ;转到B2
B1: MOV DL,'0' ;是0,显示'0'
MOV AH,02H
INT 21H
B2: RET ;返回主程序
ABC ENDP
CODE ENDS
END START
【答案解析】