微機(jī)原理課程設(shè)計(jì)-字符串分類統(tǒng)計(jì)_第1頁
微機(jī)原理課程設(shè)計(jì)-字符串分類統(tǒng)計(jì)_第2頁
微機(jī)原理課程設(shè)計(jì)-字符串分類統(tǒng)計(jì)_第3頁
微機(jī)原理課程設(shè)計(jì)-字符串分類統(tǒng)計(jì)_第4頁
微機(jī)原理課程設(shè)計(jì)-字符串分類統(tǒng)計(jì)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 微機(jī)原理 課程設(shè)計(jì)報(bào)告題 目: 字符串分類統(tǒng)計(jì) 學(xué)生姓名: 周喜民 學(xué) 號(hào): 32 專業(yè)班級(jí): 計(jì)0601 同組姓名: 趙晏龍 陳順 指導(dǎo)教師: 范軼彥 設(shè)計(jì)時(shí)間: 2010.1.4-2010.1.10 指導(dǎo)老師意見:評(píng)定成績(jī): 簽名: 日期:目錄一、需求分析2二、系統(tǒng)設(shè)計(jì)31. 內(nèi)容32思路3三、系統(tǒng)總體框圖5四、調(diào)試分析6五、實(shí)驗(yàn)結(jié)果6六、程序設(shè)計(jì)7七、總結(jié)13八、參考文獻(xiàn)14一、需求分析 本程序主要用于,把輸入的一串字符分類統(tǒng)計(jì),分別統(tǒng)計(jì)出數(shù)字、大寫字符、小寫字符和其他字符的個(gè)數(shù)。本程序采用匯編語言編程,定義了宏、比較判斷、循環(huán)調(diào)用、統(tǒng)計(jì)等等,非常人性化的把統(tǒng)計(jì)的結(jié)果顯示出來。比如你輸

2、入一串?dāng)?shù)字“12345”,它會(huì)顯示出你輸入的這串?dāng)?shù)字,并顯示數(shù)字的個(gè)數(shù)為5,同時(shí)顯示其他相應(yīng)類字符為空。 程序接收用戶鍵入的一行字符(字符長(zhǎng)度不大于80個(gè),以回車結(jié)束),并把字符,數(shù)字,其它字符分類計(jì)數(shù),然后將結(jié)果存入以Letter,Digit,Other為名的存儲(chǔ)單元中。 程序可采用0AH斷將鍵入的字符直接送至鍵盤緩沖區(qū),然后逐個(gè)取出分類計(jì)數(shù)。也可采用01H在接收字符后進(jìn)行分類奇數(shù)在存入緩沖區(qū)。程序需要進(jìn)入DEBUG看計(jì)數(shù)結(jié)果二、系統(tǒng)設(shè)計(jì)1.內(nèi)容從鍵盤輸入任意一個(gè)字符串,以回車作為結(jié)束符并顯示,分別統(tǒng)計(jì)并顯示出其中數(shù)字字符、大寫字符、小寫字符以及其它字符的個(gè)數(shù)。2思路(1).首先定義兩個(gè)宏,

3、一個(gè)用于輸出統(tǒng)計(jì)各字符的個(gè)數(shù),另一個(gè)用于輸出字符串。(2).在數(shù)據(jù)段中定義各種字符提示信息以便程序清晰明白。(3).定義數(shù)據(jù)緩沖區(qū)用于存放輸入的字符串,定義NUM區(qū)用于存放統(tǒng)計(jì)的大寫字符、小寫字符、數(shù)字以及其它字符的個(gè)數(shù)。定義OTHERCHAR、BIGCHAR、SMALLCHAR以及堆棧用于存放統(tǒng)計(jì)的相應(yīng)字符保存,以便后來輸出。(4).首先調(diào)用DOS 10號(hào)功能用DX指定BUF區(qū),將輸入的字符串保存到BUF區(qū)中。(5).將BUF+1的內(nèi)容取出來,判斷是否為0,如果為0表示沒有輸入任何字符,則程序跳到NEXTLAP(輸出提示信息You do not input any string!),然后顯示

4、字符串(Do you want to input a string again(Y/N)?)然后調(diào)用DOS 1號(hào)功能獲取您從鍵盤輸入的數(shù),判斷是否為Y或y如果是則將程序跳到剛開始處重新執(zhí)行,如果不是這兩個(gè)字符則程序結(jié)束。(6).如果輸入了字符串,則調(diào)用DOS 2號(hào)功能將BUF里的內(nèi)容輸出來(2號(hào)功能可以輸出$符號(hào)而9號(hào)功能遇到$符號(hào)就終止)。(7).取字符出來進(jìn)行比較統(tǒng)計(jì),如果它比30H大且比39H小則為數(shù)字,如果比41H大且比5AH小則為大寫字符,如果比61H大且比7AH小則為小寫字符,如果不是這三種情況則為其它字符。注:DX存數(shù)字個(gè)數(shù),BX存小寫字母?jìng)€(gè)數(shù),DI存大寫字母?jìng)€(gè)數(shù),BP存其它字符

5、個(gè)數(shù)。(8).將數(shù)字個(gè)數(shù)、大寫字母?jìng)€(gè)數(shù)、小寫字母?jìng)€(gè)數(shù)、其它字符個(gè)數(shù)依次放入NUM區(qū)。(9).依次輸出各字符: a.判斷數(shù)字個(gè)數(shù)是否為0,如果為0則輸出提示沒有此類數(shù)據(jù),否則輸出數(shù)字個(gè)數(shù)以及有哪些數(shù)字。 b.判斷大寫字符個(gè)數(shù)是否為0,如果為0則輸出提示沒有此類數(shù)據(jù),否則輸出大寫字符的個(gè)數(shù)以及輸入的哪些大寫字符。 c.判斷小寫字符個(gè)數(shù)是否為0,如果為0則輸出提示沒有此類數(shù)據(jù),否則輸出小寫字符的個(gè)數(shù)以及輸入的哪些小寫字符。 d.判斷其它字符個(gè)數(shù)是否為0,如果為0則輸出提示沒有此類數(shù)據(jù),否則輸出其它字符的個(gè)數(shù)以及輸入的哪些其它字符。(10).然后將程序跳到NEXTLAP繼續(xù)執(zhí)行,依次下去。三、系統(tǒng)總體

6、框圖四、調(diào)試分析本程序主要用于,把輸入的一串字符分類統(tǒng)計(jì),分別統(tǒng)計(jì)出數(shù)字、大寫字符、小寫字符和其他字符的個(gè)數(shù)。本程序采用匯編語言編程,定義了宏、比較判斷、循環(huán)調(diào)用、統(tǒng)計(jì)等等,非常人性化的把統(tǒng)計(jì)的結(jié)果顯示出來。比如你輸入一串?dāng)?shù)字“12345”,它會(huì)顯示出你輸入的這串?dāng)?shù)字,并顯示數(shù)字的個(gè)數(shù)為5,同時(shí)顯示其他相應(yīng)類字符為空。從鍵盤輸入任意一個(gè)字符串,以回車作為結(jié)束符并顯示,分別統(tǒng)計(jì)并顯示出其中數(shù)字字符、大寫字符、小寫字符以及其它字符的個(gè)數(shù)。五、實(shí)驗(yàn)結(jié)果1)所有字符都有的時(shí)候:2)其中有字符類型缺少的時(shí)候:3)什么字符都不輸入的時(shí)候:六、程序設(shè)計(jì)shuchu MACRO ;定義宏,用來輸出統(tǒng)計(jì)其它字符

7、、數(shù)字、大小寫 個(gè)數(shù) LOCAL NEXT MOV AH,0 MOV BL,10 DIV BL MOV DL,AL MOV BH,AH ;將余數(shù)暫時(shí)存放在BH中 CMP AL,0 JZ NEXT OR DL,30h MOV AH,2 INT 21HNEXT: MOV DL,BH OR DL,'0' ;輸出余數(shù) MOV AH,2 INT 21H dismsg CRLF ;回車換行 ENDM dismsg MACRO message ;輸出字符串 LEA DX,message MOV AH,9 INT 21H ENDMDATAS SEGMENTSTR DB 'The inp

8、ut string is:$'STR1 DB 'Please input a string:$'STR2 DB 'The integer is:$'STR3 DB 'The bigchar is:$'STR4 DB 'The smallchar is:$'STR5 DB 'The otherchar is:$' STR6 DB 'The date of integer is null!$'STR7 DB 'The date of otherchar is null!$'STR

9、8 DB 'The data of bigchar is null!$'STR9 DB 'The data of smallchar is null!$'NUM2 DB 'The number of integer is:$'NUM3 DB 'The number of bigchar is:$'NUM4 DB 'The number of smallchar is:$'NUM5 DB 'The number of otherchar is:$' NUM6 DB 'Do you want t

10、o input a string again?(Y/N):$'NUM7 DB 'You do not input any string!$'BUF DB 100 ;定義緩沖區(qū)用來存放輸入的字符串 DB ? DB 100 DUP (24H)CRLF DB 0AH,0DH,'$'NUM DB 4 DUP(?)BIGCHAR DB 100 DUP(24H),0AH,0DH,'$'SMALLCHAR DB 100 DUP(24H),0AH,0DH,'$'OTHERCHAR DB 100 DUP(24H),0AH,0DH,'

11、$'TAIL DB ? ;用來存放其它字符的個(gè)數(shù)DATAS ENDSSTACKS SEGMENT STACK1 DW 100 DUP(24H) TOP LABEL WORDSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: AGAIN1: MOV AX,STACKS MOV SS,AX MOV SP,OFFSET TOP MOV AX,DATAS MOV DS,AX dismsg STR1 ;顯示輸入提示信息 MOV AH,10 ;輸入字符串 LEA DX,BUF INT 21H dismsg CRLF ;

12、回車換行 CMP BUF+1,0 JZ NEXTLAP dismsg STR ;提示輸入字符串 MOV CL,BUF+1 LEA SI,BUF+2ABC: MOV DL,SI ;用于輸出緩沖區(qū)里的輸入字符串 MOV AH,2 INT 21H INC SI LOOP ABC dismsg CRLF ;回車換行 MOV CL,BUF+1 ;將字符串的個(gè)數(shù)放入CL LEA SI,BUF+2 ;取字符串的首位置 MOV DX,0 ;DX統(tǒng)計(jì)數(shù)字個(gè)數(shù) MOV BX,0 ;BX統(tǒng)計(jì)小寫字母?jìng)€(gè)數(shù) MOV DI,0 ;DI統(tǒng)計(jì)大寫字母?jìng)€(gè)數(shù) MOV BP,0 ;BP統(tǒng)計(jì)其他字符的個(gè)數(shù) MOV AH,0L1: M

13、OV AL,SI CMP AL,30H JL NEXT1 CMP AL,39H JG L2 PUSH AX INC DX ;統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù) JMP NEXT L2: CMP AL,41H ;統(tǒng)計(jì)大寫字符的個(gè)數(shù) JL NEXT1 CMP AL,5AH JG L3 MOV BIGCHARDI,AL INC DI JMP NEXT L3: CMP AL,61H ;統(tǒng)計(jì)小寫字符的個(gè)數(shù) JL NEXT1 CMP AL,7AH JG NEXT1 MOV SMALLCHARBX,AL INC BX JMP NEXT NEXT1: MOV OTHERCHARBP,AL INC BP ;統(tǒng)計(jì)其它字符的個(gè)數(shù)N

14、EXT: INC SI DEC CL JNZ L1 MOV NUM,DL ;將統(tǒng)計(jì)的個(gè)數(shù)存放在NUM的存儲(chǔ)區(qū) MOV AX,DI ;數(shù)字個(gè)數(shù)放在NUM,大寫字符個(gè)數(shù)放在NUM+1 MOV NUM+1,AL ;小寫字符個(gè)數(shù)放在NUM+2,其他字符的個(gè)數(shù)放在NUM+3 MOV NUM+2,BL MOV AX,BP MOV TAIL,AL ;將其它字符的個(gè)數(shù)送入TAIL保存,以便后來輸出(否則9號(hào)功能輸出遇$則退出) MOV NUM+3,AL CMP NUM,0 ;判斷數(shù)字個(gè)數(shù)如果為0則輸出提示符,否則循環(huán)輸出 JZ NNULL dismsg STR2 ;輸出數(shù)字字符的提示符 MOV CL,NUM

15、MOV BP,OFFSET TOP SUB BP,2OK: MOV DX,STACK1BP MOV AH,2 INT 21H SUB BP,2 LOOP OK dismsg CRLF dismsg NUM2 ;輸出數(shù)字字符數(shù)字的提示符 MOV AL,NUM ;輸出數(shù)字字符的個(gè)數(shù) shuchu JMP NNULL1NNULL: dismsg STR6 NNULL1: dismsg CRLF CMP NUM+1,0 ;判斷大寫字符的個(gè)數(shù)如果為0則輸出提示符,否則以字符串形式輸出 JZ BNULL dismsg STR3 ;輸出大寫字符的提示符 dismsg BIGCHAR dismsg CRLF

16、dismsg NUM3 ;輸出大寫字符數(shù)字個(gè)數(shù)提示符 MOV AL,NUM+1 ;輸出大寫字符的個(gè)數(shù) shuchu JMP BNULL1 BNULL: dismsg STR8BNULL1: dismsg CRLF CMP NUM+2,0 ;判斷小寫個(gè)數(shù),如果為0則輸出提示符,否則以字符串形式輸出 JZ SNULL dismsg STR4 ;輸出小寫字符的提示符 dismsg SMALLCHAR dismsg CRLF dismsg NUM4 ;輸出小寫字符數(shù)字個(gè)數(shù)的提示符 MOV AL,NUM+2 ;輸出小寫字符的個(gè)數(shù) shuchu JMP SNULL1SNULL: dismsg STR9SN

17、ULL1: dismsg CRLF CMP TAIL,0 ;判斷其他字符的個(gè)數(shù)如果為0則輸出提示符,否則循環(huán)輸出 JZ ONULL dismsg STR5 ;輸出其它字符的提示符 MOV CL,TAIL MOV SI,OFFSET OTHERCHARL4: ;輸出其它字符 MOV DL,SI MOV AH,2 INT 21H INC SI LOOP L4 dismsg CRLF dismsg NUM5 ;輸出其它字符個(gè)數(shù)的提示符 MOV AL,NUM+3 ;輸出其它字符的個(gè)數(shù) shuchu JMP AGAINONULL: dismsg STR7 JMP AGAINNEXTLAP: dismsg

18、 NUM7AGAIN: dismsg CRLF dismsg NUM6 MOV AH,01H INT 21H MOV BL,AL dismsg CRLF CMP BL,'Y' JZ AGAIN1 CMP BL,'y' JZ AGAIN1ONULL2: MOV AH,4CH INT 21HCODES ENDSEND START 七、總結(jié)微機(jī)原理與接口技術(shù)是一門很有趣的課程,任何一個(gè)計(jì)算機(jī)系統(tǒng)都是一個(gè)復(fù)雜的整體,學(xué)習(xí)計(jì)算機(jī)原理是要涉及到整體的每一部分。討論某一部分原理時(shí)又要涉及到其它部分的工作原理。這樣一來,不僅不能在短時(shí)間內(nèi)較深入理解計(jì)算機(jī)的工作原理,而且也很難孤

19、立地理解某一部分的工作原理。所以,在循序漸進(jìn)的課堂教學(xué)過程中,我總是處于“學(xué)會(huì)了一些新知識(shí),弄清了一些原來保留的問題,又出現(xiàn)了一些新問題”的循環(huán)中,直到課程結(jié)束時(shí),才把保留的問題基本搞清楚。學(xué)習(xí)該門課程知識(shí)時(shí),其思維方法也和其它課程不同,該課程偏重于工程思維,具體地說,在了解了微處理器各種芯片的功能和外部特性以后,剩下額是如何將它們用于實(shí)際系統(tǒng)中,其創(chuàng)造性勞動(dòng)在于如何用計(jì)算機(jī)的有關(guān)技術(shù)和廠家提供的各種芯片,設(shè)計(jì)實(shí)用的電路和系統(tǒng),再配上相應(yīng)的應(yīng)用程序,完成各種實(shí)際應(yīng)用項(xiàng)目。這次實(shí)驗(yàn)并不是很難,主要的困難來自對(duì)程序的理解。功夫不負(fù)有心人,經(jīng)過四個(gè)人的合作和努力,我們最后對(duì)實(shí)驗(yàn)的原理有了清晰的認(rèn)識(shí)。雖然實(shí)驗(yàn)臺(tái)上的很多模塊單元沒有用到,但是就系統(tǒng)功能來說,我覺得我們做的還是不錯(cuò)的。這次課設(shè)卻讓我們對(duì)實(shí)驗(yàn)臺(tái)有了足夠的了解,讓我們知道了實(shí)驗(yàn)臺(tái)上各個(gè)模塊的用法;而且它還讓我們對(duì)自己動(dòng)手寫程序來控制實(shí)驗(yàn)臺(tái)的運(yùn)作有了一定的基礎(chǔ)。雖然實(shí)驗(yàn)臺(tái)只是一個(gè)小型的模擬平臺(tái),但是通過對(duì)它的學(xué)習(xí)和操作,我們對(duì)有關(guān)接口的知識(shí)將會(huì)有一個(gè)更

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論