您的位置:首页 > 其它

汇编语言统计输入中各字符出现的次数

2014-08-10 10:04 337 查看
DATA SEGMENT  
BUFFER DB 100  
DB ?  
DB 100 DUP(?)  
CHARS DB 'INPUT:$' 
DATA ENDS  
CODE SEGMENT  
     ASSUME CS:CODE,DS:DATA  
MAIN PROC FAR  
     PUSH DS  
     SUB AX,AX  
     PUSH AX  
     MOV AX,DATA  
     MOV DS,AX  
START: MOV DX,OFFSET CHARS  
     MOV AH,9  
     INT 21H  
     MOV DX,OFFSET BUFFER  
     MOV AH,0AH  
     INT 21H  
     MOV DL,0AH  
     MOV AH,2  
     INT 21H  
     MOV DL,0DH  
     MOV AH,2  
     INT 21H  
     MOV SI,OFFSET BUFFER  
     INC SI  
     MOV AL,[SI]  
     INC SI  
     MOV DL,[SI]  
     MOV DH,[SI]  
     MOV DI,SI  
     MOV CL,AL  
     MOV CH,0  
     MOV BL,1  
     MOV BH,0  
     DEC CL  
GO1: INC SI  
     CMP DL,[SI]  
     JNE TO1  
     INC BL  
TO1: LOOP GO1  
     CALL OUTPUT 
     MOV BL,1  
TO5: INC DI  
     DEC AL  
     CMP AL,1  
     JE TO3  
     CMP DH,[DI]  
     JE TO5  
     MOV DL,[DI]  
     MOV SI,DI  
     MOV CL,AL  
     MOV CH,0  
     DEC CL  
GO2: INC SI  
     CMP [SI],DL  
     JNE TO2  
     INC BL  
     MOV [SI],DH  
TO2: LOOP GO2  
     CALL OUTPUT 
     MOV BL,1  
     JMP TO5  
 
TO3: CMP DH,[DI]  
     JE TO4  
     MOV DL,[DI]  
     MOV BL,1  
     CALL OUTPUT 
TO4: RET  
MAIN ENDP   
 
;?-------------------------  
OUTPUT PROC  
     PUSH AX  
 
     PUSH CX  
     PUSHF  
     MOV AH,2  
     INT 21H  
     MOV DL,20H  
     MOV AH,2  
     INT 21H  
     MOV AL,BL  
     MOV AH,0  
     MOV CL,10  
     DIV CL  
     ADD AH,30H  
     ADD AL,30H  
     MOV CH,AH  
     MOV DL,AL  
     MOV AH,2  
     INT 21H  
     MOV DL,CH  
     MOV AH,2  
     INT 21H  
     MOV DL,0AH  
     MOV AH,2  
     INT 21H  
     MOV DL,0DH  
     MOV AH,2  
     INT 21H  
     POPF   
     POP CX   
     POP AX  
     RET  
OUTPUT ENDP  
CODE ENDS  
    END MAIN  
 
;?-----------------


本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/709525
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐