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

上传人:xiao****1972 文档编号:84122944 上传时间:2019-03-02 格式:DOC 页数:5 大小:54.45KB
返回 下载 相关 举报
从键盘输入一串字符分别统计其中的字母数字字符和其他_第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 Segment Assume CS:Code,DS:Code; ;

2、功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput 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

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

4、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 axInput_Chr: mov ah,

5、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 retYes_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

6、_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 ;从键盘接收字符串 i

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

8、p Other_Chr4 mov ah,al ;alah,用于判断是否字母 and ah,0dfh ;屏蔽第5位,按大写字母处理 cmp ah,A ;当前字符Z? ja Other_Chr ;大于,转去按其它字符处理 inc Letters ;字母计数 jmp $+6Other_Chr: inc Others ;其它字符计数 loop Classify; ; 显示分类统计结果 Output Letters_sum mov ax,Letters ;字母个数 call Unsi_Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示 Output Dights

9、_sum mov ax,Dights ;数字个数 call Unsi_Dec_ASCII Output Others_sum mov ax,Others ;其它字符个数 call Unsi_Dec_ASCIIContinue: Output Prompt_Con call Yes_or_No jnc Exit_Proc call Output_CTLF call Output_CTLF jmp Input_Str; Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序 mov ah,1 int 21h mov ah,4ch ;结束程序 int 21hBuffer db 80 ;字符串缓冲区Code Ends END Start ;编译到此结束

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

当前位置:首页 > 大杂烩/其它

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