




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
鍵盤錄入數(shù)據(jù)的轉換與顯示1設計任務及要求分析1.1設計任務從鍵盤讀入二個五位十進制數(shù)(1位符號位+4位數(shù)值位),并將這二個十進制數(shù),分別轉換為二進制數(shù),然后求其和,再將和以十進制形式進行顯示。按Q退出程序。1.2要求分析從設計任務中可以看出此次課設要求是:從鍵盤中輸入兩個五位十進制數(shù)(格式如-8888、+9999等),顯然通過鍵盤輸入的此類十進制數(shù)實際上輸入的是對應字符的ASCII碼,若想求兩個數(shù)的和必須先將這兩個數(shù)對應的二進制數(shù)求出,然后再求其和,求和完成后將二進制數(shù)再轉換成對應的十進制數(shù)用顯示器輸出,完成兩個五位十進制數(shù)的求和然后以十進制的形式顯示。
2方案比較及認證說明輸入輸出方式的比較。方案一:BIOS功能調(diào)用方式輸入輸出數(shù)據(jù)。此方案使用相對復雜一些,而其我們對BIOS功能調(diào)用不是很熟悉。方案二:MSDOS功能調(diào)用的方式輸入輸出數(shù)據(jù)。此方案簡單實用、由于我們對MSDOS比較熟悉,所以用起來十分方便。綜上,我們選用方案二的輸入輸出方式,輸入數(shù)據(jù)和輸出數(shù)據(jù)。
3系統(tǒng)原理闡述3.1統(tǒng)設計的軟硬件環(huán)境我們設計鍵盤錄入數(shù)據(jù)的轉換與顯示的硬件環(huán)境是X86計算機平臺的IBM-PC兼容機,開發(fā)的軟件環(huán)境是WindowsXP操作系統(tǒng)下的MFPCI98匯編編譯環(huán)境。雖然我們不是在標準的8086IBM_PC平臺下編程,也不是標準的DOS操作系統(tǒng)環(huán)境下編程;但是我們的硬件平臺是兼容8086的X86計算機平臺,軟件平臺是更高級并且兼容DOS的WindowsXP操作系統(tǒng),所以我們程序運行的結果絕對跟標準8086IBM-PC平臺上運行的結果完全一樣。3.2統(tǒng)設計中用到的DOS調(diào)用DOS是美國Microsoft公司為IBM-PC研制的磁盤操作系統(tǒng)(DiskOperatingSystem),也稱為IBM-DOS或MS-DOS。DOS不僅為用戶提供了許多使用的指令,而其還有用戶可以直接調(diào)用的上百個常用子程序。對這些子程序的調(diào)用,稱為系統(tǒng)功能調(diào)用。這些子程序的功能主要是進行磁盤的讀寫、控制管理、內(nèi)存管理、基本輸入輸出管理等。在使用時,用戶不需要關心和了解各種IO接口硬件的詳細情況就能直接完成對IO接口的控制和管理。為了使用方便,將所有子程序從1開始循序編號,這些編號稱為DOS功能調(diào)用號。其調(diào)用過程為:DOS功能調(diào)用號送AH寄存器。如果需要,按要求給定輸入?yún)?shù)(有的不需要輸入?yún)?shù))。寫入中斷指令“INT21H”。下面介紹一些在本程序中用到的一些DOS輸入輸出功能。1.單字符輸入--1號功能:從鍵盤輸入一個字符。輸入?yún)?shù):無。輸出參數(shù):AL=ASCII碼。2.單字符輸出--2號功能:在屏幕上顯示1個字符(ASCII碼)。輸入?yún)?shù):DL=ASCII碼。輸出參數(shù):無。3.多字符輸入——0AH功能:多個字符輸入到緩沖區(qū)。輸入?yún)?shù):DS:DX=輸入緩沖區(qū)首地址。輸出參數(shù):DS:DX=輸入字符串所在緩沖區(qū)地址。設置緩沖區(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ù)沒有要求,但是輸出字符串要以‘$’結束。5過程終止——4CH號該調(diào)用的功能是結束當前程序,并且返回調(diào)用它的程序。如果在DEBUG狀態(tài)下運行則返回DEBUG;如果在DOS下運行,則返回DOS。在匯編語言程序結束處加上“MOVAX,4C00H”和“INT21H”兩條指令,以利于程序執(zhí)行完畢,返回操作系統(tǒng)控制。
4軟件設計說明4.1ASCII碼轉換成二進制算法實現(xiàn)首先將其轉換成十進制數(shù)字,再用累加和乘10加X的方法變成二進制數(shù),如將1358轉換為二進制數(shù),可先將累加和賦0,再計算(((1*10+3)*10+5)*10+8),結果為二進制數(shù),再由符號位決定是否需要求補。4.2二進制轉換成ASCII碼算法實現(xiàn)AX中的數(shù)范圍在+32767到-32768之間,先檢查AX中的符號位,以決定輸出“+”還是“-”,若是負數(shù),應先求補,得到原碼后即可與正數(shù)作統(tǒng)一處理。轉換方法為將被轉換的二進制數(shù)先除以10000,商;即為萬位數(shù),再將余數(shù)除以1000,商為千位數(shù),以此類推,求出百、十位數(shù),剩下的為個位數(shù)。最后,將各個數(shù)加上30H,即成為對應字符。4.3主程序結構分析程序執(zhí)行一次一共用了9次21H號中斷。第1、3、5、6、7次調(diào)用前AH寫入的是9,所以這幾次調(diào)用INT21是在屏幕上顯示DX為首地址的字符串,也就是顯示的是響應的提示信息和兩個數(shù)之和的結果;第2、4次INT21H中斷調(diào)用前AH寫入了10,所以這兩次調(diào)用的作用是輸入兩個五位十進制數(shù),且在沒個五位的十進制數(shù)輸入后,立即調(diào)用ASCII_TO_BIN函數(shù)轉換成相應的二進制數(shù);第八次INT21H調(diào)用之前AH中寫入了1,該次輸入一個字符,在把輸入的該字符和Q和q比較,看是否是其中的一個,若是則程序結束,此時在AH中寫入4CH中,再調(diào)用INT21H,顯然是把CPU交給操作系統(tǒng);若不是則程序回到開始處,程序循環(huán)。主程序的流程圖如圖4-1所示。圖4-1主程序流程圖4.4子程序結構分析ASC_TO_BIN(ASCII碼字符轉化成二進制子函數(shù)),該函數(shù)的功能是五位ASCII碼十進制數(shù)轉換成二進制數(shù);在主程序中一共調(diào)用了兩次該函數(shù),分別是在輸入完成兩個五位十進制數(shù)后。算法實現(xiàn)已在前面分析,這里不再重述,ASC_TO_BIN子程序的流程圖如圖4-2圖所示。圖4-2ASC_TO_BIN子程序流程圖BIN_TO_ASCII(將二進制數(shù)轉換成相應ASCII碼形式十進制數(shù)函數(shù)),該函數(shù)的功能是將一個二進制數(shù)轉化成對應ASCII碼形式的十進制數(shù),以便屏幕輸出。該子程序的算法實現(xiàn)已在前面說明,程序流程圖如圖4-3所示。圖4-3BIN_TO_ASCII子程序流程圖4.5中斷程序的結構分析INT21H號中斷是一個系統(tǒng)中斷,中斷程序根據(jù)中斷前寫入AH中的值決定中斷的功能,前面已說明中斷程序的功能,中斷程序執(zhí)行的流程圖如圖4-4所示。圖4-4中斷程序流程圖
5調(diào)試記錄及結果分析5.1調(diào)試記錄剛寫完程序第一次調(diào)試時,程序老是出錯,錯誤提示如圖5-1所示。圖5-1調(diào)試出錯提示經(jīng)過反復認真檢查和修改,最后終于找到了程序出錯的原因,原來是子程序調(diào)用出錯了,后面修改了子程序和子程序的調(diào)用方式,程序就可以正常運行了。運行結果如圖5-2所示。圖5-2正確運行的結果5.2調(diào)試結果分析從圖5-2和附錄二中可以看出,程序運行結果完全滿足預期要求。程序能夠完成兩個五位十進制數(shù)的求和,并顯示結果。并能實現(xiàn)按Q或q推出程序??偨Y和心得體會通過這次微機原理與接口技術課程設計,加強了我們動手、思考和解決問題的能力。通過參加這次的課程設計,我學到了很多無法在課堂上學到的知識。在課堂上我們學習的都是理論知識,而課程設計是鍛煉我們把那些理論運用到我們實際的生活中?,F(xiàn)在,我對課設做以下幾點總結:(1)通過微機原理與接口技術的課程設計,使我認識到計算機技術廣泛應用于現(xiàn)代眾多的領域中,起著越來越重要的作用。隨著電子技術和計算機技術的發(fā)展和應用,計算機應用越來越廣泛,計算機應用分為數(shù)值計算和非數(shù)值應用兩大領域。非數(shù)值應用又包括數(shù)據(jù)處理、知識處理,例如信息系統(tǒng)、工廠自動化、辦公室自動化、家庭自動化、專家系統(tǒng)、模式識別、機器翻譯等領域。我們學習的微機原理與接口技術是現(xiàn)在計算機技術的基礎,現(xiàn)在學好微機原理與接口技術,好好的理論聯(lián)系實際,將來才能為我國的計算機技術發(fā)展做出貢獻。(2)通過微機原理與接口技術的課程設計,使我學以致用,理論聯(lián)系實際,真正學到了實用的知識。上微機原理與接口技術的時候,我們學了8086CPU的內(nèi)部結構、匯編語言、基本輸入輸出設備、定時器芯片、中斷控制、串行并行通信、AD、DA等是一些理論知識,很難、很經(jīng)典,雖然我們看上去懂了,也會做題了。通過課程設計時我們才知道,原來我們只是對理論略知一二,要是談到實際應用我們真是無從下手。不過,還好我們有課程設計,使我們剛學完理論知識,馬上又學以致用,使我們的知識掌握的更加的牢固,同時也激發(fā)了我們創(chuàng)新的思想,真是一舉兩得,收獲不小啊。所以我們感謝課程設計,感謝老師們認真耐心的輔導我們的課程設計,我希望以后我們可以多做一些類似的課程設計。(3)通過微機原理與接口技術的課程設計,本人搞懂了一直來沒有搞清楚的幾個問題。我們在學習微機原理與接口技術以前,我們學過C、VB等高級語言,一直以來我們都用高級語言編程的,一直以來我不明白高級語言是如何在CPU中執(zhí)行和計算的通過學習匯編語言我明白了指令時如何執(zhí)行的。還有我很早就開始學習單片機,當然用的是高級語言C,一直以來我有都沒有明白堆棧的概念,不明白堆棧具體有什么用,該怎么用?通過匯編語言的學習我也明白堆棧的作用和堆棧具體應該怎么用??傊?,通過微機原理與接口技術的課計,我獲益匪淺我,希望以后可以多做一些課設。參考文獻[1]周佩玲彭虎傅忠謙.微機原理與接口技術.北京:電子工業(yè)出版社,2021[2]馮繼超.微機原理實驗指導書.武漢:武漢理工大學教材中心,2021[3]索梅.匯編語言程序設計.北京:清華大學出版社,1994[4]朱冰.軟件工程.北京:北京大學出版社,2021[5]李昭原.數(shù)據(jù)庫原理及應用.北京:科學技術出版社,2021[6]周佩玲彭虎傅忠謙.微機原理與接口技術學習指導.北京:電子工業(yè)出版社,2021
附錄一源程序和程序注釋DATASEGMENT COMMONINPUT_MESSAGE DB0AH,'PLEASEINPUTANUMBER(LESSTHAN5FIGURES):$'QUIT_MESSAGE DB0AH,'ENTERQORqTOQUITANYOTHERTOCONTINUE:$'IN_ASC_BUF DB6 ;十進制數(shù)的輸入緩沖區(qū),共可接收6個字符 DB? ;保留,用于10號調(diào)用時DOS填入實際輸入字符個數(shù) DB6DUP(?) ;一個符號位,四位數(shù)字ASCII碼,加上一個回車符,共計6字符BIN_BUF1 DW? ;一個數(shù)轉換為二進制后,放于此處OUTPUT_MESSAGE DB 0AH,'THESUMIS:','$'OUT_ASC_SUM DB 6DUP(?),'$' ;將二個數(shù)的和轉換為ASCII碼后,放于此處, ;以供9號調(diào)用顯示DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAslPROCFARSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINPUT_MESSAGEMOVAH,9INT21H;提示輸入一個數(shù)MOVDX,OFFSETIN_ASC_BUFMOVAH,10INT21H;讀取第一個數(shù)CALLASC_TO_BIN ;轉換第一個數(shù)為二進制MOVBIN_BUF1,AX ;保存第一個數(shù)MOVDX,OFFSETINPUT_MESSAGEMOVAH,9INT21H;提示輸入一個數(shù)MOVDX,OFFSETIN_ASC_BUFMOVAH,10INT21H;讀取第二個數(shù)CALLASC_TO_BIN ;轉換第二個數(shù)為二進制ADDAX,BIN_BUF1 ;計算這二個數(shù)之和CALLBIN_TO_ASCII ;將和轉換為ASCII碼,以供顯示用MOVDX,OFFSETOUTPUT_MESSAGEMOVAH,9INT21HMOVDX,OFFSETOUT_ASC_SUMMOVAH,9INT21H MOVDX,OFFSETQUIT_MESSAGE MOVAH,9INT21H MOVAH,1INT21H CMPAL,'Q' JZOVER CMPAL,'q' JZOVER JMPSTARTOVER: MOVAH,4CH INT21HslENDPASC_TO_BINPROC;ASCII碼轉換為二進制數(shù);入口:十進制數(shù)的ASCII碼在IN_ASC_BUF內(nèi);出口:轉換后的二進制數(shù)在AX內(nèi);算法:先將其轉換成十進制數(shù)字,再用累加和乘10加X的方法變成二進制數(shù),如將;358轉換為二進制數(shù),可先將累加和賦0,再計算(((0*10+3)*10+5)*10+8),結果為二;進制數(shù),再由符號位決定是否需要求補。MOVCL,IN_ASC_BUF+1 ;取字符個數(shù)MOVCH,0DECCL;扣除符號位MOVBX,OFFSETIN_ASC_BUF+3 ;調(diào)整BX指向十進制數(shù)的最高位PUSHBXPUSHCXL1:MOVAL,[BX]ANDAL,0FHMOV[BX],ALINCBXLOOPL1;將所有數(shù)字字符的高四位清0,使之變?yōu)閿?shù)字值POPCXPOPBXMOVAX,0;累加和賦初值MOVSI,10L2:MULSIADDAL,[BX]ADCAH,0INCBXLOOPL2;累加乘10CMPIN_ASC_BUF+2,'+'JZL3;符號是正號,轉移NEGAX;符號是負號,求補L3:RETASC_TO_BINENDPBIN_TO_ASCIIPROC;將二進制數(shù)轉換為對應十進制數(shù)數(shù)字的ASCII碼;入口:二進制數(shù)在AX內(nèi);出口:轉換后的ASCII碼在OUT_ASC_SUM變量內(nèi);算法:AX中的數(shù)范圍在+32767到-32768之間,先檢查AX中的符號位,以決定輸出“+”;還是“-”,若是負數(shù),應先求補,得到原碼后即可與正數(shù)作統(tǒng)一處理。轉換方法為將被轉換的;二進制數(shù)先除以10000,商;即為萬位數(shù),再將余數(shù)除以1000,商為千位數(shù),以此類推,求出;百、十位數(shù),剩下的為個位數(shù)。最后,將各個數(shù)加上30H,即成為對應字符。MOVOUT_ASC_SUM,'+'CMPAX,0JGEL4;不是負數(shù),轉移NEGAXMOVOUT_ASC_SUM,'-'L4:CWDMOVBX,10000DIVBXADDAL,30H;將萬位轉換為數(shù)字(商應在AX內(nèi),但因為商不大于3,;所以有效部分在AL內(nèi))MOVOUT_ASC_SUM+1,AL ;保存萬位數(shù)字MOVAX,DX;將余數(shù)置入AX內(nèi),以便當作被除數(shù)CWDMOVBX,1000DIVBXADDAL,30HMOVOUT_ASC_SUM+2,AL ;保存千位數(shù)字MOVAX,DX;將余數(shù)置入AX內(nèi),以便當作被除數(shù)MOVBL,100DIVBLADDAL,30HMOVOUT_ASC_SUM+3,AL;保存百位數(shù)字MOVAL,AHCBWMOVBL,10DIVBLADDAL,30HMOVOUT_ASC_SUM+4,AL;保存十位數(shù)字ADDAH,30HMOVOUT_ASC_SUM+5,AH;保存?zhèn)€位數(shù)字RETBIN_TO_ASCIIENDPCODEENDSENDSTART
附錄二程序運行結果截圖
附錄三本科生課程設計成績評定表本科生課程設計成績評定表姓名蔣宏性別男專業(yè)、班級自動化0708班課程設計題目:鍵盤錄入數(shù)據(jù)的轉換與顯示課程設計答辯或質疑記錄:成績評定依據(jù):最終評定成績(以優(yōu)、良、中、及格、不及格評定)指導教師簽字:年月日
附錄四評定項目表評定項目評分成績1.考勤、態(tài)度(10分)2.查閱資料能力(10分)3.系統(tǒng)設計(20分)包括系統(tǒng)實現(xiàn)原理、框圖、方案的說明4.編寫程序,調(diào)試結果(25分)5.設計說明書質量及規(guī)范化、參考文獻充分(不少于5篇)(15
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度企業(yè)年報封面協(xié)議封皮圖片制作合同
- 商業(yè)空間內(nèi)部裝修承包合同
- 2025年江漢藝術職業(yè)學院單招職業(yè)適應性測試題庫新版
- 2025年度文化創(chuàng)意產(chǎn)業(yè)資金托管合同
- 2025年農(nóng)村土地承包經(jīng)營權流轉合同模板
- 2025年度抖音短視頻內(nèi)容原創(chuàng)保護與維權合同
- 2025年度房產(chǎn)購房意向金確認書
- 2025年度手工藝非物質文化遺產(chǎn)保護合同
- 2025年度房產(chǎn)抵押債務清償與產(chǎn)權變更及資產(chǎn)處置合同
- 2025年度藝術培訓機構與電商平臺合作協(xié)議
- 2025年安徽電氣工程職業(yè)技術學院單招職業(yè)技能測試題庫及答案1套
- 2025年房屋交易代持策劃協(xié)議書
- 課題申報參考:“四新”建設背景下教育創(chuàng)新與課程數(shù)字化實踐研究
- 2025年上半年贛州市于都縣招聘城管協(xié)管員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年煙臺汽車工程職業(yè)學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江蘇農(nóng)牧科技職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫及答案【易錯題】
- 中考數(shù)學總復習第一章第3課時二次根式課件
- 天然氣脫硫完整版本
- 2025年中國電子煙行業(yè)發(fā)展前景與投資戰(zhàn)略規(guī)劃分析報告
- 貨物學基礎 課件 項目一 任務一 貨物的基本概念
評論
0/150
提交評論