从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果显示在屏幕上,用EXE格式实现。

问题

从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果显示在屏幕上,用EXE格式实现。

源程序

data segmenthintinput db "please input a string:$";输入提示语hintoutput db "non-number:$";输出提示语str  db 30,?,30 dup(?);将输入的字符串保存在str中crlf db 0ah,0dh,'$';回车换行符
data ends
code segmentassume cs:code,ds:data
main proc far
start:mov ax,datamov ds,axlea dx,hintinput;输出提示语mov ah,09hint 21hlea dx,crlf     ;回车换行mov ah,09hint 21hlea dx,strmov ah,0ahint 21hlea dx,crlf     ;回车换行mov ah,09hint 21hlea si,str+2;si保存str首地址mov cl,str+1;cl保存str长度mov al,0  ;用al非数字计数mov ch,0
L1:mov dl,[si] ;把str中的数依次送入dl中cmp dl,'0'  ;如果dl<0,al加1jb L2cmp dl,'9';如果dl>9,al加1ja L2cmp dl,'9'jbe L3
L2:inc al
L3:inc si  loop L1       lea dx,hintoutput;输出提示语mov ah,09hint 21hmov dl,alcmp dl,9h       jbe L             ;如果非字母个数小于10,则直接加30输出mov dh,0           ;否则把dx存入ax中mov ax,dxmov bl,10               ;ax除以10后,ah作为商div bl                              ;al作为余数mov dl,aladd dl,30h            ;先输出商,再输出余数,就是10进制了mov ah,02hint 21h mov dl,ah
L:add dl,30hmov ah,02hint 21hlea dx,crlf     ;回车换行mov ah,09hint 21h mov ax,4c00hint 21h
main endp
code ends
end start

运行结果示例

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部