版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 題 目:進(jìn)制轉(zhuǎn)換程序設(shè)計(jì)</p><p><b> 初始條件:</b></p><p> 具備數(shù)字電路的理論知識(shí);具備微機(jī)原理的理論知識(shí)和實(shí)踐能力;熟悉匯編語(yǔ)言編程技術(shù);熟悉80X86的CPU結(jié)構(gòu)和指令系統(tǒng);熟悉相關(guān)常用接口電路的設(shè)計(jì)使用方
2、法。</p><p> 要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p> 1、程序?qū)崿F(xiàn)二進(jìn)制、十進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換</p><p> 2、在命令提示下輸入相應(yīng)進(jìn)制數(shù),回車后進(jìn)行轉(zhuǎn)換</p><p> 3、輸入錯(cuò)誤時(shí)應(yīng)聲響報(bào)警并拒絕輸入</p><p>
3、4、程序采用匯編語(yǔ)言在PC機(jī)上完成</p><p> 5、完成符合學(xué)校要求的設(shè)計(jì)說明書</p><p><b> 時(shí)間安排:</b></p><p> 一周,其中2天程序設(shè)計(jì),2天程序調(diào)試,1天完成課程設(shè)計(jì)報(bào)告書及答辯</p><p> 指導(dǎo)教師簽名: 年 月
4、 日</p><p> 系主任(或責(zé)任教師)簽名: 年 月 日</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p><b> 1 原理分析1</b></p><p&g
5、t; 2 程序設(shè)計(jì)流程3</p><p> 2.1 程序流程圖3</p><p> 2.2 設(shè)計(jì)思路4</p><p><b> 3 程序設(shè)計(jì)5</b></p><p> 3.1 堆棧段數(shù)據(jù)段程序設(shè)計(jì)5</p><p> 3.2 主程序設(shè)計(jì)5</p><
6、p> 3.3 輸入二進(jìn)制程序7</p><p> 3.4 輸入十進(jìn)制程序8</p><p> 3.5 輸入十六進(jìn)制程序8</p><p> 3.6 輸出二進(jìn)制程序9</p><p> 3.7 輸出十進(jìn)制程序9</p><p> 3.8 輸出十六進(jìn)制程序11</p><p
7、> 3.9 回車鍵確定程序11</p><p> 3.10 報(bào)警程序12</p><p><b> 4 運(yùn)行結(jié)果13</b></p><p><b> 5 心得體會(huì)15</b></p><p><b> 參考文獻(xiàn)16</b></p>&l
8、t;p><b> 摘要</b></p><p> 日常生活與實(shí)際應(yīng)用中,往往需要計(jì)算機(jī)處理的信息是多種多樣的,如各種進(jìn)位制的數(shù)據(jù),不同語(yǔ)種的文字符號(hào)和各種圖像信息等。但在計(jì)算機(jī)內(nèi)部采用的是二進(jìn)制計(jì)數(shù)制,這種進(jìn)制表達(dá)方法對(duì)于人們研究分析是不那么方便的。本次課程設(shè)計(jì)將通過所學(xué)的微機(jī)原理知識(shí)理論,用匯編語(yǔ)言編寫程序,實(shí)現(xiàn)二進(jìn)制、十進(jìn)制與十六進(jìn)制之間的相互轉(zhuǎn)換,并在MF2KP軟件上演示。&
9、lt;/p><p> 關(guān)鍵詞:匯編程序 進(jìn)制轉(zhuǎn)換 MF2KP</p><p><b> 1 原理分析</b></p><p> 進(jìn)位計(jì)數(shù)制是人們利用符號(hào)來計(jì)數(shù)的方法。一種進(jìn)位計(jì)數(shù)制包含一組數(shù)碼符號(hào)和兩個(gè)基本因素。數(shù)碼是用不同的數(shù)字符號(hào)來表示一種數(shù)制的數(shù)值,這些數(shù)字符號(hào)稱為”數(shù)碼”?;菙?shù)制所使用的數(shù)碼個(gè)數(shù)稱為”基”。權(quán)是某數(shù)制每一位所具有
10、的值稱為”權(quán)”。</p><p> 十六進(jìn)制(Hexadecimal) 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F</p><p> 十進(jìn)制(Decimal) 0.1.2.3.4.5.6.7.8.9 八進(jìn)制(Octal) 0.1.2.3.4.5.6.7</p><p> 二進(jìn)制(Binary) 0.1 </p>&
11、lt;p> 在計(jì)算機(jī)內(nèi)部采用二進(jìn)制計(jì)數(shù)制,但在實(shí)際應(yīng)用中,需要計(jì)算機(jī)處理的信息是多種多樣的,如各種進(jìn)位制的數(shù)據(jù),不同語(yǔ)種的文字符號(hào)和各種圖像信息等。但在計(jì)算機(jī)中采用的是二進(jìn)制計(jì)數(shù)制。本次課程設(shè)計(jì)通過所學(xué)的微機(jī)原理,用匯編語(yǔ)言編寫程序,實(shí)現(xiàn)二進(jìn)制轉(zhuǎn)換成十進(jìn)制或十六進(jìn)制,十進(jìn)制轉(zhuǎn)換成二進(jìn)制或十六進(jìn)制,十六進(jìn)制轉(zhuǎn)換成二進(jìn)制或十進(jìn)制。</p><p> 十進(jìn)制轉(zhuǎn)換為二進(jìn)制整數(shù)部分的方法叫做除2取余法,每次將整數(shù)
12、部分除以2,余數(shù)為該位權(quán)上的數(shù),而商繼續(xù)除以2,余數(shù)又為上一個(gè)位權(quán)上的數(shù),這個(gè)步驟一直持續(xù)下去,直到商為0為止,最后讀數(shù)時(shí)候,從最后一個(gè)余數(shù)讀起,一直到最前面的一個(gè)余數(shù)。小數(shù)部分的方法叫乘2取整法,就是將小數(shù)部分乘以2,然后取整數(shù)部分,剩下的小數(shù)部分繼續(xù)乘以2,然后取整數(shù)部分,剩下的小數(shù)部分又乘以2,一直取到小數(shù)部分為零為止。如果永遠(yuǎn)不能為零,就同十進(jìn)制數(shù)的四舍五入一樣,按照要求保留多少位小數(shù)時(shí),就根據(jù)后面一位是0還是1,取舍,如果是零
13、,舍掉,如果是1,向入一位。換句話說就是0舍1入。讀數(shù)要從前面的整數(shù)讀到后面的整數(shù)。</p><p> 二進(jìn)制轉(zhuǎn)換為十進(jìn)制不分整數(shù)和小數(shù)部分,方法(按權(quán)相加法)是將二進(jìn)制每位上的數(shù)乘以權(quán),然后相加之和即是十進(jìn)制數(shù)。</p><p> 二進(jìn)制轉(zhuǎn)換為十六進(jìn)制用取四合一法,即從二進(jìn)制的小數(shù)點(diǎn)為分界點(diǎn),向左(向右)每四位取成一位,接著將這四位二進(jìn)制按權(quán)相加,得到的數(shù)就是一位十六位二進(jìn)制數(shù),然后
14、,按順序進(jìn)行排列,小數(shù)點(diǎn)的位置不變,得到的數(shù)字就是我們所求的十六進(jìn)制數(shù)。如果向左(向右)取四位后,取到最高(最低)位時(shí)候,如果無法湊足四位,可以在小數(shù)點(diǎn)最左邊(最右邊),即整數(shù)的最高位(最低位)添0,湊足四位。</p><p> 將十六進(jìn)制轉(zhuǎn)換為二進(jìn)制,取一分四法,即將一位十六進(jìn)制數(shù)分解成四位二進(jìn)制數(shù),用四位二進(jìn)制按權(quán)相加去湊這位十六進(jìn)制數(shù),小數(shù)點(diǎn)位置照舊。</p><p> 十進(jìn)制轉(zhuǎn)
15、換成十六進(jìn)制的方法與十進(jìn)制轉(zhuǎn)換成二進(jìn)制的方法相同,但不同的是每次除以16。</p><p><b> 2 程序設(shè)計(jì)流程</b></p><p><b> 2.1 程序流程圖</b></p><p><b> Y</b></p><p><b> N</b
16、></p><p><b> 2.2 設(shè)計(jì)思路</b></p><p> 首先對(duì)原理進(jìn)行分析,了解不同進(jìn)制數(shù)之間是如何進(jìn)行轉(zhuǎn)換。充分認(rèn)識(shí)匯編語(yǔ)言的指令系統(tǒng),掌握各個(gè)匯編指令的功能及用法,了解各種程序結(jié)構(gòu)(順序、分支、循環(huán)和子程序)的特點(diǎn)。首先定義堆棧段,再定義數(shù)據(jù)段,在數(shù)據(jù)段中輸入MENU中要顯示的內(nèi)容。再建一個(gè)表TABLE,TABLE中的內(nèi)容為L(zhǎng)0,L1,
17、L2,L3,L4,L5,L6把然后根據(jù)題目要求設(shè)計(jì)簡(jiǎn)單的程序流程圖,再根據(jù)流程圖設(shè)計(jì)出每一模塊的匯編語(yǔ)言程序,然后再通過調(diào)用、跳轉(zhuǎn)、轉(zhuǎn)移等方法將各個(gè)子程序連接在一起。這樣依據(jù)題目要求的匯編程序就初步完成了,本次用到的軟件是MF2KP,首先在MF2KP環(huán)境下輸入設(shè)計(jì)的匯編程序,然后編譯、連接、運(yùn)行。</p><p><b> 3 程序設(shè)計(jì)</b></p><p>
18、3.1 堆棧段數(shù)據(jù)段程序設(shè)計(jì)</p><p> 首先定義堆棧段的程序,程序如下所示:</p><p> STACK SEGMENT STACK</p><p> DB 200 DUP(?)</p><p> STACK ENDS</p><p> 在數(shù)據(jù)段中有后面程序要用到的數(shù)據(jù)MENU,mess1到mess
19、6和error,還有數(shù)據(jù)表TABLE。定義數(shù)據(jù)段程序如下所示:</p><p> DATA SEGMENT</p><p> MENU DB 'Please Input your Choice:',0dh,0ah</p><p> db '1: Bin2 -->Dec10',0dh,0ah</p><
20、p> db '2: Bin2 -->Hex16',0dh,0ah </p><p> db '3: Dec10 -->Bin2',0dh,0ah</p><p> db '4: Dec10 -->Hex16',0dh,0ah</p><p> db '5: He
21、x16 -->Bin2',0dh,0ah</p><p> db '6: Hex16 -->Dec10',0dh,0ah</p><p> db '0: Exit. $'</p><p> mess1 db 'Please input a Bin2 number:$'</p>
22、;<p> mess2 db 'Please input a Dec10 number:$'</p><p> mess3 db 'Please input a Hex16 number:$'</p><p> mess4 db 'Output Bin is: $'</p><p> m
23、ess5 db 'Output Dec is: $'</p><p> mess6 db 'Output Hex is: $'</p><p> error db' error!please input your choice again$'</p><p> TABLE DW L0,L1,L2,L3,L
24、4,L5,L6</p><p><b> DATA ENDS</b></p><p><b> 3.2 主程序設(shè)計(jì)</b></p><p> 在定義完堆棧段和數(shù)據(jù)段后,就是主程序的設(shè)計(jì)。首先對(duì)寄存器AX清零,壓棧。讀取數(shù)據(jù),在屏幕上顯示字符串MENU,根據(jù)MENU的提示,從鍵盤輸入一字符串。將該字符串減30H后于7進(jìn)
25、行比較,若小于7,則跳轉(zhuǎn)到DONE程序,否則調(diào)用報(bào)警程序,發(fā)出聲音報(bào)警并提示error。在DONE程序中,若輸入的數(shù)字為1,則立即跳轉(zhuǎn)到L1,進(jìn)行二進(jìn)制轉(zhuǎn)化為十進(jìn)制;若輸入的數(shù)字為2,則跳轉(zhuǎn)到L2,進(jìn)行二進(jìn)制轉(zhuǎn)換為十六進(jìn)制;若為3,則跳轉(zhuǎn)到L3進(jìn)行十進(jìn)制轉(zhuǎn)換為二進(jìn)制;若為4,則跳轉(zhuǎn)到L4進(jìn)行十進(jìn)制轉(zhuǎn)換為十六進(jìn)制;若為5,則跳轉(zhuǎn)到L5進(jìn)行十六進(jìn)制轉(zhuǎn)換為二進(jìn)制;若為6,則跳轉(zhuǎn)到L6進(jìn)行十六進(jìn)制轉(zhuǎn)換為十進(jìn)制;如果為零,則退出程序,結(jié)束。<
26、;/p><p> 主程序的設(shè)計(jì)如下所示:</p><p> CODE SEGMENT</p><p> MAIN PROC FAR</p><p> ASSUME CS:CODE,DS:DATA,SS:STACK</p><p><b> START:</b></p><
27、p><b> PUSH DS</b></p><p> XOR AX,AX ;清零</p><p><b> PUSH AX</b></p><p> MOV AX,DATA</p><p><b> MOV DS,AX</b></p>&l
28、t;p> LKS:LEA DX,MENU ;取存儲(chǔ)區(qū)首址</p><p> MOV AH,09H ;顯示字符串 </p><p><b> INT 21H</b></p><p> MOV AH,01H ;從鍵盤輸入字符串 </p><p><b> IN
29、T 21H</b></p><p> SUB AL,30H</p><p> CMP AL,07h</p><p> JB DONE ;AL小于07H跳轉(zhuǎn)到DONE</p><p> CALL SOUNDF ;調(diào)用報(bào)警程序</p><p> LEA DX,error
30、</p><p> MOV AH,09H ;顯示字符串error</p><p><b> INT 21H</b></p><p><b> JMP MAIN</b></p><p> DONE:LEA SI,TABLE</p><p><b>
31、; MOV AH,0</b></p><p><b> SHL AX,1</b></p><p><b> ADD SI,AX</b></p><p><b> JMP [SI]</b></p><p> ??;二進(jìn)制轉(zhuǎn)換成十進(jìn)制</p><
32、;p> L1:CALL INBIN ;調(diào)用輸入二進(jìn)制程序</p><p><b> CALL CRLF</b></p><p> CALL OUTDEC ;調(diào)用輸出十進(jìn)制程序</p><p><b> CALL CRLF</b></p><p> JMP L
33、KS ;直接跳轉(zhuǎn)到LKS</p><p> ?。欢M(jìn)制轉(zhuǎn)換成十六進(jìn)制</p><p> L2:CALL INBIN ;調(diào)用輸入二進(jìn)制程序</p><p><b> CALL CRLF</b></p><p> CALL OUTHEX ;調(diào)用輸出十六進(jìn)制程序</
34、p><p> CALL CRLF </p><p><b> JMP LKS</b></p><p> ?。皇M(jìn)制轉(zhuǎn)換成二進(jìn)制</p><p> L3:CALL INDEC ;調(diào)用輸入十進(jìn)制程序</p><p><b> CALL CRLF</b><
35、/p><p> CALL OUTBIN ;調(diào)用輸出二進(jìn)制程序</p><p><b> CALL CRLF</b></p><p><b> JMP LKS</b></p><p> ??;十進(jìn)制轉(zhuǎn)換成十六進(jìn)制</p><p> L4:CALL INDEC
36、 ;調(diào)用輸入十進(jìn)制程序</p><p><b> CALL CRLF</b></p><p> CALL OUTHEX ;調(diào)用輸出十六進(jìn)制程序</p><p><b> CALL CRLF</b></p><p><b> JMP LKS</b></p
37、><p> ??;十六進(jìn)制轉(zhuǎn)換成二進(jìn)制</p><p> L5:CALL INHEX ;調(diào)用輸入十六進(jìn)制程序</p><p><b> CALL CRLF</b></p><p> CALL OUTBIN ;調(diào)用輸出二進(jìn)制程序</p><p><b> C
38、ALL CRLF</b></p><p><b> JMP LKS</b></p><p> ??;十六進(jìn)制轉(zhuǎn)換成十進(jìn)制</p><p> L6:CALL INHEX ;調(diào)用輸入十六進(jìn)制程序</p><p><b> CALL CRLF</b></p><
39、;p> CALL OUTDEC ;調(diào)用輸出十進(jìn)制程序</p><p><b> CALL CRLF</b></p><p><b> JMP LKS</b></p><p><b> L0:RET</b></p><p><b> MAIN
40、 ENDP</b></p><p> CODE ENDS ;代碼段結(jié)束</p><p> END START ;程序結(jié)束</p><p> 3.3 輸入二進(jìn)制程序</p><p> 二進(jìn)制數(shù)從鍵盤鍵入之后只需要直接完成從鍵盤向內(nèi)存的循環(huán)輸入即可,其代碼如下:</p>
41、<p> INBIN PROC</p><p> LEA DX,MESS1</p><p> MOV AH,09H ;顯示字符串MESS1</p><p><b> INT 21H</b></p><p><b> MOV BX,0</b></p>
42、<p> INBL1:MOV AH,01H ;從鍵盤輸入字符</p><p><b> INT 21H</b></p><p> CMP AL,0DH ;比較輸入的是否是回車鍵</p><p> JZ INBEXIT ;等于零(回車鍵)跳轉(zhuǎn)到INBEXIT</p>
43、;<p> AND AL,01H ;保留低四位</p><p> SHL BX,1 ;邏輯左移一位</p><p><b> OR BL,AL</b></p><p><b> JMP INBL1</b></p><p> INBEX
44、IT:RET</p><p> INBIN ENDP </p><p> 3.4 輸入十進(jìn)制程序</p><p> 十進(jìn)制數(shù)從鍵盤鍵入之后需要進(jìn)行乘法運(yùn)算之后轉(zhuǎn)換成二進(jìn)制數(shù),再完成從鍵盤向內(nèi)存的循環(huán)輸入,其代碼如下:</p><p> INDEC PROC</p><p> LEA DX,MESS2<
45、;/p><p> MOV AH,09H ;顯示字符串MESS2</p><p><b> INT 21H</b></p><p><b> MOV BX,0</b></p><p> INDL1:MOV AH,01H ;從鍵盤輸入字符</p><p>
46、;<b> INT 21H</b></p><p> CMP AL,0DH ;比較輸入的是否是回車鍵</p><p> JZ INDEXIT ;等于零(回車鍵)跳轉(zhuǎn)到INDEXIT</p><p> SUB AL,30H</p><p><b> CMP AL,9</b
47、></p><p> JBE INDL2 ;小等于9跳轉(zhuǎn)到INDL2</p><p><b> SUB AL,7</b></p><p> INDL2:MOV AH,0</p><p> XCHG AX,BX ;AX BX交換</p><p><b&g
48、t; MOV CX,10</b></p><p> MUL CX ;AX乘以CX</p><p><b> ADD BX,AX</b></p><p><b> JMP INDL1</b></p><p> INDEXIT:RET</p><
49、;p> INDEC ENDP</p><p> 3.5 輸入十六進(jìn)制程序</p><p> 十六進(jìn)制數(shù)從鍵盤鍵入之后需要進(jìn)行從1位變?yōu)?位的移位運(yùn)算轉(zhuǎn)換成二進(jìn)制數(shù),再完成從鍵盤向內(nèi)存的循環(huán)輸入,其代碼如下:</p><p> INHEX PROC</p><p> LEA DX,MESS3</p><p&g
50、t; MOV AH,09H ;顯示字符串MESS3</p><p><b> INT 21H</b></p><p><b> MOV BX,0</b></p><p> IHL1:MOV AH,01H ;從鍵盤輸入字符</p><p><b> INT 21H
51、</b></p><p> CMP AL,0DH ;比較輸入的是否是回車鍵</p><p> JZ IHEXIT ;等于零(回車鍵)跳轉(zhuǎn)到IHEXIT</p><p> SUB AL,30H</p><p><b> CMP AL,9</b></p><
52、p> JBE IHL2 ;如果AL小等于9跳轉(zhuǎn)到IHL2</p><p><b> SUB AL,7</b></p><p> IHL2:MOV CL,4</p><p> SHL BX,CL ;BX邏輯左移CL位</p><p><b> OR BL,AL&l
53、t;/b></p><p><b> JMP IHL1</b></p><p> IHEXIT:RET</p><p> INHEX ENDP</p><p> 3.6 輸出二進(jìn)制程序</p><p> 將內(nèi)存中存儲(chǔ)的2進(jìn)制數(shù)輸出為2進(jìn)制數(shù),只需要將內(nèi)存中所存儲(chǔ)的碼循環(huán)輸出顯示出來
54、即可,其代碼如下:</p><p> OUTBIN PROC</p><p> LEA DX,MESS4</p><p> MOV AH,09H ;顯示字符串MESS4</p><p><b> INT 21H</b></p><p><b> MOV CX,16&
55、lt;/b></p><p> OBL1:ROL BX,1 ;BX循環(huán)左移一位</p><p><b> MOV DL,BL</b></p><p> AND DL,01H</p><p><b> OR DL,30H</b></p><p>
56、 MOV AH,02H ;字符輸出</p><p><b> INT 21H</b></p><p> LOOP OBL1 ;循環(huán)OBL1</p><p><b> RET</b></p><p> OUTBIN ENDP</p><p> 3.7
57、 輸出十進(jìn)制程序</p><p> 將內(nèi)存中存儲(chǔ)的2進(jìn)制數(shù)輸出為10進(jìn)制數(shù),需要將內(nèi)存中的碼進(jìn)行除法運(yùn)算,再循環(huán)輸出顯示,其代碼如下:</p><p> OUTDEC PROC</p><p> LEA DX,MESS5</p><p> MOV AH,09H ;顯示字符串MESS5</p><p>
58、;<b> INT 21H</b></p><p> PUSH BX ;壓棧</p><p><b> MOV AX,BX</b></p><p><b> MOV DX,0</b></p><p> MOV CX,10000</p>&
59、lt;p> DIV CX ;AX除以CX</p><p><b> MOV BX,DX</b></p><p> MOV DL,AL </p><p><b> OR DL,30H</b></p><p> MOV AH,02H</p><p
60、><b> INT 21H</b></p><p><b> MOV AX,BX</b></p><p><b> MOV DX,0</b></p><p> MOV CX,1000</p><p><b> DIV CX</b></
61、p><p><b> MOV BX,DX</b></p><p><b> MOV DL,AL</b></p><p><b> OR DL,30H</b></p><p> MOV AH,02H</p><p><b> INT 21H
62、</b></p><p><b> MOV AX,BX</b></p><p><b> MOV DX,0</b></p><p> MOV CX,100</p><p><b> DIV CX</b></p><p><b&g
63、t; MOV BX,DX</b></p><p><b> MOV DL,AL</b></p><p><b> OR DL,30H</b></p><p> MOV AH,02H</p><p><b> INT 21H</b></p>&
64、lt;p><b> MOV AX,BX</b></p><p><b> MOV CL,10</b></p><p><b> DIV CL</b></p><p><b> MOV BL,AH</b></p><p><b>
65、MOV DL,AL</b></p><p><b> OR DL,30H</b></p><p> MOV AH,02H</p><p><b> INT 21H</b></p><p><b> MOV DL,BL</b></p><p
66、><b> OR DL,30H</b></p><p><b> INT 21H</b></p><p><b> POP BX</b></p><p><b> RET</b></p><p> OUTDEC ENDP</p>
67、;<p> 3.8 輸出十六進(jìn)制程序</p><p> 將內(nèi)存中存儲(chǔ)的2進(jìn)制數(shù)輸出為16進(jìn)制數(shù),需要將內(nèi)存中的碼進(jìn)行移位運(yùn)算,將4位2進(jìn)制數(shù)合并為1位16進(jìn)制數(shù),再循環(huán)輸出顯示,其代碼如下:</p><p> OUTHEX PROC</p><p> LEA DX,MESS6</p><p> MOV AH,09H
68、 ;顯示字符串MESS6</p><p><b> INT 21H</b></p><p><b> MOV CX,4</b></p><p> OHL1:ROL BX,1 ;循環(huán)左移</p><p><b> ROL BX,1</b></
69、p><p><b> ROL BX,1</b></p><p><b> ROL BX,1</b></p><p><b> MOV DL,BL</b></p><p> AND DL,0FH ;保留低四位</p><p> ADD D
70、L,30H</p><p> CMP DL,39H</p><p><b> JBE OHL2</b></p><p><b> ADD DL,7</b></p><p> OHL2:MOV AH,02H</p><p><b> INT 21H</
71、b></p><p><b> LOOP OHL1</b></p><p><b> RET</b></p><p> OUTHEX ENDP</p><p> 3.9 回車鍵確定程序</p><p> 當(dāng)輸入指定數(shù)制的數(shù)之后,需要依靠此程序來確定輸入完成并執(zhí)
72、行轉(zhuǎn)換過程并輸出,其代碼如下:</p><p><b> CRLF PROC</b></p><p> MOV AH,02H ;輸出字符</p><p> MOV DL,0DH ;確定(回車鍵)</p><p><b> INT 21H</b></p><
73、p> MOV DL,0AH ;鍵盤緩沖輸入</p><p><b> INT 21H</b></p><p><b> RET</b></p><p><b> CRLF ENDP</b></p><p><b> 3.10 報(bào)警程序</
74、b></p><p> 當(dāng)輸入的數(shù)不在所選范圍(即數(shù)字0~6)時(shí),會(huì)啟動(dòng)此程序進(jìn)行報(bào)警并恢復(fù)到出錯(cuò)前的狀況,其代碼如下:</p><p> SOUNDF PROC NEAR </p><p> IN AL,61H ;取得設(shè)備控制寄存器開關(guān)量</p><p><b> MOV BL,AL</b
75、></p><p> MOV AL,0B6H </p><p> OUT 43H,AL ;寫入方式控制字</p><p> MOV AX,1000H ;輸出頻率1000Hz</p><p> OUT 42H,AL ;先寫入低 8位</p><p> MOV
76、 AL,AH </p><p> OUT 42H,AL ;后寫入高 8位</p><p> OR AL,3 ;接通揚(yáng)聲器</p><p> OUT 61H,AL ;設(shè)置設(shè)備控制寄存器開關(guān)量</p><p> MOV DX,2500 </p><p>
77、 LOOP1:DEC DX</p><p> MOV CX,65535</p><p> LOOP2:LOOP LOOP2 ;循環(huán)LOOP2</p><p><b> CMP DX,0H</b></p><p> JNZ LOOP1 ;DX不等于0跳轉(zhuǎn)到LOOP1</p><p>
78、 MOV AL,AH </p><p> MOV AL,BL </p><p> OUT 61H,AL ;恢復(fù)原狀</p><p><b> RET </b></p><p> SOUNDF ENDP</p><p><b> 4 運(yùn)行結(jié)果</b>
79、</p><p> 在微機(jī)原理實(shí)驗(yàn)平臺(tái)集成開發(fā)環(huán)境MF2KP上輸入該匯編程序,點(diǎn)擊16位編碼系統(tǒng)的匯編源程序,再點(diǎn)擊連接目標(biāo)碼,再點(diǎn)運(yùn)行程序。這時(shí)彈出DOS窗口,窗口如圖4-1所示。</p><p><b> 圖4-1 初始窗口</b></p><p> 首先進(jìn)行二進(jìn)制轉(zhuǎn)換成十進(jìn)制,在窗口中輸入1,這時(shí)窗口中提示“Please input
80、 a Bin number:”.輸入二進(jìn)制數(shù)11010110,運(yùn)行顯示結(jié)果如圖4-2所示。</p><p> 圖4-2 二進(jìn)制轉(zhuǎn)十進(jìn)制</p><p> 要進(jìn)行二進(jìn)制轉(zhuǎn)換成十六進(jìn)制時(shí),在窗口中輸入2,這時(shí)窗口中提示“Please input a Bin number:”.輸入二進(jìn)制數(shù)11010110,運(yùn)行顯示結(jié)果如圖4-3所示。</p><p> 圖4-3 二
81、進(jìn)制轉(zhuǎn)十六進(jìn)制</p><p> 要進(jìn)行十進(jìn)制轉(zhuǎn)換成二進(jìn)制時(shí),在窗口中輸入3,這時(shí)窗口中提示“Please input a Dec number:”.輸入十進(jìn)制數(shù)113,運(yùn)行顯示結(jié)果如圖4-4所示。</p><p> 圖4-4 十進(jìn)制轉(zhuǎn)二進(jìn)制</p><p> 要進(jìn)行十進(jìn)制轉(zhuǎn)換成十六進(jìn)制時(shí),在窗口中輸入4,這時(shí)窗口中提示“Please input a Dec
82、number:”.輸入十進(jìn)制數(shù)159,運(yùn)行顯示結(jié)果如圖4-5所示。</p><p> 圖4-5 十進(jìn)制轉(zhuǎn)十六進(jìn)制</p><p> 要進(jìn)行十六進(jìn)制轉(zhuǎn)換成二進(jìn)制,在窗口中輸入5,這時(shí)窗口中提示“Please input a Hex number:”.輸入十六進(jìn)制數(shù)1D,運(yùn)行顯示結(jié)果如圖4-6所示。</p><p> 圖4-6 十六進(jìn)制轉(zhuǎn)二進(jìn)制</p>
83、<p> 要進(jìn)行十六進(jìn)制轉(zhuǎn)換成十進(jìn)制,在窗口中輸入6,這時(shí)窗口中提示“Please input a Hex number:”.輸入十六進(jìn)制數(shù)30,運(yùn)行顯示結(jié)果如圖4-7所示。</p><p> 圖4-7 十六進(jìn)制轉(zhuǎn)十進(jìn)制</p><p> 當(dāng)輸入非0-6的字符時(shí),系統(tǒng)報(bào)錯(cuò),請(qǐng)求重新輸入,運(yùn)行顯示結(jié)果如圖4-8所示。</p><p><b&g
84、t; 圖4-8 報(bào)錯(cuò)界面</b></p><p><b> 5 心得體會(huì)</b></p><p> 回顧此次微機(jī)原理課程設(shè)計(jì),至今感慨頗多。的確,從選題到定稿,從理論到實(shí)踐,在短短的一個(gè)星期的日子里,有苦有甜。同時(shí)也學(xué)到很多很多新的東西,雖然時(shí)間有限但是自己很多方面都有了提升,如動(dòng)手編程能力和解決問題的能力。</p><p>
85、 課程設(shè)計(jì)剛開始拿到題目時(shí),對(duì)于理論知識(shí)學(xué)習(xí)不夠扎實(shí)的我深深感到了自己的不足,便重新看了教材,對(duì)知識(shí)進(jìn)行了梳理,掌握了基本理論知識(shí)。這樣對(duì)平時(shí)學(xué)習(xí)的不足和缺陷就有所彌補(bǔ)。遇到過各種各樣的問題,沒有扎實(shí)的理論知識(shí)是無法解決的。只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,通過實(shí)際動(dòng)手去驗(yàn)證理論,在這二者的配合下,我們不僅可以成功的完成課程設(shè)計(jì),而且還可以掌握和鞏固所學(xué)知識(shí),充實(shí)自己的知識(shí)儲(chǔ)備。同時(shí)也可以使自己的實(shí)際動(dòng)手能力和獨(dú)
86、立思考的能力在一定程度上得到提升,使自己能更好的適應(yīng)社會(huì)的要求。</p><p> 通過本次課程設(shè)計(jì),我在發(fā)現(xiàn)問題、分析問題和解決問題的能力得到了提升。培養(yǎng)了我的設(shè)計(jì)思維,提高了我們的邏輯思維能力,使我們?cè)趨R編程序的分析與設(shè)計(jì)上有了很大的進(jìn)步。同時(shí)也讓我在面對(duì)問題的時(shí)候不在像以前那樣驚慌失措,而是慢慢分析問題,逐步去解決問題,實(shí)現(xiàn)各個(gè)擊破。培養(yǎng)我們獨(dú)立思考的能力,和邏輯的分析能力.</p><
87、;p> 總之,通過本次課程設(shè)計(jì),我收獲頗豐,一方面使自己各方面能力在一定程度上得到提升,另一方面是自己切身體會(huì)到匯編語(yǔ)言的實(shí)用性和有效性,同時(shí)在讓我體會(huì)到了設(shè)計(jì)的艱辛的同時(shí),更讓我體會(huì)到成功的喜悅和快樂。</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】《微機(jī)原理與接口技術(shù)》,姚燕男、薛鈞義編著,高等教育出版社,2004</p&g
88、t;<p> 【2】《微型機(jī)原理與接口技術(shù)》,劉永華,王成端編著,清華大學(xué)出版社,2006</p><p> 【3】《微型計(jì)算機(jī)原理與接口技術(shù)》,楊立等編著,中國(guó)水利水電出版社,2005</p><p> 【4】《微機(jī)原理應(yīng)用實(shí)踐》,王萍、周根元等編著,機(jī)械工業(yè)出版社,2001 </p><p> 【5】《微型計(jì)算機(jī)原理與與常用接口技術(shù)》,袁開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)--代碼轉(zhuǎn)換程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--加密解密程序設(shè)計(jì)
- 微機(jī)原理-課程設(shè)計(jì)電風(fēng)扇程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--信號(hào)發(fā)生器功能程序設(shè)計(jì)
- 鍵盤鋼琴匯編語(yǔ)言程序設(shè)計(jì)—微機(jī)原理課程設(shè)計(jì)
- 鍵盤鋼琴匯編語(yǔ)言程序設(shè)計(jì)—微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---動(dòng)畫心匯編程序設(shè)計(jì)
- 鍵盤鋼琴匯編語(yǔ)言程序設(shè)計(jì)—微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---霓虹燈的模擬顯示程序設(shè)計(jì)
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- 《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)--雙機(jī)串行通訊程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---選擇多功能程序設(shè)計(jì)——軟件開發(fā)方向
- 微機(jī)原理課程設(shè)計(jì)----打字練習(xí)程序
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換.doc
- 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)---字符串程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)報(bào)告--小鳥動(dòng)畫程序
- 組成原理課程設(shè)計(jì)報(bào)告---微程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)-圖形變換程序
- 微機(jī)原理課程設(shè)計(jì)報(bào)告書--ad轉(zhuǎn)換
評(píng)論
0/150
提交評(píng)論