3.定义10个字节的键盘缓冲区,然后键盘输入字符填满该缓冲区,做如下工作: (1)分别将输入键盘缓冲区的字符按数字,小写字母,大写字母,其他字符进行计数; 分别将这些计数值显示出来。 (2)分别将这
生活随笔
收集整理的這篇文章主要介紹了
3.定义10个字节的键盘缓冲区,然后键盘输入字符填满该缓冲区,做如下工作: (1)分别将输入键盘缓冲区的字符按数字,小写字母,大写字母,其他字符进行计数; 分别将这些计数值显示出来。 (2)分别将这
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
主要思想,分別與對應的ASCII值從小到大比較,決定是否是字符,數字等
datarea segment
??? str? db "please input a string:$"
?buf? db? 11
????? db? ?
?? db? 11? dup(?)
?srlf? db? 0Ah,0Dh,"$"
?count db "integer counts:"
?db?? 1 dup(?)?? ;數字個數
?db " lowercase counts:"
?db? 1 dup(?)? ;小寫子母個數
?db? " capital counts:"
?db??? 1? dup(?)?? ;大寫子母個數
?db? " other counts:"
?db?? 1 dup(?)?? ;其它字符的個數
?db? ' $'
?intercounts?? db? '0'? ;數字個數
?lowercasecounts?? db? '0';小寫字符個數
?capitalcounts??? db?? '0'? ;大寫字符個數
?othercounts?? db?? '0'? ;其它字符個數
datarea ends
;**************************************
stacks segment
?? db? 200? dup(?)??? ;申請200個字節空間
stacks? ends?
prognam? segment
;**********************************
main proc far
??? assume? cs:prognam,ds:datarea,ss:stacks
start:
??? push ds
?sub? ax,ax
?push ax
?mov ax,datarea
?mov ds,ax mov? ah,9?
?int 21h
?mov ah,10
?lea dx,buf
?int 21h
?
?lea dx,srlf
?mov ah,9
?int 21h
?
?mov bx,-1
??? mov cx,10
lopt:
??? add? bx,1?
??? mov al,buf[bx]
?mov ah,0
?cmp ax,30h??? ;和0的ASCII碼作比較
?jz? lopint
?js? lopoth
?cmp? ax,39h?? ;和9的ASCII碼作比較
?jz?? lopint
?js?? lopint
?cmp? ax,41h?? ;和A的作比較
?jz??? lopcap
?js??? lopoth
?cmp? ax,5Ah??? ;和Z作比較
?jz?? lopcap???
?js??? lopcap
?cmp? ax,61h?? ;和a作比較
?jz?? loplow???
?js?? lopoth
?cmp? ax,7ah?? ;和Z作比較
?jz?? loplow
?js?? loplow
?jmp?? lopoth
?
?
??
lopint:??????? ;給數字個數加一
??? add? intercounts,1
?loop? lopt
?jmp? addcount
loplow:??????? ;給小寫子母個數加1
??? add? lowercasecounts,1
?loop? lopt
?jmp addcount
lopcap:?????? ;給大寫子母個數加一
??? add? capitalcounts,1
?add? bx,1
?loop? lopt
?jmp addcount
lopoth:??????? ;給其他字符加一
??? add? othercounts,1
?loop? lopt
?jmp addcount
addcount:??????? ;將數都加到字符串count的問號位置
??? mov? al,intercounts
?mov? count[15],al
?mov? al,lowercasecounts
?mov? count[33],al
?mov? al,capitalcounts
?mov? count[51],al
?mov? al,othercounts
?mov? count[66],al
?
??? mov dx,offset count
?mov ah,09h
?int 21h
?mov ah,4ch
?int 21h ret?
main endp
prognam? ends
??? end start
??? str? db "please input a string:$"
?buf? db? 11
????? db? ?
?? db? 11? dup(?)
?srlf? db? 0Ah,0Dh,"$"
?count db "integer counts:"
?db?? 1 dup(?)?? ;數字個數
?db " lowercase counts:"
?db? 1 dup(?)? ;小寫子母個數
?db? " capital counts:"
?db??? 1? dup(?)?? ;大寫子母個數
?db? " other counts:"
?db?? 1 dup(?)?? ;其它字符的個數
?db? ' $'
?intercounts?? db? '0'? ;數字個數
?lowercasecounts?? db? '0';小寫字符個數
?capitalcounts??? db?? '0'? ;大寫字符個數
?othercounts?? db?? '0'? ;其它字符個數
datarea ends
;**************************************
stacks segment
?? db? 200? dup(?)??? ;申請200個字節空間
stacks? ends?
prognam? segment
;**********************************
main proc far
??? assume? cs:prognam,ds:datarea,ss:stacks
start:
??? push ds
?sub? ax,ax
?push ax
?mov ax,datarea
?mov ds,ax mov? ah,9?
?int 21h
?mov ah,10
?lea dx,buf
?int 21h
?
?lea dx,srlf
?mov ah,9
?int 21h
?
?mov bx,-1
??? mov cx,10
lopt:
??? add? bx,1?
??? mov al,buf[bx]
?mov ah,0
?cmp ax,30h??? ;和0的ASCII碼作比較
?jz? lopint
?js? lopoth
?cmp? ax,39h?? ;和9的ASCII碼作比較
?jz?? lopint
?js?? lopint
?cmp? ax,41h?? ;和A的作比較
?jz??? lopcap
?js??? lopoth
?cmp? ax,5Ah??? ;和Z作比較
?jz?? lopcap???
?js??? lopcap
?cmp? ax,61h?? ;和a作比較
?jz?? loplow???
?js?? lopoth
?cmp? ax,7ah?? ;和Z作比較
?jz?? loplow
?js?? loplow
?jmp?? lopoth
?
?
??
lopint:??????? ;給數字個數加一
??? add? intercounts,1
?loop? lopt
?jmp? addcount
loplow:??????? ;給小寫子母個數加1
??? add? lowercasecounts,1
?loop? lopt
?jmp addcount
lopcap:?????? ;給大寫子母個數加一
??? add? capitalcounts,1
?add? bx,1
?loop? lopt
?jmp addcount
lopoth:??????? ;給其他字符加一
??? add? othercounts,1
?loop? lopt
?jmp addcount
addcount:??????? ;將數都加到字符串count的問號位置
??? mov? al,intercounts
?mov? count[15],al
?mov? al,lowercasecounts
?mov? count[33],al
?mov? al,capitalcounts
?mov? count[51],al
?mov? al,othercounts
?mov? count[66],al
?
??? mov dx,offset count
?mov ah,09h
?int 21h
?mov ah,4ch
?int 21h ret?
main endp
prognam? ends
??? end start
總結
以上是生活随笔為你收集整理的3.定义10个字节的键盘缓冲区,然后键盘输入字符填满该缓冲区,做如下工作: (1)分别将输入键盘缓冲区的字符按数字,小写字母,大写字母,其他字符进行计数; 分别将这些计数值显示出来。 (2)分别将这的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查找数组中第K个最小值
- 下一篇: 快速排序(quick sort) C+