|
|
#8
紫玄夜2006-12-27 17:23
DSEG SEGMENT String DB 80,0,80 DUP(?) GC DB 0 ;大写字母 SC DB 0 ;小写字母 NC DB 0 ;数字 AC DB 0 ;其它字符 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG MAIN: MOV AX,DSEG MOV DS,AX MOV AH,10 LEA DX,String INT 21H MOV CX,0 MOV CL,String+1 ;获取字符串长度 LEA BX,String+2 NEXT: MOV AL,[BX] CMP AL,30H ;这里先判断是否为数字 JB NEXT0 CMP AL,39H JA NEXT0 INC NC ;如果是标志计数器加1 JMP LOP NEXT0: CMP AL,41H ;判断是否为小写字母 JB NEXT1 CMP AL,5AH JA NEXT1 INC GC JMP LOP NEXT1: CMP AL,61H ;这里判断是否为大写字母 JB LOP CMP AL,7AH JA LOP INC SC LOP: INC BX LOOP NEXT MOV AL,String+1 ;因为去除小写、大写和数字就是其余字符,所以用了3次减法 SUB AL,GC SUB AL,SC SUB AL,NC MOV AC,AL MOV DL,0AH ;回车,换行 MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H ADD sc,30h mov dl,sc mov ah,02h int 21h ADD gc,30h mov dl,gc mov ah,02h int 21h ADD ac,30h mov dl,ac mov ah,02h int 21h ADD nc,30h mov dl,nc mov ah,02h int 21h MOV AX,4C00H INT 21H CSEG ENDS END MAIN 哥哥着是我新改的,哥哥看看对不对
|