汇编原理实验 --类型统计(字母,数字,其他字符的个数)
生活随笔
收集整理的這篇文章主要介紹了
汇编原理实验 --类型统计(字母,数字,其他字符的个数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實驗3: (類型統計,統計字母,數字,其他字符在一個句子中出現的次數)
算法設計:用三個變量分別記錄用戶輸入數字類型,字母類型和其他類型的個數。根據ACSII碼判斷類型,遍歷完整個句子后調用十進制數輸出子程序dispdec輸出統計數字
程序實現:定義緩沖區:存放用戶輸入的句子,用digit,letter,other分別代表統計出的數字,字母,其他字符的個數,都初始化為0。用bx指向用戶輸入句子的首地址,然后判斷是30h~39h則digit自增,還是41h~5Ah或61h~7Ah則letter自增,否則other自增,然后bx自增,不斷循環判斷,循環次數為句子長度,即之前cx=用戶輸入句子的長度。最后輸出結果
DATAS SEGMENT msg1 db 'enter sentence:$'keepcin db 80db 0db 80 dup(0)letter db 0 digit db 0 other db 0DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼 STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXmov dx,offset msg1call print ;"entersentence"mov dx,offset keepcincall cinmov bx,offset keepcin+1;call printresultmov cl,[bx] ;輸入句子的長度again1:inc bxmov al,[bx]cmp al,30h jb otherresultcmp al,40hjb digitresultcmp al,41hjb otherresultcmp al,5BHjb letterresultcmp al,61Hjb otherresultcmp al,7bHjb letterresultjmp otherresultletterresult:inc letterjmp loopnext digitresult:inc digitjmp loopnext otherresult:inc other loopnext:loop again1;輸出結果mov dh,0mov dl,lettercall dispdeccall printnewlinemov dl,digitcall dispdeccall printnewlinemov dl,othercall dispdecMOV AH,4CHINT 21H;打印固定字符串 print procpush axmov ah,09hint 21hpop axret print endp;用戶輸入 cin procpush axmov ah,0AHint 21hpop axcall printnewlineret cin endp ;輸出換行 printnewline procpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axret printnewline endp ;十進制輸出,入口參數dx dispdec procpush axpush bxpush cxpush dxmov ax,dxxor dx,dxmov bx,10mov cx,0 a:cmp ax,10jb okdiv bxadd dl,30hpush dxxor dx,dxinc cxjmp a ok:add al,30hpush axinc cx b:pop dxmov ah,2int 21hloop bpop dxpop cxpop bxpop axret dispdec endp CODES ENDSEND START輸出結果如圖:
總結
以上是生活随笔為你收集整理的汇编原理实验 --类型统计(字母,数字,其他字符的个数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编原理实验 --查找子字符串的位置
- 下一篇: 汇编原理实验 --电话簿的实现