您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 统计键盘输入字符和数字个数实验报告
统计键盘输入字符和数字个数实验报告姓名:xx学号:xxx班级:xxx任课教师:xxx一、实验目的1.学习循环程序结构,掌握编写循环处理程序的方法和技巧。2.通过循环结构程序熟悉汇编语言程序设计的主要方法。3.了解和掌握程序设计过程中算法的选择。4.掌握汇编语言的调试方法。二、实验内容从键盘输入一系列字符(每种字符不超过9)并以回车符结束,统计出字母、数字及其它字符的个数,最后要在屏幕上显示计数结果。三、实验程序设计思路输入字符X判断X==‘换行’Y显示最后结果NX=‘0’NREST++YX=‘9’YNUMBER+++X=‘A’NNREST++YX=‘Z’YCHAR++X=‘a’NREST++X=‘z’NYYCHAR++REST++N设计思路如上图所示:图中NUMBER记录统计的数字的个数,CHAR记录统计的字符的个数,REST统计其他字符的个数。四、实验结果分析输入:输入了12345asdASD-=输出如下:输出了NUMBER:5CHAR:6REST:2说明数字有5个,字符有6个,剩下的其他字符为2个五、实验体会通过本次实验学习并实践了循环程序,更深理解了跳转语句的用法和输入输出字符语句的用法,并且下次上机前要做准备,避免急躁。对本次试验的思考:此程序对某种类型的数最多只能显示9个,若统计个数超过九个时怎么办?对程序最后显示部分稍加修改:以显示NUMBER为例子:EXIT:LEADX,STR1MOVAH,09HINT21HMOVAL,NUMBER;将NUMBER送到AL中MOVAH,0;对应百位数字MOVBL,100DIVBLMOVBL,AH;商在AH中MOVAH,2;显示最高位(余数在AL中(除以100的余数为最高位))ADDAL,30HMOVDL,ALINT21HMOVAL,BL;对应十位数字MOVAH,0MOVBL,10DIVBLMOVBL,AH;商在AH中MOVAH,2;显示中间位(余数在AL中(除以10的余数为中间位))ADDAL,30HMOVDL,ALINT21HMOVDL,BL;对应个位数字ADDDL,30HMOVAH,2;显示个位INT21H输入12345678901ABCDEFGHIJK==输出:原理:16位DIV除法和二号调用三位数被放到AL中,先是除以100得到百位数字,而后除以10得到十位数字,和余下的个位数字。被除数在AX中,商在AL中,余数在AH中附件(实验代码,需要注释):DATASEGMENTNUMBERDB0;定义NUMBER为统计的数字个数CHARDB0;定义CHAR为统计的字符个数RESTDB0;定义REST为统计的其他字符个数STR1DB'NUMBER:','$';定义字符串,用来显示结果STR2DB'CHAR:','$'STR3DB'REST:','$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXAGAIN:;循环体MOVAH,1;输入字符INT21HCMPAL,0DH;判断输入的字符等不等于'换行'JZEXIT;若等于换行符,就跳到显示最后结果步骤CMPAL,'0';若不等于‘换行’,和‘0’比较JNLNEXT1;若字符=‘0’,跳到NEXT1INCREST;否则,REST++JMPAGAIN;跳回AGAIN,继续输入NEXT1:CMPAL,'9';若字符=‘9’JBEN1;则跳到N1,实现NUMBER++CMPAL,65;否则比较字符和'A'JNLNEXT2;若字符=‘A’,跳到NEXT2INCRESTJMPAGAINNEXT2:CMPAL,90;比较字符和'Z'JBEN2;若字符=‘Z’,跳到N2CMPAL,97;否则比较字符和'a'JNLNEXT3;若字符='a',则跳到NEXT3INCREST;否则REST++JMPAGAIN;继续循环NEXT3:CMPAL,122;比较字符和'z'JBEN2;若字符=‘z’,跳到N2INCREST;否则REST++JMPAGAIN;继续循环N1:;N1体INCNUMBER;实现NUMBER++JMPAGAIN;和继续循环N2:;N2体INCCHAR;实现CHAR++JMPAGAIN;和继续循环EXIT:;输出LEADX,STR1;输出“NUMBER:”MOVAH,09HINT21HMOVDL,NUMBERADDDL,30H;因为MOVAH,2是显示字符,所以要显示数字,则显示数字的ASCII码MOVAH,2;显示统计的数字个数INT21HLEADX,STR2;输出“CHAR:”,为了美观,CHAR前面有一个空格MOVAH,09HINT21HMOVDL,CHARADDDL,30H;CHAR加上30H再显示MOVAH,2;显示统计字符个数INT21HLEADX,STR3;输出“REST:”,为了美观,REST前面有一个空格MOVAH,09HINT21HMOVDL,RESTADDDL,30H;REST加上30H再显示MOVAH,2;显示统计的其他字符个数INT21HMOVAH,4CHINT21HCODEENDSENDSTART当统计数字超过9个时,改进的程序:DATASEGMENTNUMBERDB0CHARDB0RESTDB0STR1DB'NUMBER:','$'STR2DB'CHAR:','$'STR3DB'REST:','$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXAGAIN:MOVAH,1;输入字符INT21HCMPAL,0DH;判断输入的字符等不等于'换行'JZEXIT;若等于换行符,就跳到显示最后结果步骤CMPAL,'0';若不等于‘换行’,和‘0’比较JNLNEXT1;若字符=‘0’,跳到NEXT1INCREST;否则,REST++JMPAGAIN;跳回AGAIN,继续输入NEXT1:CMPAL,'9';若字符=‘9’JBEN1;则跳到N1,实现NUMBER++CMPAL,65;否则比较字符和'A'JNLNEXT2;若字符=‘A’,跳到NEXT2INCRESTJMPAGAINNEXT2:CMPAL,90;比较字符和'Z'JBEN2;若字符=‘Z’,跳到N2CMPAL,97;否则比较字符和'a'JNLNEXT3;若字符='a',则跳到NEXT3INCREST;否则REST++JMPAGAIN;继续循环NEXT3:CMPAL,122;比较字符和'z'JBEN2;若字符=‘z’,跳到N2INCRESTJMPAGAINN1:INCNUMBERJMPAGAINN2:INCCHARJMPAGAINEXIT:LEADX,STR1MOVAH,09HINT21HMOVAL,NUMBERMOVAH,0;对应百位数字MOVBL,100DIVBLMOVBL,AH;商在AH中MOVAH,2;显示最高位(余数在AL中(除以100的余数为最高位))ADDAL,30HMOVDL,ALINT21HMOVAL,BL;对应十位数字MOVAH,0MOVBL,10DIVBLMOVBL,AH;商在AH中MOVAH,2;显示中间位(余数在AL中(除以10的余数为中间位))ADDAL,30HMOVDL,ALINT21HMOVDL,BL;对应个位数字ADDDL,30HMOVAH,2;显示个位INT21HLEADX,STR2MOVAH,09HINT21HMOVAL,CHARMOVAH,0;对应百位数字MOVBL,100DIVBLMOVBL,AH;商在AH中MOVAH,2;显示最高位(余数在AL中(除以100的余数为最高位))ADDAL,30HMOVDL,ALINT21HMOVAL,BL;对应十位数字MOVAH,0MOVBL,10DIVBLMOVBL,AH;商在AH中MOVAH,2;显示中间位(余数在AL中(除以10的余数为中间位))ADDAL,30HMOVDL,ALINT21HMOVDL,BL;对应个位数字ADDDL,30HMOVAH,2;显示个位INT21HLEADX,STR3MOVAH,09HINT21HMOVAL,RESTMOVAH,0;对应百位数字MOVBL,100DIVBLMOVBL,AH;商在AH中MOVAH,2;显示最高位(余数在AL中(除以100的余数为最高位))ADDAL,30HMOVDL,ALINT21HMOVAL,BL;对应十位数字MOVAH,0MOVBL,10DIVBLMOVBL,AH;商在AH中MOVAH,2;显示中间位(余数在AL中(除以10的余数为中间位))ADDAL,30HMOVDL,ALINT21HMOVDL,BL;对应个位数字ADDDL,30HMOVAH,2;显示个位INT21HMOVAH,4CHINT21HCODEENDSENDSTART
本文标题:统计键盘输入字符和数字个数实验报告
链接地址:https://www.777doc.com/doc-7107913 .html