版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 微機(jī)原理課程設(shè)計(jì)</b></p><p> 題 目: 鍵盤錄入數(shù)據(jù)的轉(zhuǎn)換與顯示 </p><p> 初始條件:從鍵盤讀入二個五位十進(jìn)制數(shù)(1位符號位+4位數(shù)值位),并將這二個十進(jìn)制數(shù),分別轉(zhuǎn)換為二進(jìn)制數(shù),然后求其和,再將和以十進(jìn)制形式進(jìn)行顯示。按Q退出程序。&
2、lt;/p><p> 要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p><b> 設(shè)計(jì)任務(wù)及要求分析</b></p><p><b> 方案比較及認(rèn)證說明</b></p><p><b> 系統(tǒng)原理闡述</b></p&
3、gt;<p> 硬件設(shè)計(jì)課題需要說明:硬件原理,電路圖,采用器件的功能說明</p><p> 軟件設(shè)計(jì)課題需要說明:軟件思想,流程圖,源程序及程序注釋</p><p><b> 調(diào)試記錄及結(jié)果分析</b></p><p><b> 總結(jié)</b></p><p><b>
4、; 參考資料</b></p><p> 附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實(shí)物圖</p><p> 摘要:本文所設(shè)計(jì)的程序是運(yùn)行于硬件和DOS操作系統(tǒng)下的,本程序通過調(diào)用DOS下的基本輸入輸出中斷,實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。程序中有兩個子程序,輸入的兩個五位的十進(jìn)制數(shù)通過調(diào)用一個叫ASC_TO_BIN的子程序可以將其轉(zhuǎn)換成二進(jìn)制數(shù),然后求兩個二進(jìn)制數(shù)的和,求和
5、完成后,再調(diào)用一個叫BIN_TO_ASCII的子程序?qū)⒍M(jìn)制和轉(zhuǎn)換成相應(yīng)的ASCII碼,調(diào)用DOS輸出中斷顯示在屏幕上,最后看用戶是否輸入的是Q或者q,若是則程序結(jié)束,若不是則程序循環(huán)。</p><p> 關(guān)鍵字:8086;DOS系統(tǒng);ASCII碼;中斷</p><p><b> 目錄</b></p><p> 1設(shè)計(jì)任務(wù)及要求分析1&
6、lt;/p><p><b> 1.1設(shè)計(jì)任務(wù)1</b></p><p><b> 1.2要求分析1</b></p><p> 2方案比較及認(rèn)證說明2</p><p><b> 3系統(tǒng)原理闡述3</b></p><p> 3.1統(tǒng)設(shè)計(jì)的軟硬件
7、環(huán)境3</p><p> 3.2統(tǒng)設(shè)計(jì)中用到的DOS調(diào)用3</p><p><b> 4軟件設(shè)計(jì)說明5</b></p><p> 4.1 ASCII碼轉(zhuǎn)換成二進(jìn)制算法實(shí)現(xiàn)5</p><p> 4.2二進(jìn)制轉(zhuǎn)換成ASCII碼算法實(shí)現(xiàn)5</p><p> 4.3主程序結(jié)構(gòu)分析5&
8、lt;/p><p> 4.4子程序結(jié)構(gòu)分析6</p><p> 4.5中斷程序的結(jié)構(gòu)分析8</p><p> 5調(diào)試記錄及結(jié)果分析9</p><p><b> 5.1調(diào)試記錄9</b></p><p> 5.2調(diào)試結(jié)果分析9</p><p> 總結(jié)和心得體
9、會10</p><p><b> 參考文獻(xiàn)11</b></p><p> 附錄一 源程序和程序注釋12</p><p> 附錄二 程序運(yùn)行結(jié)果截圖16</p><p> 附錄三 本科生課程設(shè)計(jì)成績評定表17</p><p> 附錄四 評定項(xiàng)目表18</p>&l
10、t;p> 鍵盤錄入數(shù)據(jù)的轉(zhuǎn)換與顯示</p><p> 1設(shè)計(jì)任務(wù)及要求分析</p><p><b> 1.1設(shè)計(jì)任務(wù)</b></p><p> 從鍵盤讀入二個五位十進(jìn)制數(shù)(1位符號位+4位數(shù)值位),并將這二個十進(jìn)制數(shù),分別轉(zhuǎn)換為二進(jìn)制數(shù),然后求其和,再將和以十進(jìn)制形式進(jìn)行顯示。按Q退出程序。</p><p>
11、;<b> 1.2要求分析</b></p><p> 從設(shè)計(jì)任務(wù)中可以看出此次課設(shè)要求是:從鍵盤中輸入兩個五位十進(jìn)制數(shù)(格式如-8888、+9999等),顯然通過鍵盤輸入的此類十進(jìn)制數(shù)實(shí)際上輸入的是對應(yīng)字符的ASCII碼,若想求兩個數(shù)的和必須先將這兩個數(shù)對應(yīng)的二進(jìn)制數(shù)求出,然后再求其和,求和完成后將二進(jìn)制數(shù)再轉(zhuǎn)換成對應(yīng)的十進(jìn)制數(shù)用顯示器輸出,完成兩個五位十進(jìn)制數(shù)的求和然后以十進(jìn)制的形式顯
12、示。</p><p> 2方案比較及認(rèn)證說明</p><p> 輸入輸出方式的比較。</p><p> 方案一:BIOS功能調(diào)用方式輸入輸出數(shù)據(jù)。此方案使用相對復(fù)雜一些,而其我們對BIOS功能調(diào)用不是很熟悉。</p><p> 方案二:MSDOS功能調(diào)用的方式輸入輸出數(shù)據(jù)。此方案簡單實(shí)用、由于我們對MSDOS比較熟悉,所以用起來十分方
13、便。綜上,我們選用方案二的輸入輸出方式,輸入數(shù)據(jù)和輸出數(shù)據(jù)。</p><p><b> 3系統(tǒng)原理闡述</b></p><p> 3.1統(tǒng)設(shè)計(jì)的軟硬件環(huán)境</p><p> 我們設(shè)計(jì)鍵盤錄入數(shù)據(jù)的轉(zhuǎn)換與顯示的硬件環(huán)境是X86計(jì)算機(jī)平臺的IBM-PC兼容機(jī),開發(fā)的軟件環(huán)境是Windows XP操作系統(tǒng)下的MFPCI98匯編編譯環(huán)境。雖然我們
14、不是在標(biāo)準(zhǔn)的8086 IBM_PC平臺下編程,也不是標(biāo)準(zhǔn)的DOS操作系統(tǒng)環(huán)境下編程;但是我們的硬件平臺是兼容8086的X86計(jì)算機(jī)平臺,軟件平臺是更高級并且兼容DOS的Windows XP操作系統(tǒng),所以我們程序運(yùn)行的結(jié)果絕對跟標(biāo)準(zhǔn)8086IBM-PC平臺上運(yùn)行的結(jié)果完全一樣。</p><p> 3.2統(tǒng)設(shè)計(jì)中用到的DOS調(diào)用</p><p> DOS是美國Microsoft公司為IBM
15、-PC研制的磁盤操作系統(tǒng)(Disk Operating System),也稱為IBM-DOS或MS-DOS。DOS不僅為用戶提供了許多使用的指令,而其還有用戶可以直接調(diào)用的上百個常用子程序。對這些子程序的調(diào)用,稱為系統(tǒng)功能調(diào)用。這些子程序的功能主要是進(jìn)行磁盤的讀寫、控制管理、內(nèi)存管理、基本輸入輸出管理等。在使用時,用戶不需要關(guān)心和了解各種IO接口硬件的詳細(xì)情況就能直接完成對IO接口的控制和管理。為了使用方便,將所有子程序從1開始循序編號
16、,這些編號稱為DOS功能調(diào)用號。其調(diào)用過程為:</p><p> DOS功能調(diào)用號送AH寄存器。</p><p> 如果需要,按要求給定輸入?yún)?shù)(有的不需要輸入?yún)?shù))。</p><p> 寫入中斷指令“INT 21H”。</p><p> 下面介紹一些在本程序中用到的一些DOS輸入輸出功能。</p><p>
17、 1.單字符輸入--1號</p><p> 功能:從鍵盤輸入一個字符。</p><p><b> 輸入?yún)?shù):無。</b></p><p> 輸出參數(shù):AL=ASCII碼。</p><p> 2.單字符輸出--2號</p><p> 功能:在屏幕上顯示1個字符(ASCII碼)。</p
18、><p> 輸入?yún)?shù):DL=ASCII碼。</p><p><b> 輸出參數(shù):無。</b></p><p> 3.多字符輸入——0AH</p><p> 功能:多個字符輸入到緩沖區(qū)。</p><p> 輸入?yún)?shù):DS:DX=輸入緩沖區(qū)首地址。</p><p> 輸
19、出參數(shù):DS: DX=輸入字符串所在緩沖區(qū)地址。</p><p> 設(shè)置緩沖區(qū)要注意以下幾點(diǎn):</p><p> 緩沖區(qū)第1個字節(jié)存放預(yù)定字符個數(shù),最多255個。</p><p> 緩沖區(qū)第2個字節(jié)保留,用于調(diào)用返回時存放實(shí)際輸入的字符個數(shù)。</p><p> 緩沖區(qū)第3個字節(jié)開始,存放輸入的字符。</p><p&
20、gt; 緩沖區(qū)要考慮留一個字節(jié)作為回車符。</p><p> 4多字符輸出——9號</p><p> 功能:多個字符輸出到屏幕顯示。</p><p> 輸入?yún)?shù):DS:DX=輸出字符緩沖區(qū)首地址。</p><p><b> 輸出參數(shù):無。</b></p><p> 該功能對輸出字符的個
21、數(shù)沒有要求,但是輸出字符串要以‘$’結(jié)束。</p><p> 5過程終止——4CH號</p><p> 該調(diào)用的功能是結(jié)束當(dāng)前程序,并且返回調(diào)用它的程序。如果在DEBUG狀態(tài)下運(yùn)行</p><p> 則返回DEBUG;如果在DOS下運(yùn)行,則返回DOS。在匯編語言程序結(jié)束處加上“MOV?。粒?,4C00H”和“INT 21H”兩條指令,以利于程序執(zhí)行完畢,返回操作
22、系統(tǒng)控制。</p><p><b> 4軟件設(shè)計(jì)說明</b></p><p> 4.1 ASCII碼轉(zhuǎn)換成二進(jìn)制算法實(shí)現(xiàn)</p><p> 首先將其轉(zhuǎn)換成十進(jìn)制數(shù)字,再用累加和乘10加X的方法變成二進(jìn)制數(shù),如將</p><p> 1358轉(zhuǎn)換為二進(jìn)制數(shù),可先將累加和賦0,再計(jì)算(((1*10+3)*10+5)*1
23、0+8),結(jié)果為二</p><p> 進(jìn)制數(shù),再由符號位決定是否需要求補(bǔ)。</p><p> 4.2二進(jìn)制轉(zhuǎn)換成ASCII碼算法實(shí)現(xiàn)</p><p> AX中的數(shù)范圍在+32767到-32768之間,先檢查AX中的符號位,以決定輸出“+”還是“-”,若是負(fù)數(shù),應(yīng)先求補(bǔ),得到原碼后即可與正數(shù)作統(tǒng)一處理。轉(zhuǎn)換方法為將被轉(zhuǎn)換的二進(jìn)制數(shù)先除以10000,商;即為萬位數(shù)
24、,再將余數(shù)除以1000,商為千位數(shù),以此類推,求出百、十位數(shù),剩下的為個位數(shù)。最后,將各個數(shù)加上30H,即成為對應(yīng)字符。</p><p> 4.3主程序結(jié)構(gòu)分析</p><p> 程序執(zhí)行一次一共用了9次21H號中斷。第1、3、5、6、7次調(diào)用前AH寫入的是9,所以這幾次調(diào)用INT21是在屏幕上顯示DX為首地址的字符串,也就是顯示的是響應(yīng)的提示信息和兩個數(shù)之和的結(jié)果;第2、4次INT2
25、1H中斷調(diào)用前AH寫入了10,所以這兩次調(diào)用的作用是輸入兩個五位十進(jìn)制數(shù),且在沒個五位的十進(jìn)制數(shù)輸入后,立即調(diào)用ASCII_TO_BIN函數(shù)轉(zhuǎn)換成相應(yīng)的二進(jìn)制數(shù);第八次INT21H調(diào)用之前AH中寫入了1,該次輸入一個字符,在把輸入的該字符和Q和q比較,看是否是其中的一個,若是則程序結(jié)束,此時在AH中寫入4CH中,再調(diào)用INT21H,顯然是把CPU交給操作系統(tǒng);若不是則程序回到開始處,程序循環(huán)。主程序的流程圖如圖4-1所示。</p&
26、gt;<p> 圖4-1 主程序流程圖</p><p> 4.4子程序結(jié)構(gòu)分析</p><p> ASC_TO_BIN(ASCII碼字符轉(zhuǎn)化成二進(jìn)制子函數(shù)),該函數(shù)的功能是五位ASCII碼十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù);在主程序中一共調(diào)用了兩次該函數(shù),分別是在輸入完成兩個五位十進(jìn)制數(shù)后。算法實(shí)現(xiàn)已在前面分析,這里不再重述,ASC_TO_BIN子程序的流程圖如圖4-2圖所示。&l
27、t;/p><p> 圖4-2 ASC_TO_BIN子程序流程圖</p><p> BIN_TO_ASCII(將二進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)ASCII碼形式十進(jìn)制數(shù)函數(shù)),該函數(shù)的功能是將一個二進(jìn)制數(shù)轉(zhuǎn)化成對應(yīng)ASCII碼形式的十進(jìn)制數(shù),以便屏幕輸出。該子程序的算法實(shí)現(xiàn)已在前面說明,程序流程圖如圖4-3所示。</p><p> 圖4-3 BIN_TO_ASCII子程序流程圖&
28、lt;/p><p> 4.5中斷程序的結(jié)構(gòu)分析</p><p> INT21H號中斷是一個系統(tǒng)中斷,中斷程序根據(jù)中斷前寫入AH中的值決定中斷的功能,前面已說明中斷程序的功能,中斷程序執(zhí)行的流程圖如圖4-4所示。</p><p> 圖4-4 中斷程序流程圖</p><p> 5調(diào)試記錄及結(jié)果分析</p><p>&l
29、t;b> 5.1調(diào)試記錄</b></p><p> 剛寫完程序第一次調(diào)試時,程序老是出錯,錯誤提示如圖5-1所示。</p><p> 圖5-1 調(diào)試出錯提示</p><p> 經(jīng)過反復(fù)認(rèn)真檢查和修改,最后終于找到了程序出錯的原因,原來是子程序調(diào)用出錯了,后面修改了子程序和子程序的調(diào)用方式,程序就可以正常運(yùn)行了。運(yùn)行結(jié)果如圖5-2所示。<
30、;/p><p> 圖5-2 正確運(yùn)行的結(jié)果</p><p><b> 5.2調(diào)試結(jié)果分析</b></p><p> 從圖5-2和附錄二中可以看出,程序運(yùn)行結(jié)果完全滿足預(yù)期要求。程序能夠完成兩個五位十進(jìn)制數(shù)的求和,并顯示結(jié)果。并能實(shí)現(xiàn)按Q或q推出程序。</p><p><b> 總結(jié)和心得體會</b&g
31、t;</p><p> 通過這次微機(jī)原理與接口技術(shù)課程設(shè)計(jì),加強(qiáng)了我們動手、思考和解決問題的能力。通過參加這次的課程設(shè)計(jì),我學(xué)到了很多無法在課堂上學(xué)到的知識。在課堂上我們學(xué)習(xí)的都是理論知識,而課程設(shè)計(jì)是鍛煉我們把那些理論運(yùn)用到我們實(shí)際的生活中?,F(xiàn)在,我對課設(shè)做以下幾點(diǎn)總結(jié):</p><p> ?。?)通過微機(jī)原理與接口技術(shù)的課程設(shè)計(jì),使我認(rèn)識到計(jì)算機(jī)技術(shù)廣泛應(yīng)用于現(xiàn)代眾多的領(lǐng)域中,起著越
32、來越重要的作用。隨著電子技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展和應(yīng)用,計(jì)算機(jī)應(yīng)用越來越廣泛,計(jì)算機(jī)應(yīng)用分為數(shù)值計(jì)算和非數(shù)值應(yīng)用兩大領(lǐng)域。非數(shù)值應(yīng)用又包括數(shù)據(jù)處理、知識處理 ,例如信息系統(tǒng)、工廠自動化、辦公室自動化、家庭自動化 、專家系統(tǒng)、模式識別、機(jī)器翻譯等領(lǐng)域。我們學(xué)習(xí)的微機(jī)原理與接口技術(shù)是現(xiàn)在計(jì)算機(jī)技術(shù)的基礎(chǔ),現(xiàn)在學(xué)好微機(jī)原理與接口技術(shù),好好的理論聯(lián)系實(shí)際,將來才能為我國的計(jì)算機(jī)技術(shù)發(fā)展做出貢獻(xiàn)。</p><p> ?。?)
33、通過微機(jī)原理與接口技術(shù)的課程設(shè)計(jì),使我學(xué)以致用,理論聯(lián)系實(shí)際,真正學(xué)到了實(shí)用的知識。上微機(jī)原理與接口技術(shù)的時候,我們學(xué)了8086CPU的內(nèi)部結(jié)構(gòu)、匯編語言、基本輸入輸出設(shè)備、定時器芯片、中斷控制、串行并行通信、AD、DA等是一些理論知識,很難、很經(jīng)典,雖然我們看上去懂了,也會做題了。通過課程設(shè)計(jì)時我們才知道,原來我們只是對理論略知一二,要是談到實(shí)際應(yīng)用我們真是無從下手。不過,還好我們有課程設(shè)計(jì),使我們剛學(xué)完理論知識,馬上又學(xué)以致用,使我
34、們的知識掌握的更加的牢固,同時也激發(fā)了我們創(chuàng)新的思想,真是一舉兩得,收獲不小啊。所以我們感謝課程設(shè)計(jì),感謝老師們認(rèn)真耐心的輔導(dǎo)我們的課程設(shè)計(jì),我希望以后我們可以多做一些類似的課程設(shè)計(jì)。</p><p> ?。?)通過微機(jī)原理與接口技術(shù)的課程設(shè)計(jì),本人搞懂了一直來沒有搞清楚的幾個問題。我們在學(xué)習(xí)微機(jī)原理與接口技術(shù)以前,我們學(xué)過C、VB等高級語言,一直以來我們都用高級語言編程的,一直以來我不明白高級語言是如何在CPU
35、中執(zhí)行和計(jì)算的通過學(xué)習(xí)匯編語言我明白了指令時如何執(zhí)行的。還有我很早就開始學(xué)習(xí)單片機(jī),當(dāng)然用的是高級語言C,一直以來我有都沒有明白堆棧的概念,不明白堆棧具體有什么用,該怎么用?通過匯編語言的學(xué)習(xí)我也明白堆棧的作用和堆棧具體應(yīng)該怎么用。</p><p> 總之,通過微機(jī)原理與接口技術(shù)的課計(jì),我獲益匪淺我,希望以后可以多做一些課設(shè)。</p><p><b> 參考文獻(xiàn)</b&
36、gt;</p><p> [1] 周佩玲 彭虎 傅忠謙.微機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社,2005 </p><p> [2] 馮繼超.微機(jī)原理實(shí)驗(yàn)指導(dǎo)書.武漢:武漢理工大學(xué)教材中心,2008</p><p> [3] 索梅.匯編語言程序設(shè)計(jì).北京:清華大學(xué)出版社,1994 </p><p> [4] 朱冰.軟件工程.北京:北
37、京大學(xué)出版社,2003</p><p> [5] 李昭原.數(shù)據(jù)庫原理及應(yīng)用.北京:科學(xué)技術(shù)出版社,2000</p><p> [6] 周佩玲 彭虎 傅忠謙. 微機(jī)原理與接口技術(shù)學(xué)習(xí)指導(dǎo).北京:電子工業(yè)出版社,2008</p><p> 附錄一 源程序和程序注釋</p><p> DATA SEGMENT COMMON</
38、p><p> INPUT_MESSAGEDB 0AH , 'PLEASE INPUT A NUMBER(LESS THAN 5 FIGURES):$'</p><p> QUIT_MESSAGE DB 0AH, 'ENTER Q OR q TO QUIT ANY OTHER TO CONTINUE:$' </p><p&g
39、t; IN_ASC_BUF DB 6 ;十進(jìn)制數(shù)的輸入緩沖區(qū),共可接收6個字符</p><p> DB ? ;保留,用于10號調(diào)用時DOS填入實(shí)際輸入字符個數(shù)</p><p> DB 6 DUP(?) ;一個符號位,四位數(shù)字ASCII碼,加上一個回車符,共計(jì)6字符</p><p> BIN_BU
40、F1 DW ? ;一個數(shù)轉(zhuǎn)換為二進(jìn)制后,放于此處</p><p> OUTPUT_MESSAGE DB 0AH , 'THE SUM IS:' , '$'</p><p> OUT_ASC_SUM DB 6 DUP(?) , '$' ;將二個數(shù)的和轉(zhuǎn)換為ASCII碼后,放
41、于此處,</p><p><b> ;以供9號調(diào)用顯示</b></p><p><b> DATA ENDS</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE , DS:DATA</p><p> sl PR
42、OC FAR</p><p><b> START:</b></p><p> MOV AX , DATA</p><p> MOV DS , AX</p><p> MOV DX , OFFSET INPUT_MESSAGE </p><p> MOV AH , 9</p>
43、<p> INT 21H ;提示輸入一個數(shù)</p><p> MOV DX , OFFSET IN_ASC_BUF </p><p> MOV AH , 10</p><p> INT 21H ;讀取第一個數(shù)</p><p&g
44、t; CALL ASC_TO_BIN ;轉(zhuǎn)換第一個數(shù)為二進(jìn)制</p><p> MOV BIN_BUF1 , AX ;保存第一個數(shù)</p><p> MOV DX , OFFSET INPUT_MESSAGE </p><p> MOV AH , 9</p><p> IN
45、T 21H ;提示輸入一個數(shù)</p><p> MOV DX , OFFSET IN_ASC_BUF </p><p> MOV AH , 10</p><p> INT 21H ;讀取第二個數(shù)</p><p> CALL ASC_T
46、O_BIN ; 轉(zhuǎn)換第二個數(shù)為二進(jìn)制</p><p> ADD AX , BIN_BUF1 ;計(jì)算這二個數(shù)之和</p><p> CALL BIN_TO_ASCII ;將和轉(zhuǎn)換為ASCII碼,以供顯示用</p><p> MOV DX , OFFSET OUTPUT_MES
47、SAGE</p><p> MOV AH , 9</p><p><b> INT 21H</b></p><p> MOV DX , OFFSET OUT_ASC_SUM</p><p> MOV AH , 9</p><p><b> INT 21H</b>&l
48、t;/p><p> MOV DX,OFFSET QUIT_MESSAGE</p><p> MOV AH , 9</p><p><b> INT 21H</b></p><p> MOV AH , 1</p><p> INT 21H </p><p> CM
49、P AL,'Q' </p><p><b> JZ OVER</b></p><p> CMP AL,'q' </p><p><b> JZ OVER</b>&
50、lt;/p><p><b> JMP START</b></p><p> OVER: MOV AH , 4CH</p><p><b> INT 21H</b></p><p><b> sl ENDP</b></p><p> A
51、SC_TO_BIN PROC </p><p> ;ASCII碼轉(zhuǎn)換為二進(jìn)制數(shù)</p><p> ;入口:十進(jìn)制數(shù)的ASCII碼在IN_ASC_BUF內(nèi)</p><p> ;出口:轉(zhuǎn)換后的二進(jìn)制數(shù)在AX內(nèi)</p><p> ;算法:先將其轉(zhuǎn)換成十進(jìn)制數(shù)字,再用累加和乘10加X的方法變成二進(jìn)制數(shù),如將</p><p
52、> ;358轉(zhuǎn)換為二進(jìn)制數(shù),可先將累加和賦0,再計(jì)算(((0*10+3)*10+5)*10+8),結(jié)果為二</p><p> ;進(jìn)制數(shù),再由符號位決定是否需要求補(bǔ)。</p><p> MOV CL , IN_ASC_BUF+1 ;取字符個數(shù)</p><p> MOV CH , 0</p><p> DE
53、C CL ;扣除符號位</p><p> MOV BX , OFFSET IN_ASC_BUF+3 ;調(diào)整BX指向十進(jìn)制數(shù)的最高位</p><p><b> PUSH BX</b></p><p><b> PUSH CX</b></
54、p><p><b> L1:</b></p><p> MOV AL , [BX]</p><p> AND AL , 0FH</p><p> MOV [BX] , AL</p><p><b> INC BX</b></p><p> LO
55、OP L1 ;將所有數(shù)字字符的高四位清0,使之變?yōu)閿?shù)字值</p><p><b> POP CX</b></p><p><b> POP BX</b></p><p> MOV AX , 0 ;累加
56、和賦初值</p><p> MOV SI , 10</p><p><b> L2:</b></p><p><b> MUL SI</b></p><p> ADD AL , [BX]</p><p> ADC AH , 0</p><p>
57、;<b> INC BX</b></p><p> LOOP L2 ;累加乘10</p><p> CMP IN_ASC_BUF+2 , '+'</p><p> JZ L3 ;符號是正號,轉(zhuǎn)移
58、</p><p> NEG AX ;符號是負(fù)號,求補(bǔ)</p><p><b> L3:</b></p><p><b> RET</b></p><p> ASC_TO_BIN ENDP</p><p>
59、 BIN_TO_ASCII PROC </p><p> ;將二進(jìn)制數(shù)轉(zhuǎn)換為對應(yīng)十進(jìn)制數(shù)數(shù)字的ASCII碼</p><p> ;入口:二進(jìn)制數(shù)在AX內(nèi)</p><p> ;出口:轉(zhuǎn)換后的ASCII碼在OUT_ASC_SUM變量內(nèi)</p><p> ;算法:AX中的數(shù)范圍在+32767到-32768之間,先檢查AX中的符號位,以決定
60、輸出“+”</p><p> ;還是“-”,若是負(fù)數(shù),應(yīng)先求補(bǔ),得到原碼后即可與正數(shù)作統(tǒng)一處理。轉(zhuǎn)換方法為將被轉(zhuǎn)換的</p><p> ;二進(jìn)制數(shù)先除以10000,商;即為萬位數(shù),再將余數(shù)除以1000,商為千位數(shù),以此類推,求出</p><p> ;百、十位數(shù),剩下的為個位數(shù)。最后,將各個數(shù)加上30H,即成為對應(yīng)字符。</p><p>
61、 MOV OUT_ASC_SUM , '+'</p><p> CMP AX , 0</p><p> JGE L4 ;不是負(fù)數(shù),轉(zhuǎn)移</p><p><b> NEG AX</b></p><p> MOV OUT_ASC_SUM , &
62、#39;-'</p><p><b> L4:</b></p><p><b> CWD</b></p><p> MOV BX , 10000</p><p><b> DIV BX</b></p><p> ADD AL , 30H
63、 ;將萬位轉(zhuǎn)換為數(shù)字(商應(yīng)在AX內(nèi),但因?yàn)樯滩淮笥?,</p><p> ;所以有效部分在AL內(nèi)) </p><p> MOV OUT_ASC_SUM+1 , AL ;保存萬位數(shù)字</p><p> MOV AX , DX ;將余數(shù)置入AX內(nèi),以便當(dāng)作
64、被除數(shù)</p><p><b> CWD</b></p><p> MOV BX , 1000</p><p><b> DIV BX</b></p><p> ADD AL , 30H</p><p> MOV OUT_ASC_SUM+2 , AL
65、;保存千位數(shù)字</p><p> MOV AX , DX ;將余數(shù)置入AX內(nèi),以便當(dāng)作被除數(shù)</p><p> MOV BL , 100</p><p><b> DIV BL</b></p><p> ADD AL , 30H</p><p>
66、; MOV OUT_ASC_SUM+3 , AL ;保存百位數(shù)字</p><p> MOV AL , AH</p><p><b> CBW</b></p><p> MOV BL , 10</p><p><b> DIV BL</b></p>&
67、lt;p> ADD AL , 30H</p><p> MOV OUT_ASC_SUM+4 , AL ;保存十位數(shù)字</p><p> ADD AH , 30H</p><p> MOV OUT_ASC_SUM+5 , AH ;保存?zhèn)€位數(shù)字</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)----鍵盤接收日期并顯示
- 微機(jī)原理課程設(shè)計(jì)報告--數(shù)據(jù)采集顯示系統(tǒng)
- 微機(jī)原理課程設(shè)計(jì)-鍵盤輸入
- 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)-鍵盤顯示控制器
- 微機(jī)原理課程設(shè)計(jì)---指針顯示時鐘
- 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)——液晶顯示器與鍵盤系統(tǒng)
- 微機(jī)原理課程設(shè)計(jì)---鍵控數(shù)據(jù)采集及數(shù)值顯示電路設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--代碼轉(zhuǎn)換程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)----進(jìn)制轉(zhuǎn)換程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---字符串動畫顯示
- 微機(jī)原理課程設(shè)計(jì)報告書--ad轉(zhuǎn)換
- 微機(jī)原理與接口技術(shù)-8086cpu小鍵盤課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---點(diǎn)陣電子顯示屏的設(shè)計(jì)
- 鍵盤鋼琴匯編語言程序設(shè)計(jì)—微機(jī)原理課程設(shè)計(jì)
- 鍵盤鋼琴匯編語言程序設(shè)計(jì)—微機(jī)原理課程設(shè)計(jì)
- 鍵盤鋼琴匯編語言程序設(shè)計(jì)—微機(jī)原理課程設(shè)計(jì)
- java課程設(shè)計(jì)信息錄入顯示系統(tǒng)
- 微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---帶數(shù)字顯示的交通燈
- 《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)-顯示系統(tǒng)時間的程序
評論
0/150
提交評論