您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 从键盘输入一串字符-分别统计其中的字母-数字字符和其他
汇编编程:从键盘输入一串字符,分别统计其中的字母(不区分大小写)、数字字符和其他键盘输入一串字符,统计出其中的数字字符个数,字母字符(不区分大小写)个数,其他字符个数,并显示出这三类统计结果(输入字符串以回车结束),可连续对多个字符串统计,用户输入N时退出程序。要求:题目分析(如何实现,以及实现的关键技术或步骤)2.要有流程图3.写出程序代码4.写出上机操作步骤,给出输入的数据及程序运行结果。;题目名称:分类统计字符;题目来源:本程序在MASMPlus1.2集成环境下通过编译,经过调试,运行正确。CodeSegmentAssumeCS:Code,DS:Code;-------------------------------------;功能:显示指定地址(Str_Addr)的字符串;入口:;Str_Addr=字符串地址(要求在数据段);用法:OutputStr_Addr;用法举例:OutputPromptStrOutputMACROStr_Addrleadx,Str_Addrmovah,9int21hEndM;-------------------------------------;功能:在当前光标位置显示一个字符;入口:dl=要显示的字符Output_ChrprocNearpushaxmovah,02hint21hpopaxretOutput_ChrEndp;-------------------------------------;功能:显示、输出一个回车、换行Output_CTLFprocNearpushaxpushdxmovah,02hmovdl,0dhint21hmovdl,0ahint21hpopdxpopaxretOutput_CTLFEndp;-------------------------------------;功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示;入口:AX=二进制数;出口:在当前光标位置显示转换后的ASCII码数字Unsi_Dec_ASCIIProcNearpushdxpushbxpushdimovbx,10leadi,@@Temp_Save[5]movBYTEPTR[di],'$'decdicld@@Divide:xordx,dxdivbxordl,30hmov[di],dldecditestax,axjnz@@Divideincdipushdipopdxmovah,9int21hpopdipopbxpopdxret@@Temp_Savedb6dup(?)Unsi_Dec_ASCIIEndP;-------------------------------------;功能:键盘输入一个字符,若输入的是'y'或'n'(不分大小写),则显示并返回;入口:无;出口:若输入的是'y',进位标志置位;若输入的是'n',进位标志复位。Yes_or_NoprocNearpushdxpushax@@Input_Chr:movah,7;不带回显的键盘输入int21hmovdl,alandal,0dfhcmpal,'Y'jnz$+5stcjmp$+7cmpal,'N'jnz@@Input_Chrclcmovah,2int21hpopaxpopdxretYes_or_NoEndp;-------------------------------------Lettersdw?;字母个数Dightsdw?;数字个数Othersdw?;其它字符个数Letters_sumdb13,10,'Letters:$'Dights_sumdb13,10,'Digits:$'Others_sumdb13,10,'Others:$'Prompt_Strdb'Pleaseinputastring:$'Prompt_Condb13,10,13,10,'Continue(Y/N)?$'Press_Keydb7,13,10,13,10,'Thecomplated.Pressanykeytoexit...$'Start:pushcspopdspushcspopes;-------------------------------------;从键盘上连续输入一串字符(字符个数不超过80个,该字符串用回车符结束)Input_Str:OutputPrompt_Str;提示输入一串字符leadx,Buffer;输入字符串缓冲区地址movah,0ah;从键盘接收字符串int21hcallOutput_CTLF;输出一个回车、换行;-------------------------------------;按字母、数字、其它字符分类统计计数leasi,Buffer[1];实际输入的字符数地址lodsb;读入实际输入的字符数xorah,ahmovcx,ax;实际输入的字符数送计数器jcxzContinuemovLetters,0;字母计数单元清零movDights,0;数字计数单元清零movOthers,0;其它字符计数单元清零Classify:lodsb;当前字符→ALcmpal,'0';当前字符'0'?jbOther_Chr;小于,转去按其它字符处理cmpal,'9';当前字符'9'?ja$+8;大于,转去判断是否字母incDights;数字计数jmpOther_Chr[4]movah,al;al→ah,用于判断是否字母andah,0dfh;屏蔽第5位,按大写字母处理cmpah,'A';当前字符'A'?jbOther_Chr;小于,转去按其它字符处理cmpah,'Z';当前字符'Z'?jaOther_Chr;大于,转去按其它字符处理incLetters;字母计数jmp$+6Other_Chr:incOthers;其它字符计数loopClassify;-------------------------------------;显示分类统计结果OutputLetters_summovax,Letters;字母个数callUnsi_Dec_ASCII;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示OutputDights_summovax,Dights;数字个数callUnsi_Dec_ASCIIOutputOthers_summovax,Others;其它字符个数callUnsi_Dec_ASCIIContinue:OutputPrompt_ConcallYes_or_NojncExit_ProccallOutput_CTLFcallOutput_CTLFjmpInput_Str;-------------------------------------Exit_Proc:OutputPress_Key;提示操作完成,按任意键结束程序movah,1int21hmovah,4ch;结束程序int21hBufferdb80;字符串缓冲区CodeEndsENDStart;编译到此结束
本文标题:从键盘输入一串字符-分别统计其中的字母-数字字符和其他
链接地址:https://www.777doc.com/doc-7224776 .html