;This is made by wq ;編程從鍵盤讀入不超過256個字符的字符串; ;編程統(tǒng)計其中數(shù)字的個數(shù),,并將結(jié)果在屏幕上輸出,。 ;經(jīng)進一步完善(能輸出三位數(shù)啦)
![](http://image87.360doc.com/DownloadImg/2015/07/1804/56160387_1.jpeg)
DATAS SEGMENT sum db 00h ;累加器 string db 256 dup(0dh);存放字符 tital db 'This program is made by wq.',0dh,0ah db 'It is used to calculater the amout of the number in the string ',0dh,0ah,'$' tital1 db 'PLease input the string: ','$' overs db 'Amout of the nember is : ','$' tital2 db 'Do you want to have a try again(if yes,input "y" else "n") : ',0dh,0ah, '$' tital3 db 'Welcome to use this program again','$' kongzi db 0dh,0ah,'$' result db 256 dup(?) DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX mov ax,offset tital;輸出抬頭 mov dx,ax mov ah,09h int 21h main: lea dx,kongzi mov ah,09h int 21h lea dx,tital1 ;輸出抬頭1 mov ah,09h int 21h mov si,0 mov ax,offset string mov dx,ax again: ;輸入字符 mov ah,01h int 21h cmp al,0dh jz then mov string[si],al inc si jmp again ;輸入完畢 then: ;傳輸 mov di,0 mov si,0 mov bl,0 exchang: ;判斷字符的性質(zhì) lea dx,string cmp string[si],0dh jz over cmp string[si],30h jnb next inc si dec cx jmp exchang next: mov al,string[si] cmp string[si],39h jbe calculator inc si dec cx jmp exchang calculator: lea dx,result mov result[di],al inc si inc sum inc di dec cx jmp exchang over: ;處理并輸出數(shù)字個數(shù) lea dx,overs mov ah,09h int 21h mov ax,0000h mov al,sum[0] ;判斷是否為三位數(shù) cmp al,64h jae san mov bl,10 div bl mov dx,ax add dx,3030h mov ah,02h int 21h mov dl,dh mov ah,02h int 21h jmp a san: mov bl,10 ;如果是三位數(shù)則多處理一位 div bl mov cl,ah ;把第一位給cl add cl,30h mov ah,00h div bl ;第二次除十 mov dx,ax add dx,3030h mov ah,02h int 21h mov dl,dh mov ah,02h int 21h mov dl,cl mov ah,02h int 21h a: lea dx,kongzi mov ah,09h ;判斷是否循環(huán)操作 int 21h lea dx,tital2 mov ah,09h int 21h mov ah,01h int 21h cmp al,'y' je main lea dx,tital3 mov ah,09h int 21h MOV AH,4CH INT 21H CODES ENDS END START
|