统计键盘输入字符、数字个数”Word文档格式.docx
《统计键盘输入字符、数字个数”Word文档格式.docx》由会员分享,可在线阅读,更多相关《统计键盘输入字符、数字个数”Word文档格式.docx(4页珍藏版)》请在冰豆网上搜索。
改进思路:
先将前面程序计算出的个数三位数放到AL中,然后调用除法指令DIV除以100得到百位数字,而后除以10得到十位数字,和余下的个位数字。
就可以得到000~999显示范围的字符个数。
在调用除法的过程中,被除数在AX中,商在AL中,余数在AH中
以数字个数NUMBER为例:
MOVAL,NUMBER将NUMBER送到AL
MOV
AH,0;
对应百位
MOVBL100
DIVBL
MOVBL,AH;
余数在AH
AH,2
;
显示最高位(除以100的余数为最高位,存在AH中)
ADD
AL,30H
DL,AL
INT
21H
MOVAL,BL;
对应十位
MOVAH,0
MOVBL,10
DIVBL
MOVAH,2;
显示中间位(除以10的余数为中间位,存在AH中)
ADDAL,30H
MOVDL,AL
INT21H
MOVDL,BL;
对应个位数字
ADDDL,30H
显示个位
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:
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
N1:
INCNUMBER;
判断为数字,NUMBER自增1
JMPAGAIN ;
N2:
INCCHAR;
判断为字母,CHAR自增1
EXIT:
LEADX,STR1
MOVAH,09H
INT21H ;
显示提示“NUMBER:
MOVDL,NUMBER ;
NUMBER送到DL
ADDDL,30H
MOVAH,2
显示NUMBER的值
LEADX,STR2
显示提示“CHAR:
MOVDL,CHAR ;
CHAR送到DL
显示CHAR的值
LEADX,STR3
显示提示”REST:
MOVDL,REST ;
REST送到DL
显示REST的值
MOVAH,4CH
程序结束
CSEGENDS
ENDSTART