string.asm

来自「汇编语言写的程序」· 汇编 代码 · 共 142 行

ASM
142
字号
DATAS SEGMENT
    countSum db 0
    countNum db 0
    countStr db 0
    countOth db 0
    messgSum db 'Sum:	$'
    messgNum db 'Num:	$'
    messgStr db 'Str:	$'
    messgOth db 'Oth:	$'
    crlf db 13,10,'$'
    Str db 0
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov cx,21
    xor di,di
    
input:
	mov ah,01h
	int 21h
	cmp al,0dh
	je result
	inc countSum
	
	cmp al,61h
	jge cmpLStr
	
	cmp al,41h
	jge cmpGStr
	
	cmp al,30h
	jge cmpNum
	
	loop input
	
cmpLStr:
	cmp al,7ah
	jg input
	inc countStr
	mov [Str+di],al
	inc di
	loop input
	
cmpGStr:
	cmp al,5ah
	jg input
	inc countStr
	mov [Str+di],al
	inc di
	loop input	

cmpNum:
	cmp al,39h
	jg input
	inc countNum
	mov [Str+di],al
	inc di
	loop input 
	   
result:
	lea dx,crlf
	mov ah,09h
	int 21h
	
	mov [Str+di],'$'
	lea dx,Str
	mov ah,09h
	int 21h
	
	lea dx,crlf
	mov ah,09h
	int 21h
	
	mov al,countOth
	mov dl,countSum
	add al,countNum
	add al,countStr
	sub dl,al
	mov countOth,dl
		
	lea dx,messgSum
	mov ah,09h
	int 21h
	mov al,countSum
	call print
		
	lea dx,messgStr
	mov ah,09h
	int 21h
	mov al,countStr
	call print
		
	lea dx,messgNum
	mov ah,09h
	int 21h
	mov al,countNum
	call print
		
	lea dx,messgOth
	mov ah,09h
	int 21h
	mov al,countOth
	call print
	
	jmp exit
	
print proc near 
	mov ah,0h  
	mov bl,10
	idiv bl
	mov dx,ax
	add dl,30h
	mov ah,02h
	int 21h
	mov dl,dh
	add dl,30h
	mov ah,02
	int 21h
	lea dx,crlf
	mov ah,09h
	int 21h
	ret
print endp	

exit:
	mov ah,7
	int 21h
  	
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?