版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 微型計算機原理及接口技術(shù)課程設(shè)計</p><p> ——《代碼轉(zhuǎn)換程序設(shè)計》 </p><p><b> 學(xué)院: </b></p><p><b> 班級:</b></p><p> 姓名: </p><p><b>
2、 學(xué)號: </b></p><p> 成績: </p><p> 摘 要 :代碼轉(zhuǎn)換程序主要是字母間的轉(zhuǎn)換和數(shù)制之間的轉(zhuǎn)換。字母轉(zhuǎn)換主要是字母大小寫轉(zhuǎn)換,進制轉(zhuǎn)換是二進制、十進制、十六進制之間的互換。程序首先給了一個選擇需要進行的轉(zhuǎn)換的菜單,用戶根據(jù)界面信息選擇功能。通過這種轉(zhuǎn)換中數(shù)據(jù)的流向能夠更好的理解計算機的一些基本原理,如計算機
3、數(shù)據(jù)的存儲形式和一些基本的DOS功能調(diào)用的基本方法與注意事項。</p><p> 關(guān)鍵詞 :大小寫字母,二進制,十進制,十六進制,數(shù)據(jù)</p><p><b> 目 錄</b></p><p> 摘要···········
4、83;····································&
5、#183;·2</p><p> 關(guān)鍵詞······························
6、183;·················2</p><p> 1 設(shè)計的目的和任務(wù)·············
7、183;······················5</p><p> 1.1設(shè)計目的·········
8、;·································5</p><p>
9、; 1.2設(shè)計任務(wù)···································
10、·······5</p><p> 2 設(shè)計內(nèi)容及要求························&
11、#183;·············5</p><p> 3 設(shè)計問題··················
12、;··························5</p><p> 4 設(shè)計算法·····
13、83;····································&
14、#183;·6</p><p> 5 程序流程圖·····························
15、3;············6</p><p> 6 詳細設(shè)計···················
16、183;························8</p><p> 6.1 主模塊及子模塊說明······
17、;··························8</p><p> 6.2 各模塊詳細設(shè)計····
18、3;·······························8</p><p> 6.2.1主模塊
19、····································
20、3;·····8</p><p> 6.2.2 HEXIBIN·························
21、··············9</p><p> 6.2.3 INBIN·················
22、;·························10</p><p> 6.2.4 DECIBIN·····&
23、#183;··································11</p>
24、;<p> 6.2.5 BINIHEX································&
25、#183;·······11</p><p> 6.2.6 BINIDEC······················
26、83;·················12</p><p> 6.2.7 PRINT·············&
27、#183;····························13</p><p> 6.2.8 INPUT··
28、;····································
29、83;···13</p><p> 6.2.9 GAIXIE···························
30、··············13</p><p> 6.2.10 CRLF················
31、3;·························14</p><p> 7 程序調(diào)試 ······
32、;···································14</p&
33、gt;<p> 7.1 運行界面分析································
34、183;····14</p><p> 7.2算法的分析··························
35、83;·············16</p><p> 7.3 調(diào)試過程及分析·················&
36、#183;·················17</p><p> 7.4 系統(tǒng)改進·············
37、183;···························18</p><p> 8 心得體會····
38、;····································
39、83;··18</p><p> 9 主要參考文獻····························
40、3;··········19</p><p> 10答謝·····················
41、83;·························19</p><p> 1 設(shè)計目的和設(shè)計任務(wù)</p><p><b>
42、 1.1 設(shè)計目的</b></p><p> 培養(yǎng)學(xué)生運用所學(xué)知識解決實際問題的能力,進一步提高綜合運用知識的能力</p><p><b> 1.2 設(shè)計任務(wù)</b></p><p> 能夠按照設(shè)計題目完成相應(yīng)設(shè)計,撰寫設(shè)計報告</p><p> 2 設(shè)計內(nèi)容及要求 </p><p
43、> 課程設(shè)計的內(nèi)容以軟硬件綜合設(shè)計為主,要求我們在設(shè)計過程中,提倡獨立思考、深入鉆研的精神和嚴肅認真、一絲不茍、精益求精的工作態(tài)度。根據(jù)課題的要求,進行深入分析和研究,充分收集和利用現(xiàn)有資源和數(shù)據(jù)進行設(shè)計,保證設(shè)計的水平和質(zhì)量。</p><p> 通過知識的綜合運用,加深對匯編語言程序設(shè)計的理論與提高綜合編程能力的認識,從而建立起匯編程序設(shè)計的整體概念。</p><p> 學(xué)會
44、匯編程序設(shè)計的方法,進一步掌握并體會設(shè)計方案的優(yōu)劣對計算機性能發(fā)揮的重要性。</p><p> 培養(yǎng)科學(xué)的、獨立的工作創(chuàng)新精神,取得課程設(shè)計的實踐經(jīng)驗。</p><p><b> 3 設(shè)計問題</b></p><p><b> 代碼轉(zhuǎn)換程序設(shè)計</b></p><p> 完成一個字母或數(shù)制之
45、間的轉(zhuǎn)化程序,主程序分別具有5種可選擇的子功能,按相應(yīng)的字符可分別進入相應(yīng)的子功能并在屏幕上顯示結(jié)果,按“q”鍵退出。</p><p> 5種可選擇的子功能分別為:</p><p> 1)實現(xiàn)小寫字母向大寫字母的轉(zhuǎn)換</p><p> 2)實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換</p><p> 3)實現(xiàn)十進制數(shù)向十六進制數(shù)的轉(zhuǎn)換</p&
46、gt;<p> 4)實現(xiàn)十六進制數(shù)向二進制數(shù)的轉(zhuǎn)換</p><p> 5)實現(xiàn)十六進制數(shù)向十進制數(shù)的轉(zhuǎn)換</p><p><b> 4 設(shè)計算法</b></p><p> 輸入功能序號,調(diào)用該序號下的子程序。輸入子程序要求輸入的相關(guān)數(shù)據(jù),就會輸出結(jié)果。如果輸入不為q,則可繼續(xù)選擇功能,輸入功能序號重復(fù)以上操作,若功能序號輸
47、入為q,則退出程序。功能1:將小寫的ASCII碼轉(zhuǎn)換成大寫的并輸出。功能2:將大寫的ASCII碼轉(zhuǎn)換成小寫的并輸出。功能3:輸入十進制ASCII碼存儲成二進制,然后再將二進制轉(zhuǎn)換成十六進制并以ASCII碼的形式輸出。功能4:輸入十六進制ASCII碼存儲成二進制,然后按位循環(huán)輸出ASCII碼。功能5:輸入十進制ASCII碼存儲成二進制,并用求余運算轉(zhuǎn)換成十進制ASCII碼并輸出。</p><p><b>
48、 設(shè)計步驟為:</b></p><p> ?。?)、開始,輸出主界面</p><p> ?。?)、輸入序號,判斷是否為q。若是轉(zhuǎn)(5),否則轉(zhuǎn)(3)</p><p> ?。?)、根據(jù)輸入的序號,調(diào)用函數(shù)的相應(yīng)子函數(shù)模塊。</p><p> ?。?)、輸出結(jié)果,跳轉(zhuǎn)到(2)。</p><p> ?。?)、結(jié)
49、束,退出程序。</p><p><b> 5 程序流程圖</b></p><p> 程序首先顯示主界面,然后用戶輸入1-9選擇不同的功能,則跳轉(zhuǎn)到不同的模塊,執(zhí)行后在跳轉(zhuǎn)到主模塊,若是其他字符,則顯示出錯信息,并返回主模塊。如圖5-1為主模塊的邏輯圖</p><p><b> 6 詳細設(shè)計</b></p>
50、<p> 6.1 主模塊及子模塊說明</p><p> 主模塊:在屏幕上顯示程序的主要功能并有用戶選擇,然后根據(jù)用戶的選擇調(diào)用相應(yīng)的功能模塊。</p><p> HEXIBIN:輸入一個十六進制數(shù)(不超過4位),并存放在BX中</p><p> INBIN:輸入二進制數(shù)(不超過16位),并存放在BX中</p><p>
51、 DECIBIN:輸入一個十進制數(shù)(不超過65535),并存放在BX中</p><p> BINIHEX:把BX中的數(shù)轉(zhuǎn)換成十六進制并輸出</p><p> BINIDEC:用來把BX數(shù)轉(zhuǎn)換到十進制并輸出</p><p> PRINT:用來把BX中的數(shù)轉(zhuǎn)換成二進制并輸出</p><p> INPUT:字符串的輸入,并存儲</p&
52、gt;<p> GAIXIE:把字符串轉(zhuǎn)換成大寫或小寫,然后輸出</p><p><b> CRLF:換行</b></p><p> 6.2 各模塊詳細設(shè)計</p><p><b> 6.2.1主模塊</b></p><p> 主模塊是通過9號功能調(diào)用,顯示主界面。然后用1號
53、功能調(diào)用輸入用戶的選擇。然后分別跳轉(zhuǎn)到相應(yīng)的功能。</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START:MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV DX,OFFSET BU
54、F ;輸出選擇主界面</p><p> MOV AH,9 ;調(diào)用9號中斷功能</p><p> INT 21H </p><p> MOV AH,1 ;輸入要選擇的操作</p><p> INT 21H </p><p>
55、CMP AL,'1' ;把AL中內(nèi)容跟1比較</p><p> JZ BTOS ;相等則跳轉(zhuǎn)到</p><p> CMP AL,'2' </p><p> JZ STOB1</p><p> CMP AL,'
56、3'</p><p><b> JZ HTOB</b></p><p> CMP AL,'4'</p><p><b> JZ BTOH</b></p><p> CMP AL,'5'</p><p> JZ
57、HTOD </p><p> CMP AL,'6'</p><p> JZ DTOH </p><p> CMP AL,'7'</p><p><b> JZ BTOD</b></p><p> CMP AL,'8'<
58、/p><p> JZ DTOB </p><p> CMP AL,'9'</p><p><b> JZ EXIT</b></p><p> LEA DX,BUF3 ;把BUF3的首地址給DX</p><p><b> MOV AH,9&
59、lt;/b></p><p><b> INT 21H</b></p><p> CALL CRLF ;調(diào)用子程序CALL</p><p> JMP START ;返回,重新選擇</p><p> EXIT:MOV AH,4CH ;退出</p>
60、<p> 6.2.2 HEXIBIN</p><p> 首先將BX清零作為輸入數(shù)的存儲,DX清零記為輸入數(shù)的位數(shù)控制輸入循環(huán)。通過對每一個輸入輸出判斷其為小寫字母或大寫字母或數(shù)字,減去不同的數(shù)值,得到其代表的數(shù)值大小。然后將BX中的數(shù)值乘以16再與其相加存于BX中,同時DX加1,入DX不大于4,則進入下一輪跳轉(zhuǎn),否則就結(jié)束。</p><p> HEXIBIN PROC
61、 NEAR </p><p> MOV BX,0 ;把BX清零</p><p> MOV DX,0 ;作為輸入四位的記數(shù)器</p><p> INHEX:CMP DX,4 ;把DX跟4比較</p><p> JNB HEXEND
62、 ;大于則跳轉(zhuǎn),子程序結(jié)束</p><p> MOV AH,1 ;輸入數(shù)據(jù) </p><p><b> INT 21H</b></p><p> CMP AL,1BH ;遇到Esc則退出</p><p> JZ HEXEND</p>
63、<p> SUB AL,30H ;判斷是否數(shù)字或字母?否則跳出</p><p> JL HEXEND</p><p> CMP AL,10 ;判斷是否數(shù)字</p><p> JL ADD_TO ;是則存放BX中</p><p> SUB
64、AL,7 ;把AL內(nèi)容減7轉(zhuǎn)為字母</p><p> CMP AL,10 ;判斷是否小寫字母(a~f)</p><p> JL HEXEND </p><p> CMP AL,16 </p><p> JL ADD_TO
65、 ;小于則跳轉(zhuǎn)</p><p> SUB AL,20H ;判斷是否大寫字母(A~F)</p><p> CMP AL,10 </p><p> JL HEXEND</p><p> CMP AL,16</p><p> JGE HEXEND</
66、p><p> ADD_TO:MOV CL,4 ;作為循環(huán)條件 </p><p> SHL BX,CL ;BX乘以16</p><p> MOV AH,0 </p><p> ADD BX,AX ;兩數(shù)相加</p><p> IN
67、C DX ;DX加1</p><p> JMP INHEX</p><p> HEXEND:RET</p><p> HEXIBIN ENDP</p><p> 6.2.3 INBIN</p><p> 程序同上一個模塊基本相同。首先將BX清零作為輸入數(shù)的存儲,CX清零記為
68、輸入數(shù)的位數(shù)控制輸入循環(huán)。通過對每一個輸入數(shù)字,減去30H,得到其代表的數(shù)值大小。然后將BX中的數(shù)值乘以2再與其相加存于BX中,同時CX加1,入CX不大于16,則進入下一輪跳轉(zhuǎn),否則就結(jié)束。</p><p> INBIN PROC NEAR ;輸入十六二進制數(shù)</p><p> MOV BX,0</p><p> MOV CX,0<
69、;/p><p> PUTIN:CMP CX,16</p><p> JNB EXIT6</p><p> MOV AH,1</p><p> INT 21H</p><p> CMP AL,1BH</p><p> JZ EXIT6</p>&
70、lt;p> SUB AL,30H</p><p> JL EXIT6</p><p> CMP AL,1</p><p> JG EXIT6</p><p><b> CBW </b></p><p><b> INC CX</b&
71、gt;</p><p> XCHG AX,BX</p><p> MOV DX,2</p><p><b> MUL DX</b></p><p> XCHG AX,BX</p><p> ADD BX,AX</p><p> JMP PU
72、TIN</p><p><b> EXIT6:RET</b></p><p> INBIN ENDP</p><p> 6.2.4 DECIBIN</p><p> 程序同上一個模塊基本相同。首先將BX清零作為輸入數(shù)的存儲,CX清零記為輸入數(shù)的位數(shù)控制輸入循環(huán)。通過對每一個輸入數(shù)字,減去30H,得到其代表的數(shù)值
73、大小。然后將BX中的數(shù)值乘以10再與其相加存于BX中,同時CX加1,入CX不大于5,則進入下一輪跳轉(zhuǎn),否則就結(jié)束。</p><p> DECIBIN PROC NEAR </p><p> MOV BX,0</p><p> MOV CX,0</p><p> NEWCHAR:CMP CX,5</p&
74、gt;<p> JNB EXIT4</p><p><b> MOV AH,1</b></p><p><b> INT 21H</b></p><p> CMP AL,1BH</p><p> JZ EXIT4 </p><p>
75、 SUB AL,30H</p><p> JL EXIT4</p><p><b> CMP AL,9</b></p><p> JG EXIT4</p><p><b> CBW</b></p><p><b> INC CX</
76、b></p><p> XCHG AX,BX</p><p> MOV DX,10</p><p><b> MUL DX</b></p><p> XCHG AX,BX</p><p> ADD BX,AX</p><p> JMP NEWCHA
77、R</p><p><b> EXIT4:RET</b></p><p> DECIBIN ENDP</p><p> 6.2.5 BINIHEX</p><p> 將BX中的數(shù)轉(zhuǎn)換成十六進制數(shù)輸出就是每次取出四位算出其數(shù)值,然后轉(zhuǎn)換成相應(yīng)的ASCII碼輸出。</p><p> BINI
78、HEX PROC NEAR ;把數(shù)轉(zhuǎn)換成十六進制輸出</p><p><b> MOV CH,4</b></p><p> ROTATE:MOV CL,4</p><p> ROL BX,CL ;把BX中高四位移到低四位,放到AL中</p><p> MOV A
79、L,BL </p><p> AND AL,0FH</p><p> ADD AL,30H</p><p> CMP AL,3AH ;判斷是否為數(shù)字</p><p> JL PRINTIT</p><p><b> ADD AL,7</
80、b></p><p> PRINTIT:MOV DL,AL</p><p><b> MOV AH,2</b></p><p><b> INT 21H</b></p><p><b> DEC CH</b></p><p> J
81、NZ ROTATE</p><p><b> RET</b></p><p> BINIHEX ENDP</p><p> 6.2.6 BINIDEC</p><p> 將BX中的數(shù)轉(zhuǎn)換成十進制數(shù)輸出,就是將BX中的數(shù)每次分別處以10000,1000,100,10,1將其所得到的商輸出,而其余數(shù)存入BX中進入
82、下一輪循環(huán)。這樣輸出就是要得到的十進制數(shù)。</p><p> BINIDEC PROC NEAR </p><p> MOV CX,10000 ;把10000給CX,作為萬位的權(quán)</p><p> CALL DEC_DIV ;調(diào)用除權(quán)子程序</p><p> MOV
83、 CX,1000</p><p> CALL DEC_DIV</p><p> MOV CX,100</p><p> CALL DEC_DIV</p><p> MOV CX,10</p><p> CALL DEC_DIV</p><p> MOV CX,1&
84、lt;/p><p> CALL DEC_DIV</p><p><b> RET</b></p><p> BINIDEC ENDP</p><p> DEC_DIV PROC NEAR ;除以各位十進制的權(quán)</p><p> MOV AX,BX
85、 ;把BX內(nèi)容給AX</p><p> MOV DX,0 ;DX清零</p><p><b> DIV CX</b></p><p> MOV BX,DX</p><p> MOV DL,AL</p><p> ADD DL,30H
86、 ;轉(zhuǎn)換為ASSII</p><p> MOV AH,2</p><p><b> INT 21H</b></p><p><b> RET</b></p><p> DEC_DIV ENDP</p><p> 6.2.7 PRINT&l
87、t;/p><p> 將BX中的數(shù)轉(zhuǎn)換成二進制:因為BX中原本就是按照二進制存儲的,所以只需每次左移,將所得到的數(shù)加30h得到其ASCII 碼然后輸出即可。</p><p> PRINT PROC NEAR ;把BX中的十六進制數(shù)轉(zhuǎn)換成二進制</p><p> MOV CX,16D ;記數(shù)</p><p&
88、gt; ROT: SHL BX,1D ;每移一位最高位變?yōu)镃F</p><p> JC SET ;CF為1則跳到SET,否則輸出0</p><p> MOV DL,30H</p><p> MOV AH,2 </p><p><b>
89、 INT 21H</b></p><p><b> DEC CX</b></p><p><b> JNZ ROT</b></p><p><b> RET</b></p><p> 6.2.8 INPUT</p><p>
90、 輸入字符串:通過10號功能調(diào)用,將所輸入的字符串輸入到緩沖區(qū),緩沖區(qū)首=DS:DX</p><p> INPUT PROC NEAR ;輸入字符串</p><p> MOV DX,0 ;DX清零</p><p> MOV DX,OFFSET BUF1 </p><
91、p> MOV AH,10 </p><p><b> INT 21H</b></p><p> LEA DX,BF </p><p><b> MOV AH,9</b></p><p><b> INT 21H<
92、;/b></p><p> LEA SI,BUF1+2</p><p> MOV BL,[SI-1] ;把輸入的字符個數(shù)給BL</p><p> MOV BH,0 ;BH清零</p><p> MOV BYTE PTR [BX+SI+1],'$
93、9; ;把$作為字符串結(jié)束字符</p><p> LEA DX,BUF1+2</p><p><b> MOV AH,9</b></p><p><b> INT 21H </b></p><p> RET ;返回</p>
94、;<p> INPUT ENDP</p><p> 6.2.9 GAIXIE</p><p> 大小寫字母的轉(zhuǎn)換只是對其加上或者減去20H即可。P3、P4分別對應(yīng)的是‘a(chǎn)’、‘z’或者‘A’、‘Z’,P6對應(yīng)的是ADD或者SUB。</p><p> GAIXIE MACRO P1,P2,P3,P4,P5,P6 ;來判定字母?&l
95、t;/p><p> P2: CMP BYTE PTR [SI],P3</p><p> JB P5 ;小于跳轉(zhuǎn)</p><p> CMP BYTE PTR [SI],P4</p><p><b> JNB P5</b></p><p&g
96、t; CMP BYTE PTR [SI],'$' ;到$則結(jié)束</p><p><b> JZ P6</b></p><p> P1 BYTE PTR [SI],20H</p><p> P5: INC SI</p><p><b> LOOP P2
97、</b></p><p> P6: LEA DX,BUF8</p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,BUF1+2 ;輸出改寫后的字母
98、 </p><p> MOV AH,9 ;調(diào)用9號中斷功能,輸出字符串</p><p> INT 21H </p><p> LEA DX,BF ;把BF首地址給CX</p><p> MOV AH,9
99、;調(diào)用9號中斷功能</p><p><b> INT 21H</b></p><p> JMP START ;返回</p><p><b> ENDM</b></p><p> 6.2.10 CRLF</p><p> 換行:無實際的意義,
100、只是為了讓界面更加美觀。</p><p> CRLF PROC NEAR </p><p> LEA DX,BF</p><p> MOV AH,9</p><p><b> INT 21H</b></p><p><b> RET</
101、b></p><p> CRLF ENDP</p><p><b> 7.程序調(diào)試</b></p><p> 7.1 運行界面分析</p><p> 運行程序得如圖7-1主界面</p><p><b> 圖7-1 主界面</b></p>&l
102、t;p> 選擇1,大寫字母轉(zhuǎn)小寫字母如圖7-2</p><p> 圖7-2 大寫字母轉(zhuǎn)小寫字母</p><p> 選擇2,小寫字母轉(zhuǎn)大寫字母如圖7-3</p><p> 圖7-3 小寫字母轉(zhuǎn)大寫字母</p><p> 選擇3,十六進制到二進制的轉(zhuǎn)換,如圖7-4</p><p> 圖7-4 十六進制轉(zhuǎn)二
103、進制</p><p> 選擇4,二進制到十六進制的轉(zhuǎn)換,如圖7-5</p><p> 圖7-5 二進制轉(zhuǎn)十六進制</p><p> 選擇5,十六進制到十進制的轉(zhuǎn)換,如圖7-6</p><p> 圖7-6 十六進制轉(zhuǎn)十進制</p><p> 選擇6則退出,選擇其他輸入,如輸入q,如圖7-7</p>
104、<p><b> 圖7-7 錯誤輸入</b></p><p><b> 7.2算法的分析</b></p><p> 代碼轉(zhuǎn)換器主要是由兩部分組成:大小寫字母轉(zhuǎn)換和數(shù)制轉(zhuǎn)換。大小寫字母轉(zhuǎn)換就是在其原來的ASCII碼的基礎(chǔ)上或加或減20H就可得到。</p><p> 數(shù)值轉(zhuǎn)換是二進制、十進制、十六進制之間的
105、轉(zhuǎn)換。通過調(diào)用不同的函數(shù)避免了數(shù)值之間的轉(zhuǎn)換。首先是三個輸如模塊,對于輸入的字符如果是0-10之間的就減去30H,得到其代表的數(shù)的含義,A-F之間的就減去37H,a-f之間的就減去57H,得到其代表的數(shù)的含義,讓后乘以權(quán)值相加存于BX即可。然后是三個輸出模塊,因為BX中存的本就是二進制數(shù),所以直接移位輸出就可得到二進制數(shù)。十六進制數(shù)是每四位二進制數(shù)轉(zhuǎn)換成一位十六進制數(shù)即可。十進制數(shù)相對復(fù)雜,將BX中的數(shù)轉(zhuǎn)換成十進制數(shù)輸出,就是將BX中的
106、數(shù)每次分別處以10000,1000,100,10,1將其所得到的商輸出,而其余數(shù)存入BX中進入下一輪循環(huán)。這樣輸出就是要得到的十進制數(shù)。</p><p> 7.3 調(diào)試過程及分析</p><p> 在進行調(diào)試的過程中遇到的問題層出不窮,但大多是因為一些粗心的錯誤。剛開始遇到最多的問題便是程序在編譯時沒有任何錯誤,鏈接的按鈕仍然是灰色的不能夠鏈接,茫然不知所措。上網(wǎng)查找資料卻找不到任何相
107、應(yīng)的情況。于是就不用學(xué)校機房里的MASM,換了另外一款編譯器(Masm for Windows 集成實驗環(huán)境 2009.2),在進行編譯時提示出錯“Invalid character in the file”,在錯誤信息表中查得是文中使用了無效字符,多數(shù)情況下是使用了中文的標點符號。根據(jù)這款編譯器中代碼顏色的不同很快就發(fā)現(xiàn)了是在寫注釋的時候“;”使用錯誤了。另外一個讓我記憶猶新的問題是所有的子函數(shù)都是正確的,但是在將所有的模塊進行組合時
108、出了個錯“relative jump out of range by 0001h bytes”,感覺很郁悶,在編譯器給的信息表中也沒有查到為什么。最后在網(wǎng)上查到答案即:8086中的條件跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍是-126~129(相對于該指令的字節(jié)偏移量),不能超出這個范圍。 </p><p> 原代碼: CMP AL,'2' </p><p>&l
109、t;b> JZ STOB</b></p><p> 更改為:CMP AL,’2’</p><p> JZ STOB1</p><p> STOB1:JMP STOB</p><p> 如此就搞定了。當然還有一些平時不會注意到的問題,比如使用INT指令會改變AL的值,這些微不足道的地方卻恰恰是最容易忽略的地
110、方。</p><p><b> 7.4 系統(tǒng)改進</b></p><p> 此程序的健壯性不夠,在數(shù)值轉(zhuǎn)換的過程中,當輸入被換算的數(shù)值時,如果數(shù)值是正確的則能夠正確的處理,當不正確的時候都輸出的是0。數(shù)值轉(zhuǎn)換的數(shù)值范圍是0FFFFh,這是BX中存儲的最大范圍了,應(yīng)該可以將其改進的更大一些。</p><p><b> 8 心得體會
111、</b></p><p> 通過課程設(shè)計的編程和對編程過程中遇到的問題的思考,有效的提高了我對匯編的認識和理解,切實的提高了我的編程能力,。通過這次課程設(shè)計,我鞏固所了學(xué)過的知識,能用匯編語言熟練地運用順序、選擇、循環(huán)三大結(jié)構(gòu),進一步掌握了各個指令的功能。在整個程序的編寫中,調(diào)試占了很大部分的時間。要想寫好匯編語言的程序,必須認真對待代碼的每一個細節(jié),還必須熟練的掌握debug命令,這對程序的調(diào)試是
112、非常重要的。通過這次實際動手能力的培養(yǎng),我進一步熟悉了匯編語言的結(jié)構(gòu)和使用方法,基本達到了能獨立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。還有就是課本上的東西一定要記住。理論與實踐相結(jié)合,不懂的地方應(yīng)勤問老師勤問同學(xué),直到把它搞懂為止。</p><p><b> 9主要參考文獻</b></p><p> 1. 《IBM—PC匯編語言程序設(shè)計(第2版)》 沈美
113、明 溫冬嬋 清華出版社</p><p> 2.《IBM—PC匯編語言程序設(shè)計 實驗教程 》 沈美明 溫冬嬋 清華出版社</p><p> 3.《匯編語言程序設(shè)計基礎(chǔ)》 王春森 高等教育出版社</p><p> 4.《微型計算機原理及接口技術(shù)(第二版)》 裘雪紅 李伯成 劉凱 西安電子科技大學(xué)出版社</p><p><b>
114、; 10、答 謝</b></p><p> 經(jīng)過幾個星期的忙碌和工作,本次課程設(shè)計已經(jīng)接近尾聲,作為一個本科生的課程設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有老師的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個設(shè)計是難以想象的。</p><p> 在這里首先要感謝我的老師xx老師。xx老師平日里工作繁多,但在我做課程設(shè)計的每個階段,從設(shè)計草案的確定和修
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計----進制轉(zhuǎn)換程序設(shè)計
- 微機原理課程設(shè)計--加密解密程序設(shè)計
- 微機原理-課程設(shè)計電風(fēng)扇程序設(shè)計
- 微機原理課程設(shè)計--信號發(fā)生器功能程序設(shè)計
- 鍵盤鋼琴匯編語言程序設(shè)計—微機原理課程設(shè)計
- 鍵盤鋼琴匯編語言程序設(shè)計—微機原理課程設(shè)計
- 微機原理課程設(shè)計---動畫心匯編程序設(shè)計
- 鍵盤鋼琴匯編語言程序設(shè)計—微機原理課程設(shè)計
- 微機原理課程設(shè)計---霓虹燈的模擬顯示程序設(shè)計
- 《微機原理與接口技術(shù)》課程設(shè)計--雙機串行通訊程序設(shè)計
- 微機原理課程設(shè)計---選擇多功能程序設(shè)計——軟件開發(fā)方向
- 微機原理課程設(shè)計----打字練習(xí)程序
- 匯編語言課程設(shè)計--代碼轉(zhuǎn)換程序
- 微機原理與接口技術(shù)課程設(shè)計---字符串程序設(shè)計
- 微機原理課程設(shè)計報告--小鳥動畫程序
- 組成原理課程設(shè)計報告---微程序設(shè)計
- 微機原理課程設(shè)計-圖形變換程序
- 微機原理課程設(shè)計報告書--ad轉(zhuǎn)換
- 微機原理課程設(shè)計
- 課程設(shè)計--unix程序設(shè)計課程設(shè)計
評論
0/150
提交評論