从键盘输入一串字符,分别统计其中的字母(不区分大小写)、数字字符和其他

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

; 题目名称:分类统计字符

; 题目来源:/question/131013276.html

; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。

Code Segment

Assume CS:Code,DS:Code

; -------------------------------------; 功能:显示指定地址(Str_Addr)的字符串

; 入口:

; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr

; 用法举例:Output PromptStr

Output MACRO Str_Addr

lea dx,Str_Addr

mov ah,9

int 21h

EndM

; -------------------------------------; 功能:在当前光标位置显示一个字符

; 入口:dl=要显示的字符

Output_Chr proc Near

push ax

mov ah,02h

int 21h

pop ax

ret

Output_Chr Endp

; -------------------------------------; 功能:显示、输出一个回车、换行

Output_CTLF proc Near

push ax

push dx

mov ah,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

pop dx

pop ax

ret

Output_CTLF Endp

; -------------------------------------; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示

; 入口:AX=二进制数

; 出口:在当前光标位置显示转换后的ASCII码数字

Unsi_Dec_ASCII Proc Near

push dx

push bx

push di

mov bx,10

lea di,@@Temp_Save[5]

mov BYTE PTR [di],'$'

dec di

cld

@@Divide: xor dx,dx

div bx

or dl,30h

mov [di],dl

dec di

test ax,ax

jnz @@Divide

inc di

push di

pop dx

mov ah,9

int 21h

pop di

pop bx

pop dx

ret

@@Temp_Save db 6 dup(?)

Unsi_Dec_ASCII EndP

; -------------------------------------; 功能:键盘输入一个字符,若输入的是'y'或'n'(不分大小写),则显示并返回

; 入口:无

; 出口:若输入的是'y',进位标志置位;若输入的是'n',进位标志复位。

Yes_or_No proc Near

push dx

push ax

@@Input_Chr: mov ah,7 ;不带回显的键盘输入

int 21h

mov dl,al

and al,0dfh

cmp al,'Y'

jnz $+5

stc

jmp $+7

cmp al,'N'

jnz @@Input_Chr

clc

mov ah,2

int 21h

pop ax

pop dx

ret

Yes_or_No Endp

; -------------------------------------Letters dw ? ;字母个数

Dights dw ? ;数字个数

Others dw ? ;其它字符个数

Letters_sum db 13,10,'Letters: $'

Dights_sum db 13,10,'Digits : $'

Others_sum db 13,10,'Others : $'

Prompt_Str db 'Please input a string:$'

Prompt_Con db 13,10,13,10,'Continue(Y/N)?$'

Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'

Start: push cs

pop ds

push cs

pop es

; -------------------------------------; 从键盘上连续输入一串字符(字符个数不超过80个,该字符串用回车符结束)Input_Str: Output Prompt_Str ;提示输入一串字符

lea dx,Buffer ;输入字符串缓冲区地址

mov ah,0ah ;从键盘接收字符串

int 21h

call Output_CTLF ;输出一个回车、换行

; -------------------------------------; 按字母、数字、其它字符分类统计计数

lea si,Buffer[1] ;实际输入的字符数地址

lodsb ;读入实际输入的字符数

xor ah,ah

mov cx,ax ;实际输入的字符数送计数器

jcxz Continue

mov Letters,0 ;字母计数单元清零

mov Dights,0 ;数字计数单元清零

mov Others,0 ;其它字符计数单元清零

相关文档
最新文档