从键盘输入一串字符分别统计其中的字母数字字符和其他

上传人:宝路 文档编号:7910915 上传时间:2017-09-24 格式:DOC 页数:5 大小:54KB
返回 下载 相关 举报
从键盘输入一串字符分别统计其中的字母数字字符和其他_第1页
第1页 / 共5页
从键盘输入一串字符分别统计其中的字母数字字符和其他_第2页
第2页 / 共5页
从键盘输入一串字符分别统计其中的字母数字字符和其他_第3页
第3页 / 共5页
从键盘输入一串字符分别统计其中的字母数字字符和其他_第4页
第4页 / 共5页
从键盘输入一串字符分别统计其中的字母数字字符和其他_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《从键盘输入一串字符分别统计其中的字母数字字符和其他》由会员分享,可在线阅读,更多相关《从键盘输入一串字符分别统计其中的字母数字字符和其他(5页珍藏版)》请在金锄头文库上搜索。

1、汇编编程:从键盘输入一串字符 ,分别统计其中的字母( 不区分大小写 )、数字字符和其他键盘输入一串字符,统计出其中的数字字符个数,字母字符(不区分大小写)个数,其他字符个数,并显示出这三类统计结果(输入字符串以回车结束) ,可连续对多个字符串统计,用户输入 N 时退出程序。要求:题目分析(如何实现,以及实现的关键技术或步骤)2.要有流程图3.写出程序代码4.写出上机操作步骤,给出输入的数据及程序运行结果。; 题目名称:分类统计字符; 题目来源:http:/ 本程序在 MASMPlus 1.2 集成环境下通过编译,经过调试,运行正确。Code SegmentAssume CS:Code,DS:C

2、ode; ; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addrlea dx,Str_Addrmov ah,9int 21hEndM; ; 功能:在当前光标位置显示一个字符; 入口:dl=要显示的字符 Output_Chr proc Near push ax mov ah,02h int 21h pop ax ret Output_Chr Endp ; ; 功能:显示、输出一个回车、换行Output_CTLF pr

3、oc Nearpush ax push dxmov ah,02hmov dl,0dh int 21hmov dl,0ahint 21h pop op axretOutput_CTLF Endp ; ; 功能:把 AX 中的二进制无符号数转换成显式的十进制 ASCII 码,并送显示屏显示; 入口:AX= 二进制数 ; 出口:在当前光标位置显示转换后的 ASCII 码数字 Unsi_Dec_ASCII Proc Near push dx push bx push dimov bx,10 lea di,Temp_Save5 mov BYTE PTR di,$ dec di cld Divide: x

4、or 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 Nearpush dx push axInput_Chr: mov a

5、h,7 ;不带回显的键盘输入int 21hmov dl,aland al,0dfhcmp al,Yjnz $+5stcjmp $+7cmp al,Njnz Input_Chrclcmov ah,2int 21hpop axpop dxretYes_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 Pleas

6、e 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 cspop dspush cspop es; ; 从键盘上连续输入一串字符(字符个数不超过 80 个,该字符串用回车符结束)Input_Str: Output Prompt_Str ;提示输入一串字符lea dx,Buffer ;输入字符串缓冲区地址mov ah,0ah ;从键盘接收字符串int 21hcall Output

7、_CTLF ;输出一个回车、换行; ; 按字母、数字、其它字符分类统计计数lea si,Buffer1 ;实际输入的字符数地址lodsb ;读入实际输入的字符数xor ah,ah mov cx,ax ;实际输入的字符数送计数器jcxz Continuemov Letters,0 ;字母计数单元清零mov Dights,0 ;数字计数单元清零mov Others,0 ;其它字符计数单元清零Classify: lodsb ;当前字符ALcmp al,0 ;当前字符9?ja $+8 ;大于,转去判断是否字母inc Dights ;数字计数jmp Other_Chr4mov ah,al ;alah,用

8、于判断是否字母and ah,0dfh ;屏蔽第 5 位,按大写字母处理cmp ah,A ;当前字符Z?ja Other_Chr ;大于,转去按其它字符处理inc Letters ;字母计数jmp $+6Other_Chr: inc Others ;其它字符计数loop Classify; ; 显示分类统计结果Output Letters_summov ax,Letters ;字母个数call Unsi_Dec_ASCII ;把 AX 中的二进制无符号数转换成显式的十进制 ASCII 码,并送显示屏显示Output Dights_summov ax,Dights ;数字个数call Unsi_Dec_ASCIIOutput Others_summov ax,Others ;其它字符个数call Unsi_Dec_ASCIIContinue: Output Prompt_Concall Yes_or_Nojnc Exit_Proccall Output_CTLFcall Output_CTLFjmp Input_Str; Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序mov ah,1int 21h mov ah,4ch ;结束程序int 21hBuffer db 80 ;字符串缓冲区Code EndsEND Start ;编译到此结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号