版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計任務(wù)書學生姓名:蔣宏專業(yè)班級:自動化0708班指導教師:石云張蔚工作單位:自動化學院題目: 鍵盤錄入數(shù)據(jù)的轉(zhuǎn)換與顯示初始條件:從鍵盤讀入二個五位十進制數(shù)(1位符號位+4位數(shù)值位,并將這二個十進制數(shù),分別轉(zhuǎn)換為二進制數(shù),然后求其和,再將和以十進制形式進行顯示。按Q 退出程序。要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求(1設(shè)計任務(wù)及要求分析(2方案比較及認證說明(3系統(tǒng)原理闡述(4硬件設(shè)計課題需要說明:硬件原理,電路圖,采用器件的功能說明(5軟件設(shè)計課題需要說明:軟件思想,流程圖,源程序及程序注釋(6調(diào)試記錄及結(jié)果分析(7總結(jié)(8參考資料(9附錄:芯片資
2、料或程序清單,軟件演示屏幕拷貝圖或硬件實物圖時間安排:1月18日1月20日:收集資料,方案選擇1月21日1月23日:整體流程,程序細節(jié)1月25日1月27日;調(diào)試程序,報告撰寫1月28:交設(shè)計報告,程序演示,答辯指導教師簽名:年月日系主任(或責任教師簽名:年月日摘要:本文所設(shè)計的程序是運行于硬件和DOS操作系統(tǒng)下的,本程序通過調(diào)用DOS下的基本輸入輸出中斷,實現(xiàn)數(shù)據(jù)的輸入和輸出。程序中有兩個子程序,輸入的兩個五位的十進制數(shù)通過調(diào)用一個叫ASC_TO_BIN的子程序可以將其轉(zhuǎn)換成二進制數(shù),然后求兩個二進制數(shù)的和,求和完成后,再調(diào)用一個叫BIN_TO_ASCII的子程序?qū)⒍M制和轉(zhuǎn)換成相應(yīng)的ASCI
3、I碼,調(diào)用DOS輸出中斷顯示在屏幕上,最后看用戶是否輸入的是Q或者q,若是則程序結(jié)束,若不是則程序循環(huán)。關(guān)鍵字:8086;DOS系統(tǒng);ASCII碼;中斷目錄1設(shè)計任務(wù)及要求分析 (11.1設(shè)計任務(wù) (11.2要求分析 (12方案比較及認證說明 (23系統(tǒng)原理闡述 (33.1統(tǒng)設(shè)計的軟硬件環(huán)境 (33.2統(tǒng)設(shè)計中用到的DOS調(diào)用 (34軟件設(shè)計說明 (54.1 ASCII碼轉(zhuǎn)換成二進制算法實現(xiàn) (54.2二進制轉(zhuǎn)換成ASCII碼算法實現(xiàn) (54.3主程序結(jié)構(gòu)分析 (54.4子程序結(jié)構(gòu)分析 (64.5中斷程序的結(jié)構(gòu)分析 (85調(diào)試記錄及結(jié)果分析 (95.1調(diào)試記錄 (95.2調(diào)試結(jié)果分析 (9總結(jié)
4、和心得體會 (10參考文獻 (11附錄一源程序和程序注釋 (12附錄二程序運行結(jié)果截圖 (16附錄三本科生課程設(shè)計成績評定表 (17附錄四評定項目表 (19鍵盤錄入數(shù)據(jù)的轉(zhuǎn)換與顯示1設(shè)計任務(wù)及要求分析從鍵盤讀入二個五位十進制數(shù)(1位符號位+4位數(shù)值位,并將這二個十進制數(shù),分別轉(zhuǎn)換為二進制數(shù),然后求其和,再將和以十進制形式進行顯示。按Q退出程序。從設(shè)計任務(wù)中可以看出此次課設(shè)要求是:從鍵盤中輸入兩個五位十進制數(shù)(格式如-8888、+9999等,顯然通過鍵盤輸入的此類十進制數(shù)實際上輸入的是對應(yīng)字符的ASCII 碼,若想求兩個數(shù)的和必須先將這兩個數(shù)對應(yīng)的二進制數(shù)求出,然后再求其和,求和完成后將二進制數(shù)
5、再轉(zhuǎn)換成對應(yīng)的十進制數(shù)用顯示器輸出,完成兩個五位十進制數(shù)的求和然后以十進制的形式顯示。2方案比較及認證說明輸入輸出方式的比較。方案一:BIOS功能調(diào)用方式輸入輸出數(shù)據(jù)。此方案使用相對復雜一些,而其我們對BIOS 功能調(diào)用不是很熟悉。方案二:MSDOS功能調(diào)用的方式輸入輸出數(shù)據(jù)。此方案簡單實用、由于我們對MSDOS 比較熟悉,所以用起來十分方便。綜上,我們選用方案二的輸入輸出方式,輸入數(shù)據(jù)和輸出數(shù)據(jù)。3系統(tǒng)原理闡述DOS是美國Microsoft公司為IBM-PC研制的磁盤操作系統(tǒng)(Disk Operating System,也稱為IBM-DOS或MS-DOS。DOS不僅為用戶提供了許多使用的指令
6、,而其還有用戶可以直接調(diào)用的上百個常用子程序。對這些子程序的調(diào)用,稱為系統(tǒng)功能調(diào)用。這些子程序的功能主要是進行磁盤的讀寫、控制管理、內(nèi)存管理、基本輸入輸出管理等。在使用時,用戶不需要關(guān)心和了解各種IO接口硬件的詳細情況就能直接完成對IO接口的控制和管理。為了使用方便,將所有子程序從1開始循序編號,這些編號稱為DOS功能調(diào)用號。其調(diào)用過程為:DOS功能調(diào)用號送AH寄存器。如果需要,按要求給定輸入?yún)?shù)(有的不需要輸入?yún)?shù)。寫入中斷指令“INT 21H”。下面介紹一些在本程序中用到的一些DOS輸入輸出功能。功能:從鍵盤輸入一個字符。輸入?yún)?shù):無。輸出參數(shù):AL=ASCII碼。功能:在屏幕上顯示1個字
7、符(ASCII碼。輸入?yún)?shù):DL=ASCII碼。輸出參數(shù):無。3.多字符輸入0AH功能:多個字符輸入到緩沖區(qū)。輸入?yún)?shù):DS:DX=輸入緩沖區(qū)首地址。輸出參數(shù):DS: DX=輸入字符串所在緩沖區(qū)地址。設(shè)置緩沖區(qū)要注意以下幾點:緩沖區(qū)第1個字節(jié)存放預定字符個數(shù),最多255個。緩沖區(qū)第2個字節(jié)保留,用于調(diào)用返回時存放實際輸入的字符個數(shù)。緩沖區(qū)第3個字節(jié)開始,存放輸入的字符。緩沖區(qū)要考慮留一個字節(jié)作為回車符。4多字符輸出9號功能:多個字符輸出到屏幕顯示。輸入?yún)?shù):DS:DX=輸出字符緩沖區(qū)首地址。輸出參數(shù):無。該功能對輸出字符的個數(shù)沒有要求,但是輸出字符串要以$結(jié)束。5過程終止4CH號該調(diào)用的功能是
8、結(jié)束當前程序,并且返回調(diào)用它的程序。如果在DEBUG狀態(tài)下運行則返回DEBUG;如果在DOS下運行,則返回DOS。在匯編語言程序結(jié)束處加上“MOV A X,4C00H”和“INT 21H”兩條指令,以利于程序執(zhí)行完畢,返回操作系統(tǒng)控制。4軟件設(shè)計說明4.1 ASCII碼轉(zhuǎn)換成二進制算法實現(xiàn)首先將其轉(zhuǎn)換成十進制數(shù)字,再用累加和乘10加X的方法變成二進制數(shù),如將1358轉(zhuǎn)換為二進制數(shù),可先將累加和賦0,再計算(1*10+3*10+5*10+8,結(jié)果為二進制數(shù),再由符號位決定是否需要求補。程序執(zhí)行一次一共用了9次21H號中斷。第1、3、5、6、7次調(diào)用前AH寫入的是9,所以這幾次調(diào)用INT21是在屏
9、幕上顯示DX為首地址的字符串,也就是顯示的是響應(yīng)的提示信息和兩個數(shù)之和的結(jié)果;第2、4次INT21H中斷調(diào)用前AH寫入了10,所以這兩次調(diào)用的作用是輸入兩個五位十進制數(shù),且在沒個五位的十進制數(shù)輸入后,立即調(diào)用ASCII_TO_BIN函數(shù)轉(zhuǎn)換成相應(yīng)的二進制數(shù);第八次INT21H調(diào)用之前AH中寫入了1,該次輸入一個字符,在把輸入的該字符和Q和q比較,看是否是其中的一個,若是則程序結(jié)束,此時在AH中寫入4CH中,再調(diào)用INT21H,顯然是把CPU交給操作系統(tǒng);若不是則程序回到開始處,程序循環(huán)。主程序的流程圖如圖4-1所示。 圖4-1 主程序流程圖ASC_TO_BIN(ASCII碼字符轉(zhuǎn)化成二進制子函
10、數(shù),該函數(shù)的功能是五位ASCII碼十進制數(shù)轉(zhuǎn)換成二進制數(shù);在主程序中一共調(diào)用了兩次該函數(shù),分別是在輸入完成兩個五位十進制數(shù)后。算法實現(xiàn)已在前面分析,這里不再重述,ASC_TO_BIN子程序的流程圖如圖4-2圖所示。 圖4-2 ASC_TO_BIN子程序流程圖BIN_TO_ASCII(將二進制數(shù)轉(zhuǎn)換成相應(yīng)ASCII碼形式十進制數(shù)函數(shù),該函數(shù)的功能是將一個二進制數(shù)轉(zhuǎn)化成對應(yīng)ASCII碼形式的十進制數(shù),以便屏幕輸出。該子程序的算法實現(xiàn)已在前面說明,程序流程圖如圖4-3所示。 圖4-3 BIN_TO_ASCII子程序流程圖INT21H號中斷是一個系統(tǒng)中斷,中斷程序根據(jù)中斷前寫入AH中的值決定中斷的功能
11、,前面已說明中斷程序的功能,中斷程序執(zhí)行的流程圖如圖4-4所示。 圖4-4 中斷程序流程圖5調(diào)試記錄及結(jié)果分析剛寫完程序第一次調(diào)試時,程序老是出錯,錯誤提示如圖5-1所示。 圖5-1 調(diào)試出錯提示經(jīng)過反復認真檢查和修改,最后終于找到了程序出錯的原因,原來是子程序調(diào)用出錯了,后面修改了子程序和子程序的調(diào)用方式,程序就可以正常運行了。運行結(jié)果如圖5-2所示。 圖5-2 正確運行的結(jié)果從圖5-2和附錄二中可以看出,程序運行結(jié)果完全滿足預期要求。程序能夠完成兩個五位十進制數(shù)的求和,并顯示結(jié)果。并能實現(xiàn)按Q或q推出程序??偨Y(jié)和心得體會通過這次微機原理與接口技術(shù)課程設(shè)計,加強了我們動手、思考和解決問題的能
12、力。通過參加這次的課程設(shè)計,我學到了很多無法在課堂上學到的知識。在課堂上我們學習的都是理論知識,而課程設(shè)計是鍛煉我們把那些理論運用到我們實際的生活中?,F(xiàn)在,我對課設(shè)做以下幾點總結(jié):(1通過微機原理與接口技術(shù)的課程設(shè)計,使我認識到計算機技術(shù)廣泛應(yīng)用于現(xiàn)代眾多的領(lǐng)域中,起著越來越重要的作用。隨著電子技術(shù)和計算機技術(shù)的發(fā)展和應(yīng)用,計算機應(yīng)用越來越廣泛,計算機應(yīng)用分為數(shù)值計算和非數(shù)值應(yīng)用兩大領(lǐng)域。非數(shù)值應(yīng)用又包括數(shù)據(jù)處理、知識處理,例如信息系統(tǒng)、工廠自動化、辦公室自動化、家庭自動化、專家系統(tǒng)、模式識別、機器翻譯等領(lǐng)域。我們學習的微機原理與接口技術(shù)是現(xiàn)在計算機技術(shù)的基礎(chǔ),現(xiàn)在學好微機原理與接口技術(shù),好好
13、的理論聯(lián)系實際,將來才能為我國的計算機技術(shù)發(fā)展做出貢獻。(2通過微機原理與接口技術(shù)的課程設(shè)計,使我學以致用,理論聯(lián)系實際,真正學到了實用的知識。上微機原理與接口技術(shù)的時候,我們學了8086CPU的內(nèi)部結(jié)構(gòu)、匯編語言、基本輸入輸出設(shè)備、定時器芯片、中斷控制、串行并行通信、AD、DA等是一些理論知識,很難、很經(jīng)典,雖然我們看上去懂了,也會做題了。通過課程設(shè)計時我們才知道,原來我們只是對理論略知一二,要是談到實際應(yīng)用我們真是無從下手。不過,還好我們有課程設(shè)計,使我們剛學完理論知識,馬上又學以致用,使我們的知識掌握的更加的牢固,同時也激發(fā)了我們創(chuàng)新的思想,真是一舉兩得,收獲不小啊。所以我們感謝課程設(shè)計
14、,感謝老師們認真耐心的輔導我們的課程設(shè)計,我希望以后我們可以多做一些類似的課程設(shè)計。(3通過微機原理與接口技術(shù)的課程設(shè)計,本人搞懂了一直來沒有搞清楚的幾個問題。我們在學習微機原理與接口技術(shù)以前,我們學過C、VB等高級語言,一直以來我們都用高級語言編程的,一直以來我不明白高級語言是如何在CPU中執(zhí)行和計算的通過學習匯編語言我明白了指令時如何執(zhí)行的。還有我很早就開始學習單片機,當然用的是高級語言C,一直以來我有都沒有明白堆棧的概念,不明白堆棧具體有什么用,該怎么用?通過匯編語言的學習我也明白堆棧的作用和堆棧具體應(yīng)該怎么用。總之,通過微機原理與接口技術(shù)的課計,我獲益匪淺我,希望以后可以多做一些課設(shè)。
15、參考文獻1 周佩玲彭虎傅忠謙.微機原理與接口技術(shù).北京:電子工業(yè)出版社,20052 馮繼超.微機原理實驗指導書.武漢:武漢理工大學教材中心,20083 索梅.匯編語言程序設(shè)計.北京:清華大學出版社,19944 朱冰.軟件工程.北京:北京大學出版社,20035 李昭原.數(shù)據(jù)庫原理及應(yīng)用.北京:科學技術(shù)出版社,20006 周佩玲彭虎傅忠謙. 微機原理與接口技術(shù)學習指導.北京:電子工業(yè)出版社,2008附錄一源程序和程序注釋DATA SEGMENT COMMONINPUT_MESSAGE DB0AH , 'PLEASE INPUT A NUMBER(LESS THAN 5 FIGURES:$&
16、#39;QUIT_MESSAGE DB0AH, 'ENTER Q OR q TO QUIT ANY OTHER TO CONTINUE:$'IN_ASC_BUF DB6;十進制數(shù)的輸入緩沖區(qū),共可接收6個字符DB ? ;保留,用于10號調(diào)用時DOS填入實際輸入字符個數(shù)DB6DUP(? ;一個符號位,四位數(shù)字ASCII碼,加上一個回車符,共計6字符BIN_BUF1 DW ? ;一個數(shù)轉(zhuǎn)換為二進制后,放于此處OUTPUT_MESSAGE DB0AH , 'THE SUM IS:' , '$'OUT_ASC_SUM DB6DUP(? , '$&
17、#39; ;將二個數(shù)的和轉(zhuǎn)換為ASCII碼后,放于此處,;以供9號調(diào)用顯示DATA ENDSCODE SEGMENTASSUME CS:CODE , DS:DATAsl PROC FARSTART:MOV AX , DATAMOV DS , AXMOV DX , OFFSET INPUT_MESSAGEMOV AH , 9INT21H;提示輸入一個數(shù)MOV DX , OFFSET IN_ASC_BUFMOV AH , 10INT21H;讀取第一個數(shù)CALL ASC_TO_BIN ;轉(zhuǎn)換第一個數(shù)為二進制MOV BIN_BUF1 , AX;保存第一個數(shù)MOV DX , OFFSET INPUT_M
18、ESSAGEMOV AH , 9INT21H;提示輸入一個數(shù)MOV DX , OFFSET IN_ASC_BUFMOV AH , 10INT21H;讀取第二個數(shù)CALL ASC_TO_BIN ; 轉(zhuǎn)換第二個數(shù)為二進制ADD AX , BIN_BUF1 ;計算這二個數(shù)之和CALL BIN_TO_ASCII ;將和轉(zhuǎn)換為ASCII碼,以供顯示用MOV DX , OFFSET OUTPUT_MESSAGEMOV AH , 9INT21HMOV DX , OFFSET OUT_ASC_SUMMOV AH , 9INT21HMOV DX,OFFSET QUIT_MESSAGEMOV AH , 9INT2
19、1HMOV AH , 1INT21HCMP AL,'Q'JZ OVERCMP AL,'q'JZ OVERJMP STARTOVER: MOV AH , 4CHINT21Hsl ENDPASC_TO_BIN PROC;ASCII碼轉(zhuǎn)換為二進制數(shù);入口:十進制數(shù)的ASCII碼在IN_ASC_BUF內(nèi);出口:轉(zhuǎn)換后的二進制數(shù)在AX內(nèi);算法:先將其轉(zhuǎn)換成十進制數(shù)字,再用累加和乘10加X的方法變成二進制數(shù),如將;358轉(zhuǎn)換為二進制數(shù),可先將累加和賦0,再計算(0*10+3*10+5*10+8,結(jié)果為二;進制數(shù),再由符號位決定是否需要求補。MOV CL , IN_ASC_B
20、UF+1;取字符個數(shù)MOV CH , 0DEC CL;扣除符號位MOV BX , OFFSET IN_ASC_BUF+3;調(diào)整BX指向十進制數(shù)的最高位PUSH BXPUSH CXL1:MOV AL , BXAND AL , 0FHMOV BX , ALINC BXLOOP L1 ;將所有數(shù)字字符的高四位清0,使之變?yōu)閿?shù)字值POP CXPOP BXMOV AX , 0;累加和賦初值MOV SI , 10L2:MUL SIADD AL , BXADC AH , 0INC BXLOOP L2 ;累加乘10CMP IN_ASC_BUF+2 , '+'JZ L3 ;符號是正號,轉(zhuǎn)移NEG
21、 AX;符號是負號,求補L3:RETASC_TO_BIN ENDPBIN_TO_ASCII PROC;將二進制數(shù)轉(zhuǎn)換為對應(yīng)十進制數(shù)數(shù)字的ASCII碼;入口:二進制數(shù)在AX內(nèi);出口:轉(zhuǎn)換后的ASCII碼在OUT_ASC_SUM變量內(nèi);算法:AX中的數(shù)范圍在+32767到-32768之間,先檢查AX中的符號位,以決定輸出“+”;還是“-”,若是負數(shù),應(yīng)先求補,得到原碼后即可與正數(shù)作統(tǒng)一處理。轉(zhuǎn)換方法為將被轉(zhuǎn)換的;二進制數(shù)先除以10000,商;即為萬位數(shù),再將余數(shù)除以1000,商為千位數(shù),以此類推,求出;百、十位數(shù),剩下的為個位數(shù)。最后,將各個數(shù)加上30H,即成為對應(yīng)字符。MOV OUT_ASC_SUM , '+'CMP AX , 0JGE L4 ;不是負數(shù),轉(zhuǎn)移NEG AXMOV OUT_ASC_SUM , '-'L4:CWDMOV BX , 10000DIV BXADD AL , 30H;將萬位轉(zhuǎn)換為數(shù)字(商應(yīng)在AX內(nèi),但因為商不大于3,;所以有效部分在AL內(nèi)MOV OUT_ASC_SUM+1 , AL;保存萬位數(shù)字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生態(tài)保護項目白蟻防控與四害同步清除服務(wù)合同3篇
- 2024版聯(lián)建協(xié)議書
- 2025年度物流運輸合同價格條款與新能源車輛推廣3篇
- 二零二五年度路沿石產(chǎn)品市場調(diào)研與戰(zhàn)略規(guī)劃合同3篇
- 二零二五年度綠色能源項目安全生產(chǎn)責任合同3篇
- 2025年度鋼管扣件出口銷售與運輸配合合同2篇
- 二零二五年度城市更新項目搬遷補償實施協(xié)議3篇
- 2025年度鐵路貨運代理服務(wù)合同(含客戶關(guān)系管理)2篇
- 2024運輸費用印花稅稅率變動與物流咨詢與服務(wù)合同3篇
- 2025年度醫(yī)療設(shè)備采購居間合同示范文本3篇
- 2024年天津市中考語文試卷真題(含答案)
- 2024-2030年中國碳監(jiān)測行業(yè)市場運營態(tài)勢及發(fā)展前景研判報告
- 2024年南京鐵道職業(yè)技術(shù)學院單招職業(yè)技能測試題庫及答案解析
- 設(shè)備部年終總結(jié)
- 湘教版七年級上冊地理全冊教案(共30課時)
- 江西省萍鄉(xiāng)市2022-2023學年高一年級上冊期末考試數(shù)學試題
- 第二單元自測卷(試題)2023-2024學年統(tǒng)編版語文四年級下冊
- 電梯曳引機生銹處理方案
- 山西省呂梁市2023-2024學年高二上學期期末數(shù)學試題
- 電力電纜故障分析報告
- 2024年浙江首考高考選考技術(shù)試卷試題真題(答案詳解)
評論
0/150
提交評論