统计键盘输入字符和数字个数实验报告.docxVIP

统计键盘输入字符和数字个数实验报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
统计键盘输入字符和数字个数实验报告 姓名:xx 学号:xxx 班级:xxx 任课教师:xxx 实验目的 学习循环程序结构,掌握编写循环处理程序的方法和技巧。 通过循环结构程序熟悉汇编语言程序设计的主要方法。 了解和掌握程序设计过程中算法的选择。 掌握汇编语言的调试方法。 实验内容 从键盘输入一系列字符(每种字符不超过9)并以回车符结束,统计出字母、数字及其它字符的个数,最后要在屏幕上显示计数结果。 实验程序设计思路 Y输入字符X判断X==‘换行’ Y 输入字符X 判断X==‘换行’ NN显示最后结果 N N 显示最后结果 X =‘0’REST++YX =‘9’YNUMBER+++X =‘A’NNREST++YX = ‘Z’YCHAR++X = ‘a’NREST++X = ‘z’NYYCHAR++REST++N X =‘0’ REST++ Y X =‘9’ Y NUMBER+++ X =‘A’ N N REST++ Y X = ‘Z’ Y CHAR++ X = ‘a’ N REST++ X = ‘z’ N Y Y CHAR++ REST++ N 设计思路如上图所示:图中NUMBER记录统计的数字的个数,CHAR记录统计的字符的个数,REST统计其他字符的个数。 实验结果分析 输入: 输入了12345asdASD-= 输出如下: 输出了NUMBER:5 CHAR:6 REST:2 说明数字有5个,字符有6个,剩下的其他字符为2个 实验体会 通过本次实验学习并实践了循环程序,更深理解了跳转语句的用法和输入输出字符语句的用法,并且下次上机前要做准备,避免急躁。 对本次试验的思考:此程序对某种类型的数最多只能显示9个,若统计个数超过九个时怎么办?对程序最后显示部分稍加修改: 以显示NUMBER为例子: EXIT: LEA DX,STR1 MOV AH,09H INT 21H MOV AL,NUMBER ;将NUMBER送到AL中 MOV AH,0;对应百位数字 MOV BL,100 DIV BL MOV BL,AH ;商在AH中 MOV AH,2 ;显示最高位(余数在AL中(除以100的余数为最高位)) ADD AL,30H MOV DL,AL INT 21H MOV AL,BL;对应十位数字 MOV AH,0 MOV BL,10 DIV BL MOV BL,AH ;商在AH中 MOV AH,2 ;显示中间位(余数在AL中(除以10的余数为中间位)) ADD AL,30H MOV DL,AL INT 21H MOV DL,BL;对应个位数字 ADD DL,30H MOV AH,2 ;显示个位 INT 21H 输入12345678901ABCDEFGHIJK== 输出: 原理: 16位DIV除法和二号调用 三位数被放到AL中,先是除以100得到百位数字,而后除以10得到十位数字,和余下的个位数字。 被除数在AX中,商在AL中,余数在AH中 附件(实验代码,需要注释): DATA SEGMENT NUMBER DB 0 ;定义NUMBER为统计的数字个数 CHAR DB 0 ;定义CHAR为统计的字符个数 REST DB 0 ;定义REST为统计的其他字符个数 STR1 DB NUMBER:,$ ;定义字符串,用来显示结果 STR2 DB CHAR:,$ STR3 DB REST:,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX AGAIN: ;循环体 MOV AH,1 ;输入字符 INT 21H CMP AL,0DH ;判断输入的字符等不等于换行 JZ EXIT ;若等于换行符,就跳到显示最后结果步骤 CMP AL,0 ;若不等于‘换行’,和‘0’比较 JNL NEXT1 ;若字符 = ‘0’,跳到NEXT1 INC REST ;否则,REST++ JMP AGAIN ;跳回AGAIN,继续输入 NEXT1: CMP AL,9 ;若字符 =‘9’ JBE N1 ;则跳到N1,实现NUMBER++ CMP AL,65 ;否则比较字符和A JNL NEXT2 ;若字符 = ‘A’,跳到NEXT2 INC REST JMP AGAIN NEXT2: CMP AL,90 ;比较字符和Z JBE N2 ;若字符 = ‘Z’,跳到N2 CMP AL,97 ;否则比较字符和a JNL NEXT3 ;若字符 = a,则跳到NEXT3 INC RES

文档评论(0)

2266685ss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档