2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  微型計算機(jī)原理及接口技術(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)換,進(jìn)制轉(zhuǎn)換是二進(jìn)制、十進(jìn)制、十六進(jìn)制之間的互換。程序首先給了一個選擇需要進(jìn)行的轉(zhuǎn)換的菜單,用戶根據(jù)界面信息選擇功能。通過這種轉(zhuǎn)換中數(shù)據(jù)的流向能夠更好的理解計算機(jī)的一些基本原理,如計算機(jī)

3、數(shù)據(jù)的存儲形式和一些基本的DOS功能調(diào)用的基本方法與注意事項。</p><p>  關(guān)鍵詞 :大小寫字母,二進(jìn)制,十進(jìn)制,十六進(jì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 詳細(xì)設(shè)計···················&#

16、183;························8</p><p>  6.1 主模塊及子模塊說明······

17、;··························8</p><p>  6.2 各模塊詳細(xì)設(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)改進(jìn)·············&#

37、183;···························18</p><p>  8 心得體會····

38、;····································

39、83;··18</p><p>  9 主要參考文獻(xiàn)····························

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é)知識解決實際問題的能力,進(jìn)一步提高綜合運用知識的能力</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è)計過程中,提倡獨立思考、深入鉆研的精神和嚴(yán)肅認(rèn)真、一絲不茍、精益求精的工作態(tài)度。根據(jù)課題的要求,進(jìn)行深入分析和研究,充分收集和利用現(xiàn)有資源和數(shù)據(jù)進(jìn)行設(shè)計,保證設(shè)計的水平和質(zhì)量。</p><p>  通過知識的綜合運用,加深對匯編語言程序設(shè)計的理論與提高綜合編程能力的認(rèn)識,從而建立起匯編程序設(shè)計的整體概念。</p><p>  學(xué)會

44、匯編程序設(shè)計的方法,進(jìn)一步掌握并體會設(shè)計方案的優(yōu)劣對計算機(jī)性能發(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)的字符可分別進(jìn)入相應(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)十進(jìn)制數(shù)向十六進(jìn)制數(shù)的轉(zhuǎn)換</p&

46、gt;<p>  4)實現(xiàn)十六進(jìn)制數(shù)向二進(jìn)制數(shù)的轉(zhuǎn)換</p><p>  5)實現(xiàn)十六進(jìn)制數(shù)向十進(jìn)制數(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:輸入十進(jìn)制ASCII碼存儲成二進(jìn)制,然后再將二進(jìn)制轉(zhuǎn)換成十六進(jìn)制并以ASCII碼的形式輸出。功能4:輸入十六進(jìn)制ASCII碼存儲成二進(jìn)制,然后按位循環(huán)輸出ASCII碼。功能5:輸入十進(jìn)制ASCII碼存儲成二進(jìn)制,并用求余運算轉(zhuǎn)換成十進(jì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>  (4)、輸出結(jié)果,跳轉(zhuǎn)到(2)。</p><p>  (5)、結(jié)

49、束,退出程序。</p><p><b>  5 程序流程圖</b></p><p>  程序首先顯示主界面,然后用戶輸入1-9選擇不同的功能,則跳轉(zhuǎn)到不同的模塊,執(zhí)行后在跳轉(zhuǎn)到主模塊,若是其他字符,則顯示出錯信息,并返回主模塊。如圖5-1為主模塊的邏輯圖</p><p><b>  6 詳細(xì)設(shè)計</b></p>

50、<p>  6.1 主模塊及子模塊說明</p><p>  主模塊:在屏幕上顯示程序的主要功能并有用戶選擇,然后根據(jù)用戶的選擇調(diào)用相應(yīng)的功能模塊。</p><p>  HEXIBIN:輸入一個十六進(jìn)制數(shù)(不超過4位),并存放在BX中</p><p>  INBIN:輸入二進(jìn)制數(shù)(不超過16位),并存放在BX中</p><p> 

51、 DECIBIN:輸入一個十進(jìn)制數(shù)(不超過65535),并存放在BX中</p><p>  BINIHEX:把BX中的數(shù)轉(zhuǎn)換成十六進(jìn)制并輸出</p><p>  BINIDEC:用來把BX數(shù)轉(zhuǎn)換到十進(jìn)制并輸出</p><p>  PRINT:用來把BX中的數(shù)轉(zhuǎn)換成二進(jìn)制并輸出</p><p>  INPUT:字符串的輸入,并存儲</p&

52、gt;<p>  GAIXIE:把字符串轉(zhuǎn)換成大寫或小寫,然后輸出</p><p><b>  CRLF:換行</b></p><p>  6.2 各模塊詳細(xì)設(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,則進(jìn)入下一輪跳轉(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,則進(jìn)入下一輪跳轉(zhuǎn),否則就結(jié)束。</p><p>  INBIN PROC NEAR ;輸入十六二進(jìn)制數(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,則進(jìn)入下一輪跳轉(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)換成十六進(jìn)制數(shù)輸出就是每次取出四位算出其數(shù)值,然后轉(zhuǎn)換成相應(yīng)的ASCII碼輸出。</p><p>  BINI

78、HEX PROC NEAR ;把數(shù)轉(zhuǎn)換成十六進(jì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)換成十進(jìn)制數(shù)輸出,就是將BX中的數(shù)每次分別處以10000,1000,100,10,1將其所得到的商輸出,而其余數(shù)存入BX中進(jìn)入

82、下一輪循環(huán)。這樣輸出就是要得到的十進(jì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 ;除以各位十進(jìn)制的權(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)換成二進(jìn)制:因為BX中原本就是按照二進(jìn)制存儲的,所以只需每次左移,將所得到的數(shù)加30h得到其ASCII 碼然后輸出即可。</p><p>  PRINT PROC NEAR ;把BX中的十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jì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,十六進(jìn)制到二進(jìn)制的轉(zhuǎn)換,如圖7-4</p><p>  圖7-4 十六進(jìn)制轉(zhuǎn)二

103、進(jìn)制</p><p>  選擇4,二進(jìn)制到十六進(jìn)制的轉(zhuǎn)換,如圖7-5</p><p>  圖7-5 二進(jìn)制轉(zhuǎn)十六進(jìn)制</p><p>  選擇5,十六進(jìn)制到十進(jìn)制的轉(zhuǎn)換,如圖7-6</p><p>  圖7-6 十六進(jìn)制轉(zhuǎn)十進(jì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)換是二進(jìn)制、十進(jìn)制、十六進(jì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中存的本就是二進(jìn)制數(shù),所以直接移位輸出就可得到二進(jìn)制數(shù)。十六進(jìn)制數(shù)是每四位二進(jìn)制數(shù)轉(zhuǎn)換成一位十六進(jìn)制數(shù)即可。十進(jìn)制數(shù)相對復(fù)雜,將BX中的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)輸出,就是將BX中的

106、數(shù)每次分別處以10000,1000,100,10,1將其所得到的商輸出,而其余數(shù)存入BX中進(jìn)入下一輪循環(huán)。這樣輸出就是要得到的十進(jìn)制數(shù)。</p><p>  7.3 調(diào)試過程及分析</p><p>  在進(jìn)行調(diào)試的過程中遇到的問題層出不窮,但大多是因為一些粗心的錯誤。剛開始遇到最多的問題便是程序在編譯時沒有任何錯誤,鏈接的按鈕仍然是灰色的不能夠鏈接,茫然不知所措。上網(wǎng)查找資料卻找不到任何相

107、應(yīng)的情況。于是就不用學(xué)校機(jī)房里的MASM,換了另外一款編譯器(Masm for Windows 集成實驗環(huán)境 2009.2),在進(jìn)行編譯時提示出錯“Invalid character in the file”,在錯誤信息表中查得是文中使用了無效字符,多數(shù)情況下是使用了中文的標(biāo)點符號。根據(jù)這款編譯器中代碼顏色的不同很快就發(fā)現(xiàn)了是在寫注釋的時候“;”使用錯誤了。另外一個讓我記憶猶新的問題是所有的子函數(shù)都是正確的,但是在將所有的模塊進(jìn)行組合時

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>  如此就搞定了。當(dāng)然還有一些平時不會注意到的問題,比如使用INT指令會改變AL的值,這些微不足道的地方卻恰恰是最容易忽略的地

110、方。</p><p><b>  7.4 系統(tǒng)改進(jìn)</b></p><p>  此程序的健壯性不夠,在數(shù)值轉(zhuǎn)換的過程中,當(dāng)輸入被換算的數(shù)值時,如果數(shù)值是正確的則能夠正確的處理,當(dāng)不正確的時候都輸出的是0。數(shù)值轉(zhuǎn)換的數(shù)值范圍是0FFFFh,這是BX中存儲的最大范圍了,應(yīng)該可以將其改進(jìn)的更大一些。</p><p><b>  8 心得體會

111、</b></p><p>  通過課程設(shè)計的編程和對編程過程中遇到的問題的思考,有效的提高了我對匯編的認(rèn)識和理解,切實的提高了我的編程能力,。通過這次課程設(shè)計,我鞏固所了學(xué)過的知識,能用匯編語言熟練地運用順序、選擇、循環(huán)三大結(jié)構(gòu),進(jìn)一步掌握了各個指令的功能。在整個程序的編寫中,調(diào)試占了很大部分的時間。要想寫好匯編語言的程序,必須認(rèn)真對待代碼的每一個細(xì)節(jié),還必須熟練的掌握debug命令,這對程序的調(diào)試是

112、非常重要的。通過這次實際動手能力的培養(yǎng),我進(jìn)一步熟悉了匯編語言的結(jié)構(gòu)和使用方法,基本達(dá)到了能獨立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。還有就是課本上的東西一定要記住。理論與實踐相結(jié)合,不懂的地方應(yīng)勤問老師勤問同學(xué),直到把它搞懂為止。</p><p><b>  9主要參考文獻(xiàn)</b></p><p>  1. 《IBM—PC匯編語言程序設(shè)計(第2版)》 沈美

113、明 溫冬嬋 清華出版社</p><p>  2.《IBM—PC匯編語言程序設(shè)計 實驗教程 》 沈美明 溫冬嬋 清華出版社</p><p>  3.《匯編語言程序設(shè)計基礎(chǔ)》 王春森 高等教育出版社</p><p>  4.《微型計算機(jī)原理及接口技術(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論