统计键盘输入字符和数字个数实验报告Word下载.docx
《统计键盘输入字符和数字个数实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《统计键盘输入字符和数字个数实验报告Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
输入:
`
输入了12345asdASD-=
输出如下:
输出了NUMBER:
5CHAR:
6REST:
2
说明数字有5个,字符有6个,剩下的其他字符为2个
六、实验体会
通过本次实验学习并实践了循环程序,更深理解了跳转语句的用法和输入输出字符语句的用法,并且下次上机前要做准备,避免急躁。
.
对本次试验的思考:
此程序对某种类型的数最多只能显示9个,若统计个数超过九个时怎么办对程序最后显示部分稍加修改:
以显示NUMBER为例子:
EXIT:
LEADX,STR1
MOVAH,09H
INT21H
MOVAL,NUMBER;
将NUMBER送到AL中
MOVAH,0;
对应百位数字
MOVBL,100
DIVBL
¥
MOVBL,AH;
商在AH中
MOVAH,2;
显示最高位(余数在AL中(除以100的余数为最高位))
ADDAL,30H
MOVDL,AL
MOVAL,BL;
对应十位数字
MOVAH,0
MOVBL,10
(
显示中间位(余数在AL中(除以10的余数为中间位))
MOVDL,BL;
对应个位数字
ADDDL,30H
显示个位
"
输入ABCDEFGHIJK==
输出:
原理:
16位DIV除法和二号调用
三位数被放到AL中,先是除以100得到百位数字,而后除以10得到十位数字,和余下的个位数字。
被除数在AX中,商在AL中,余数在AH中
《
附件(实验代码,需要注释):
DATASEGMENT
NUMBERDB0;
定义NUMBER为统计的数字个数
CHARDB0;
定义CHAR为统计的字符个数
RESTDB0;
定义REST为统计的其他字符个数
STR1DB'
NUMBER:
'
'
$'
;
定义字符串,用来显示结果
STR2DB'
CHAR:
STR3DB'
REST:
,
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
AGAIN:
循环体
MOVAH,1;
输入字符
CMPAL,0DH;
判断输入的字符等不等于'
换行'
JZEXIT;
若等于换行符,就跳到显示最后结果步骤
CMPAL,'
0'
若不等于‘换行’,和‘0’比较
JNLNEXT1;
若字符>
=‘0’,跳到NEXT1
INCREST;
否则,REST++
JMPAGAIN;
跳回AGAIN,继续输入
NEXT1:
9'
若字符<
=‘9’
JBEN1;
则跳到N1,实现NUMBER++
CMPAL,65;
否则比较字符和'
A'
>
JNLNEXT2;
=‘A’,跳到NEXT2
INCREST
JMPAGAIN
NEXT2:
CMPAL,90;
比较字符和'
Z'
JBEN2;
=‘Z’,跳到N2
CMPAL,97;
a'
JNLNEXT3;
='
,则跳到NEXT3
否则REST++
)
继续循环
NEXT3:
CMPAL,122;
z'
=‘z’,跳到N2
N1:
N1体
INCNUMBER;
实现NUMBER++
和继续循环
N2:
N2体
INCCHAR;
实现CHAR++
输出
LEADX,STR1;
输出“NUMBER:
”
—
MOVDL,NUMBER
ADDDL,30H;
因为MOVAH,2是显示字符,所以要显示数字,则显示数字的ASCII码
显示统计的数字个数
LEADX,STR2;
输出“CHAR:
”,为了美观,CHAR前面有一个空格
MOVDL,CHAR
CHAR加上30H再显示
显示统计字符个数
!
LEADX,STR3;
输出“REST:
”,为了美观,REST前面有一个空格
MOVDL,REST
REST加上30H再显示
显示统计的其他字符个数
MOVAH,4CH
CODEENDS
【
ENDSTART
当统计数字超过9个时,改进的程序:
NUMBERDB0
CHARDB0
RESTDB0
[
?
INCNUMBER
/
INCCHAR
MOVAL,NUMBER
|
、
-
LEADX,STR2
MOVAL,CHAR
!
LEADX,STR3
MOVAL,REST
}