统计键盘输入字符、数字个数”.docx

上传人:聆听****声音 文档编号:747413 上传时间:2023-04-30 格式:DOCX 页数:4 大小:47.23KB
下载 相关 举报
统计键盘输入字符、数字个数”.docx_第1页
第1页 / 共4页
统计键盘输入字符、数字个数”.docx_第2页
第2页 / 共4页
统计键盘输入字符、数字个数”.docx_第3页
第3页 / 共4页
统计键盘输入字符、数字个数”.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

统计键盘输入字符、数字个数”.docx

《统计键盘输入字符、数字个数”.docx》由会员分享,可在线阅读,更多相关《统计键盘输入字符、数字个数”.docx(4页珍藏版)》请在冰点文库上搜索。

统计键盘输入字符、数字个数”.docx

“统计键盘输入字符、数字个数”

实验报告

一、实验目的

1、学习循环程序结构,掌握编写循环处理程序的方法和技巧。

2、通过循环结构程序熟悉汇编语言程序设计的主要方法。

3、了解和掌握程序设计过程中算法的选择。

4、掌握汇编语言的调试方法。

二、实验内容

从键盘输入一系列字符(每种字符不超过9)并以回车符结束,请统计出字母、数字及其它字符的个数,最后在屏幕上显示计数结果。

三、实验过程

1、编写程序,后附程序代码

2、测试程序

输入四组不同的测试字符串,得到NUMBER值为数字个数,CHAR值为字母个数,REST为符号个数。

三、结果分析和思考

结果分析:

由测试中可以看出,三种字符显示的个数范围是0~9,大于9之后的就会显示个数的数值加30H之后的数值对应的ASCII码值,这是因为显示个数的时候,我的思路是将个数分别存储在NUMBER,CHAR,REST中,然后显示它们的值加30H后所对应的ASCII码值,因此如果想要显示两位数、三位数的数值,就要在最后输出的时候改变输出的方法,将两位数、三位数的数值输出。

改进思路:

先将前面程序计算出的个数三位数放到AL中,然后调用除法指令DIV除以100得到百位数字,而后除以10得到十位数字,和余下的个位数字。

就可以得到000~999显示范围的字符个数。

在调用除法的过程中,被除数在AX中,商在AL中,余数在AH中

以数字个数NUMBER为例:

MOVAL,NUMBER将NUMBER送到AL

MOV AH,0;对应百位

MOVBL100

DIVBL

MOVBL,AH;余数在AH

MOV AH,2    ;显示最高位(除以100的余数为最高位,存在AH中)

ADD AL,30H 

MOV DL,AL 

INT 21H

MOVAL,BL;对应十位

MOVAH,0

MOVBL,10

DIVBL

MOVBL,AH;余数在AH

MOVAH,2;显示中间位(除以10的余数为中间位,存在AH中)

ADDAL,30H

MOVDL,AL

INT21H

MOVDL,BL;对应个位数字

ADDDL,30H

MOVAH,2;显示个位

INT21H

四、代码

DSEGSEGMENT

NUMBERDB0 ;存储数字个数

CHARDB0 ;字母个数

RESTDB0 ;字符个数

STR1DB'NUMBER:

','$';输出提示”NUMBER:

STR2DB'CHAR:

','$' ;输出提示”CHAR:

STR3DB'REST:

','$' ;输出提示”REST:

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

AGAIN:

MOVAH,1

INT21H

CMPAL,0DH;判断字符是否为回车

JZEXIT;是回车,跳转到结束语句

CMPAL,'0';不是回车,判断是否大于’0’

JNLNEXT1;大于‘0’,跳转到NEXT1

INCREST ;小于’0’,是字符,REST自增1

JMPAGAIN;AGAIN循环

NEXT1:

CMPAL,'9';判断是否小于’9’

JBEN1 ;小于9,是数字,跳转到N1

CMPAL,65;大于9,不是数字,跟’a’比较

JNLNEXT2;大于’a’,跳转到NEXT2

INCREST;小于’a’,是字符,REST自增1

JMPAGAIN;返回循环

NEXT2:

CMPAL,90;跟’z’作比较

JBEN2;小于’z’,是字母,跳转到N2

CMPAL,97;大于’z’,跟‘A’比较

JNLNEXT3;大于’A’跳转到NEST3

INCREST;大于’z’,小于‘A’,是字符,REST自增1

JMPAGAIN;返回循环

NEXT3:

CMPAL,122;跟’Z’比较

JBEN2 ;小于’Z’,是大写字母,跳转到N2

INCREST;不是字母,是字符,REST自增1

JMPAGAIN;返回循环

N1:

INCNUMBER;判断为数字,NUMBER自增1

JMPAGAIN ;返回循环

N2:

INCCHAR;判断为字母,CHAR自增1

JMPAGAIN;返回循环

EXIT:

LEADX,STR1

MOVAH,09H

INT21H ;显示提示“NUMBER:

MOVDL,NUMBER ;NUMBER送到DL

ADDDL,30H

MOVAH,2

INT21H ;显示NUMBER的值

LEADX,STR2

MOVAH,09H

INT21H ;显示提示“CHAR:

MOVDL,CHAR ;CHAR送到DL

ADDDL,30H

MOVAH,2

INT21H ;显示CHAR的值

LEADX,STR3

MOVAH,09H

INT21H ;显示提示”REST:

MOVDL,REST ;REST送到DL

ADDDL,30H

MOVAH,2

INT21H ;显示REST的值

MOVAH,4CH

INT21H ;程序结束

CSEGENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2