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

下載本文檔

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

文檔簡介

1、<p><b>  《微機原理與應用》</b></p><p><b>  課程設計</b></p><p>  實驗題目:簡單計算器設計</p><p><b>  2013年01月</b></p><p><b>  目錄</b></p

2、><p>  1設計目的·································

3、·······1</p><p>  2概要設計·························

4、;···············2</p><p>  2.1系統(tǒng)總體分析················

5、·······················2</p><p>  2.2程序流程圖及說明········

6、;···························3</p><p>  3詳細設計····

7、3;···································5</p&

8、gt;<p>  3.1主模塊及子模塊說明································

9、····5</p><p>  3.2各模塊詳細設計···························

10、··········10</p><p>  4程序調(diào)試·····················

11、3;··················13</p><p>  4.1調(diào)試過程及分析············

12、83;······················13</p><p>  4.2運行界面分析········

13、83;···························13</p><p>  5心得體會····&

14、#183;···································17<

15、;/p><p>  5.1設計體會································&

16、#183;·······17</p><p>  5.2系統(tǒng)改進·······················

17、83;················17</p><p>  參考文獻···············&#

18、183;··························18</p><p><b>  1設計目的</b></p>

19、<p>  匯編語言是計算機能夠提供給用戶使用的最快而又最有效的語言。同時,匯編語言也是能夠利用計算機所有硬件特性并能直接控制硬件的唯一語言。因而,對程序的空間和時間要求很高的場合,匯編語言的應用是必不可少的。至于很多需要直接控制硬件的應用場合,則更是非用匯編語言不可。由于匯編語言如此地接近計算機硬件,因此,它可以最大限度地發(fā)揮計算機硬件的性能。用匯編語言編寫的程序速度通常要比高級語言快幾倍、幾十倍、甚至成百上千倍,解釋語言

20、其程序速度更無法與匯編語言程序同日而語。 </p><p>  本次課程設計的題目是用匯編語言實現(xiàn)一個簡單的計算器,要求:編寫一個程序,每運行一次可執(zhí)行程序,可以實現(xiàn)加減乘除四則運算。計算器是最簡單的計算工具,簡單計算器具有加、減、乘、除四項運算功能。通過使用匯編語言設計實現(xiàn)簡單計算器,以此進一步了解和掌握對數(shù)據(jù)存儲,寄存器的使用,加減乘除相關(guān)指令以及模塊的調(diào)用等匯編語言知識的有效運用。本次課程設計以實現(xiàn)一個基本

21、功能完善,界面友好,操作簡便易行的計算器為最終目的。通過對具有加減乘除基本功能的計算器的設計實現(xiàn),學會使用匯編語言實現(xiàn)輸入輸出模塊的設計,模塊合理調(diào)用的設計,加減乘除運算的判斷以及退出程序的判斷的設計。通過對各種指令的合理使用,熟悉并加深對各種指令的用法。學會使用匯編語言設計各個功能模塊。當實現(xiàn)各個程序模塊后,學會通過程序的調(diào)用最終實現(xiàn)一個具有基本計算功能的簡單計算器。</p><p><b>  2概

22、要設計</b></p><p>  2.1 系統(tǒng)總體分析 </p><p>  本次匯編語言課程設計的最終目的是要實現(xiàn)一個簡單計算器,要求編寫一個程序,每運行一次可執(zhí)行程序,可以實現(xiàn)數(shù)的加減乘除四則運算。比如,十進制數(shù)的加減乘除四則運算。我們曾經(jīng)學習過兩個具體數(shù)字進行加減法運算,但是對于簡單計算器用匯編語言實現(xiàn)難點在于這兩個要做運算的數(shù)是未知的,是由自己調(diào)用中斷輸入到屏幕上并要

23、用程序存儲起來的數(shù),然后才能對這兩個數(shù)進行運算,而且做的是加法運算、減法運算乘法運算還是除法運算也未可知,為此我們還要判斷用戶所輸入的運算是四則運算中的哪一個運算。此外,運算過程中的進位或是借位,選擇用什么樣的方式進行輸出,如何實現(xiàn)清屏等也是要解決的問題。 </p><p>  第一步,我要解決的是輸入時是用INT 21H的10號功能調(diào)用還是用INT 21H的1號功能調(diào)用來進行輸入。若是用10號功能調(diào)用則我們進行

24、多字符輸入,可以將輸入的字符都存儲到一個數(shù)據(jù)區(qū)里面,并調(diào)用9號功能調(diào)用輸出存進去的字符,這種輸入和輸出的方案是可行的。我選擇的是利用1號功能調(diào)用來輸入,即把單個字符一個個的輸入并存儲到一個數(shù)據(jù)區(qū)里。我們要做的是兩個數(shù)的運算,先認定輸入的格式為1234+5678=或者1111*2222=,當然如果輸入不是這樣的格式計算出來的結(jié)果就不一定是我們想要的結(jié)果了。在存儲的時候也是有選擇的存儲,當輸入的并非格式里所要求的字符時則報錯。 </p

25、><p>  第二步,設計程序進行判斷所輸入的算式是做加法運算、減法運算、乘法運算還是除法運算,即判斷輸入的運算符是‘+’號、‘-’號、‘*’號、‘/’號中的哪一個,因為輸入的格式固定了,所以只需要把存進數(shù)據(jù)區(qū)的第三個字符拿來與加減乘除四個運算符號進行比較,和哪一個運算符號一樣就調(diào)用相對應的運算模塊進行計算。 </p><p>  第三步,根據(jù)計算器程序所要實現(xiàn)的功能完成各個功能模塊。設計程序

26、主體部分,根據(jù)主體部分所需的功能模塊對各個子模塊一一進行設計編寫。子模塊中包含有:do_add加法運算模塊,do_sub減法運算模塊,do_mul乘法運算模塊,do_div除法運算模塊,input輸入模塊等。 </p><p>  最后還要對這個簡易計算器進行功能完善。為了使程序符合我們使用者的操作習慣,設計當用戶根據(jù)提示信息輸入一個算式后,按下enter鍵或是‘=’符號鍵時,程序依據(jù)輸入的算式進行計算,并將結(jié)果

27、顯示在屏幕上。如果用戶輸入錯誤,則返回,提示信息讓用戶重新輸入算式,當用戶按下Q或q鍵時退出程序。在各個子功能模塊設計好的情況下,通過主題模塊的合理調(diào)用,最終實現(xiàn)一個具有簡單運算功能的計算器</p><p>  2.2 程序流程圖及說明 </p><p>  此程序流程圖簡要地表現(xiàn)出了所要實現(xiàn)的功能以及一些功能的大概算法,同時也是我編寫的程序的一個總體的框架。 程序流程圖說明:通過流程圖,

28、可以看出程序開始運行時,首先輸出提示語句,當用戶輸入后,程序根據(jù)所輸入的內(nèi)容進行判斷,通過判斷的結(jié)果來決定調(diào)用哪個功能模塊,首先要判斷輸入的字符是否為Q或q,若是,則退出程序,不是則繼續(xù)輸入。還要判斷輸入的是否為0--9,‘+’,‘-’,‘*’,‘/’這些字符,若不是會報錯,是則將根據(jù)運算符號調(diào)用相應的功能模塊完成運算。最后將運算的結(jié)果顯示在屏幕上,并返回主題程序,使用戶可以重新輸入。 程序流程圖如圖2-1所示</p>&

29、lt;p><b>  3詳細設計</b></p><p>  3.1 主模塊及子模塊說明</p><p>  主題模塊實現(xiàn)變量的定義,提示輸入信息的顯示,調(diào)用各個功能子模塊,判斷輸入的內(nèi)容是否符合要求,如果符合要求,則按照用戶所輸入的運算符即‘+’‘-’‘*’‘/’來調(diào)用加減乘除等子模塊完成運算。當用戶鍵入‘enter’鍵或者‘=’鍵時將結(jié)果顯示在屏幕上。在此,

30、對變量的定義類型進行說明,因為本次課程設計所要求設計的計算器要能夠?qū)λ奈粩?shù)進行加減乘除運算,所以我使用DD偽指令將x、y、z三個變量定義為雙字變量。 </p><p>  子模塊說明:主要的子模塊是input子模塊,功能是輸入;do_add子模塊,功能是完成加法運算;do_sub子模塊,功能是完成減法運算;do_mul子模塊,功能是完成乘法運算;do_div子模塊,功能是完成除法運算。其它模塊將在模塊詳細設計部分

31、中進行說明。 </p><p>  程序主題部分源代碼如下:</p><p>  CURS MACRO A,B</p><p>  MOV AH,2 ;置光標位置</p><p>  MOV BH,0 ;頁號為0</p><p>  MOV DH

32、,A ;設置光標的坐標為(A.B)</p><p>  MOV DL,B</p><p>  INT 10H ;BIOS調(diào)用</p><p><b>  ENDM</b></p><p>  ;-------------------------------</p

33、><p>  DISPMSG MACRO MESSAGE</p><p>  LEA DX,MESSAGE ;傳遞MESSAGE的偏移地址</p><p>  MOV AH,9 ;顯示字符串</p><p>  INT 21H ;DOS調(diào)用</p><

34、;p><b>  ENDM</b></p><p>  ;----------------------------------</p><p>  CLEAR MACRO COLOR ;清屏</p><p>  MOV AH,6 ;屏幕初始化

35、 </p><p>  MOV AL,0 ;頁號</p><p>  MOV CH,0 ;設置左上角的坐標為(0,0)</p><p>  MOV CL,0</p><p>  MOV DL,100 ;設置右上角的坐標為(100,100)</p&g

36、t;<p>  MOV DH,100</p><p>  MOV BH,COLOR ;卷入行屬性</p><p>  INT 10H ;BIOS調(diào)用</p><p><b>  ENDM</b></p><p>  .MODEL SMA

37、LL</p><p><b>  .STACK</b></p><p>  .DATA ;數(shù)據(jù)段定義</p><p>  MSG0 DB ' _____________________________________ ',0DH,0AH

38、 ;,0dh,0ah,0dh,0ah</p><p>  DB ' | |',0DH,0AH</p><p>  | |',0dh,0ah</p><

39、;p>  | |',0dh,0ah</p><p>  DB ' | -----counter------ |',0DH,0AH ;,0dh,0ah,0dh,0ah</p><p>  DB

40、 ' | |',0DH,0AH</p><p>  DB ' | |',0DH,0AH</p><p>  DB

41、 ' | |',0DH,0AH</p><p>  DB ' | data1:'DB '______________ |',0DH,0AH ;,0dh,0ah,0dh

42、,0ah,0dh</p><p>  DB ' | |',0DH,0AH</p><p>  DB ' | |'

43、,0DH,0AH</p><p>  DB ' | |',0DH</p><p>  DB ' | data2:' DB '______________

44、|',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh</p><p>  DB ' | |',0DH,0AH</p><p>  DB ' |

45、 |',0DH,0AH</p><p>  DB ' | |',0DH</p><p>  DB ' | result:

46、9;DB '__________ |',0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah</p><p>  DB ' | |',0DH,0AH</p><p>  DB '

47、 | |',0DH,0AH</p><p>  DB ' | |',0DH,0AH</p><p>  DB '

48、 | |',0DH,0AH</p><p>  DB ' | |',0DH,0AH</p><p>  DB '

49、 |_____________________________________|','$'</p><p>  MSG1 DB 'choose +,-,*,/','$'</p><p>  MSG2 DB 'you choose wrong','$

50、',0AH,0DH</p><p>  MSG3 DB 'Press ESC to Exit!',0DH,0AH,'$'</p><p>  MSG4 DB 'Press any key to continue!',0DH,0AH,'$'</p><p>  MS

51、G5 DB '-','$'</p><p>  MSG6 DB '.','$'</p><p>  MSG7 DB 'error input!','$'</p><p>  MSG8 DB 'data

52、2 is wrong!','$'</p><p>  F_AL DB ?</p><p>  DATA1 DW ?</p><p>  DATA2 DW ?</p><p>  .CODE ;代碼段從這里開始</p><p&

53、gt;  ;--------------------------------------------</p><p>  DEC_DIV PROC NEAR</p><p>  CWD ;將字轉(zhuǎn)換為雙字,AX內(nèi)容符號擴展到DX</p><p>  DIV CX</p><p>  P

54、USH DX</p><p>  MOV DL,AL</p><p>  ADD DL,30H ;將不是數(shù)字的字符轉(zhuǎn)換為數(shù)字</p><p>  MOV AH,2 ;顯示輸出</p><p>  INT 21H ;DOS調(diào)用</p>

55、<p>  POP DX</p><p>  MOV AX,DX</p><p><b>  RET</b></p><p>  DEC_DIV ENDP</p><p>  ;------------------------------------------</p>

56、<p>  CHANGE PROC NEAR </p><p>  ;該子程序的功能:將AX中存儲的十六進制數(shù)轉(zhuǎn)換為十進制數(shù)</p><p>  CMP AX,1000</p><p>  JAE C1 ;AX≥1000則轉(zhuǎn)移</p><p>  CMP

57、 AX,100</p><p>  JAE C2 ;AX≥100則轉(zhuǎn)移</p><p>  CMP AX,10</p><p>  JAE C3 ;AX≥10則轉(zhuǎn)移</p><p>  JMP C4 ;AX<10</p>&l

58、t;p>  C1: MOV CX,1000D</p><p>  CALL DEC_DIV</p><p>  C2: MOV CX,100D</p><p>  CALL DEC_DIV</p><p>  C3: MOV CX,10D</p><p&g

59、t;  CALL DEC_DIV</p><p>  C4: MOV CX,1D</p><p>  CALL DEC_DIV</p><p><b>  RET</b></p><p>  CHANGE ENDP</p><p>  ;------------

60、-------------------</p><p>  BEGIN PROC NEAR</p><p>  BACK: CLEAR 1EH</p><p>  CURS 2,20 ;設置光標為(2.20)</p><p>  DISPMSG MSG0 ;顯示用戶界面</

61、p><p>  CURS 8,41 ;設置光標為(8,41) ,第一行</p><p>  MOV BX,0</p><p>  MOV CX,2</p><p><b>  NEWCHAR1:</b></p><p>  MOV AH,1

62、 ;鍵盤輸入并回顯</p><p>  INT 21H ;DOS調(diào)用</p><p>  CMP AL,30H ;檢查輸入的字符是不是數(shù)字</p><p>  JAE J1 ;如果不是,則轉(zhuǎn)移至J1</p><p>  JMP D2

63、 ;是,轉(zhuǎn)移到D2執(zhí)行</p><p>  J1: CMP AL,39H ; 與9的ASCII侶氡</p><p>  JBE J2 ;如果輸入的字符是0-9,則轉(zhuǎn)移至J2</p><p>  JMP D2 ;如果不是數(shù)字,則轉(zhuǎn)移至D2</p><p>

64、  J2: SUB AL,30H</p><p>  CBW ;AL的內(nèi)容符號擴展到AH</p><p>  XCHG AX,BX</p><p>  MOV DI,10</p><p>  MUL DI</p><p>  XC

65、HG AX,BX</p><p>  ADD BX,AX</p><p>  LOOP NEWCHAR1</p><p>  MOV DATA1,BX</p><p>  CURS 11,41 ;設置光標位為(11,40),第二行</p><p>  M

66、OV BX,0</p><p>  MOV CX,2</p><p><b>  NEWCHAR2:</b></p><p>  MOV AH,1 ;鍵盤輸入并回顯</p><p>  INT 21H ;DOS調(diào)用</p><

67、;p>  CMP AL,30H ;與0的ASCII碼比較</p><p>  JAE J3 ;如果輸入數(shù)字大于等于0則跳轉(zhuǎn)至J3</p><p>  JMP D2</p><p>  J3: CMP AL,39H ;與9比較</p><p>  JBE

68、 J4 ;如果小于或等于9則跳轉(zhuǎn)</p><p>  JMP D2 ;如果輸入不是數(shù)字則跳轉(zhuǎn)</p><p>  J4: SUB AL,30H ;如果輸入不是0-9,則轉(zhuǎn)化成相應的字符</p><p>  CBW ;將AL符號擴展到AH<

69、;/p><p>  XCHG AX,BX</p><p>  MOV DI,10</p><p>  MUL DI</p><p>  XCHG AX,BX</p><p>  ADD BX,AX</p><p>  LOOP NEW

70、CHAR2</p><p>  MOV DATA2,BX</p><p>  MOV AX,DATA1</p><p>  MOV BX,DATA2</p><p>  PUSH AX</p><p>  PUSH BX</p><p> 

71、 CURS 15,33 ;設置光標的位置為(15.33),第三行</p><p>  DISPMSG MSG1 ;顯示提示信息</p><p>  MOV AH,1 ;接受鍵盤輸入并回顯</p><p>  INT 21H ;DOS調(diào)用</p><p&g

72、t;  CMP AL,'+'</p><p>  JE ADDI ;如果運算符為+,則計算兩數(shù)之和</p><p>  CMP AL,'-'</p><p>  JE SUBT ;如果運算符為-,則計算兩數(shù)之差</p><p>  

73、CMP AL,'*'</p><p>  JE MULT ;如果運算符為*,則計算兩數(shù)之積</p><p>  CMP AL,'/'</p><p>  JE DIVI ;如果運算符為/,則計算兩數(shù)之商</p><p>  CURS

74、 16,25 ;設置光標為(16,25)</p><p>  DISPMSG MSG2 ;在屏幕上輸出提示信息</p><p>  JMP D1</p><p>  ;----------------------------------------</p><p>  ;----------

75、------------------------------</p><p>  MAIN PROC NEAR</p><p>  MOV AX,@DATA</p><p>  MOV DS,AX</p><p>  MOV ES,AX</p><p>  MOV

76、 AH,0FH</p><p>  INT 10H</p><p>  MOV BYTE PTR[F_AL],AL</p><p>  MOV AH,0</p><p>  PUSH DS</p><p>  XOR AX,AX</p><

77、;p>  PUSH AX</p><p>  MOV DATA2,0 ;將緩沖區(qū)清空</p><p>  MOV DATA1,0</p><p><b>  AGAIN:</b></p><p>  CALL BEGIN</p><p> 

78、 CURS 16,23 ;設置光標位置為(16.23)</p><p>  DISPMSG MSG3 ;在屏幕上輸出提示信息,提示退出的方法</p><p>  CURS 17,23 ;設置光標位置為(17.23)</p><p>  DISPMSG MSG4 ;在屏幕上輸出提示信息,提

79、示繼續(xù)的方法</p><p>  MOV AH,7 ;鍵盤輸入,無回顯</p><p>  INT 21H ;DOS調(diào)用</p><p>  CMP AL,27 ;判斷輸入的是否為ESC</p><p>  JNE AGAIN ;如果不是就繼

80、續(xù)執(zhí)行以上運算</p><p>  EXIT: MOV AH,0</p><p>  MOV AL,BYTE PTR[F_AL]</p><p>  INT 10H</p><p>  MOV AX,4C00H ;如果是就退出系統(tǒng)</p><p>  INT

81、 21H ;DOS調(diào)用</p><p>  MAIN ENDP</p><p>  END MAIN</p><p>  3.2 各模塊詳細設計</p><p>  ;ADD THE TWO DATAS </p><p>  ADDI: POP BX<

82、/p><p>  POP AX</p><p>  ADD AX,BX ;計算兩數(shù)字之和</p><p>  PUSH AX</p><p>  CURS 14,41 ;設置光標位置為(14,41)</p><p>  POP AX</p

83、><p>  CALL CHANGE ;將結(jié)果轉(zhuǎn)換為十進制數(shù)</p><p>  JMP D1</p><p>  ;---------------------------------------</p><p>  ;SUBTRACT THE TWO DATAS</p><p>  SUB

84、T: POP BX</p><p>  POP AX</p><p>  CMP AX,BX ;比較兩數(shù)大小</p><p>  JAE D0 ;如果AX>=BX則跳轉(zhuǎn)</p><p>  XCHG AX,BX</p><p&g

85、t;  PUSH AX</p><p>  PUSH BX</p><p>  CURS 14,40 ;設置光標位置為(14,40)</p><p>  DISPMSG MSG5 ;在屏幕上顯示負號</p><p>  POP BX</p><p>

86、;  POP AX</p><p>  D0: SUB AX,BX ;計算兩數(shù)之差</p><p>  PUSH AX</p><p>  CURS 14,41 ;設置光標位置為(14,41)</p><p>  POP AX</p><p&

87、gt;  CALL CHANGE ;將結(jié)果轉(zhuǎn)換為十進制數(shù)</p><p>  JMP D1</p><p>  ;---------------------------------------</p><p>  ;MULTIPLY THE TWO DATAS </p><p>  MULT: POP

88、 BX</p><p>  POP AX</p><p>  MUL BX ;計算兩數(shù)之積</p><p>  PUSH AX</p><p>  CURS 14,41 ;設置光標位置為(14,41)</p><p>  POP

89、AX</p><p>  CALL CHANGE ;將結(jié)果轉(zhuǎn)換為十進制數(shù)</p><p>  JMP D1</p><p>  ;---------------------------------------</p><p>  ;DIVIDE THE TWO DATAS</p><p>

90、;  DIVI: POP BX</p><p>  POP AX</p><p>  CMP BX,0 ;判斷除數(shù)是否為0</p><p>  JE ERROR ;如果是0則跳轉(zhuǎn)</p><p><b>  CWD</b></p>

91、<p>  DIV BX ;計算兩數(shù)之商</p><p>  PUSH DX</p><p>  PUSH AX</p><p>  CURS 14,41 ;設置光標位置為(14,41)</p><p>  POP AX</p>&l

92、t;p>  CALL CHANGE ;將十六進制數(shù)轉(zhuǎn)換為十進制數(shù)</p><p>  POP DX</p><p>  CMP DX,0</p><p>  JNE LOP ;如果DX不等于0則跳轉(zhuǎn)</p><p>  JMP D1</p>

93、<p>  LOP: MOV CX,6 ;設置精確度為小數(shù)點后6位</p><p>  PUSH DX</p><p>  DISPMSG MSG6 ;輸出小數(shù)點</p><p>  POP DX</p><p>  CON: PUSH BX</

94、p><p>  MOV AX,DX</p><p>  MOV BX,10</p><p>  MUL BX</p><p>  POP BX</p><p>  CWD ;將AX的內(nèi)容符號擴展到雙字</p><p>

95、;  DIV BX ;計算小數(shù)點后每一位的數(shù)字</p><p>  PUSH DX</p><p>  PUSH CX</p><p>  CALL CHANGE ;將十六進制數(shù)轉(zhuǎn)化為十進制數(shù)</p><p>  POP CX</p><p&

96、gt;  POP DX</p><p>  CMP DX,0 ;判斷是否已經(jīng)計算到小數(shù)點后第六位</p><p>  JE D1 ;如果是,則跳轉(zhuǎn)</p><p>  LOOP CON ;如果不是,就繼續(xù)計算</p><p>  ERROR: C

97、URS 15,33 ;設置光標位置為(15,33)</p><p>  DISPMSG MSG8 ;提示出錯</p><p><b>  D1: RET</b></p><p>  D2: PUSH AX</p><p>  PUSH BX</p>

98、;<p>  CURS 15,33 ;設置光標位置為(15,33)</p><p>  DISPMSG MSG7 ;提示輸入出錯</p><p>  POP BX</p><p>  POP AX</p><p><b>  RET</b>&l

99、t;/p><p>  BEGIN ENDP</p><p><b>  4程序調(diào)試</b></p><p>  4.1調(diào)試過程及分析</p><p>  4.2 運行界面分析</p><p><b>  加法</b></p><p><b> 

100、 減法</b></p><p><b>  乘法</b></p><p><b>  除法</b></p><p><b>  5心得體會</b></p><p><b>  5.1 設計體會 </b></p><p>

101、  經(jīng)過這次課程設計,我學到了很多東西,其中包括知識方面的,還有其他方面的。首先讓我認識到,做好一件事,做成功一件事是不容易的,但是你只要堅持不懈的努力,不斷的發(fā)揮自己的智慧去思索去探究,你會欣慰的發(fā)現(xiàn)自己正向著成功一步步邁進。 </p><p>  這次課程設計使我對匯編語言程序設計這門課程有了進一步的理解和認識,使我學到了許多編程語言以及算法設計方面的知識,同時也鍛煉了我的耐心和意志,增長了我的實踐能力。 &

102、lt;/p><p>  這次課程設計我所選的題目是使用匯編語言設計一個具有加減乘除基本運算功能的簡單計算器,要求編寫一個程序,每運行一次可執(zhí)行程序,可以實現(xiàn)加減乘除四則運算。通過使用匯編語言設計實現(xiàn)簡單計算器,我進一步了解和掌握了對數(shù)據(jù)存儲,寄存器的使用,加減乘除相關(guān)指令以及模塊的調(diào)用等匯編語言知識的有效運用。本次課程設計以實現(xiàn)一個基本功能完善,界面友好,操作簡便易行的計算器為最終目的,我通過對具有加減乘除基本功能的

103、計算器的設計實現(xiàn),學會了使用匯編語言實現(xiàn)輸入輸出模塊的設計,模塊合理調(diào)用的設計,加減乘除運算的判斷以及退出程序的判斷的設計。在匯編語言程序設計中,我通過對各種指令的合理使用,熟悉并加深了對各種指令的用法,同時也學會使用匯編語言設計各個功能模塊。當我實現(xiàn)各個程序模塊后,學會了通過程序的調(diào)用最終實現(xiàn)一個具有基本計算功能的簡單計算器。在本次課程設中,我遇到了很多問題。例如,在計完成具有輸入功能的模塊input模塊時我就遇到了困難。</p

104、><p>  通過一番努力后我發(fā)現(xiàn)利用int 21H中的01號功能調(diào)用可以較好的實現(xiàn)輸入功能,原因是Int 21H的01號功能調(diào)用可以直接接收鍵入的字符,當有鍵按下時,首先檢查是否是ctrl+break,若是,則執(zhí)行退出命令;否則將鍵值送入AL寄存器并回顯。 通過這次匯編語言程序課程設計,我學到了許多東西,同時也發(fā)現(xiàn)了一些不足之處,在以后的學習中我會逐步彌補這些不足??偠灾舜握n程設計使我受益匪淺。</p&

105、gt;<p><b>  5.2 系統(tǒng)改進 </b></p><p>  本次課程設計我雖然完成了題目的要求,但是其中也還存在一些不足之處,這些不足的地方有待與改進與完善。系統(tǒng)需要改進的地方有以下三點:一,最主要的就是程序的健壯性不是很完善;二,對大數(shù)的加減乘除運算功能不足;三,程序代碼算法的優(yōu)化不足。</p><p>  本次課程設計我認為最需要改進的

106、就是程序的健壯性。通過這次課程設計,我發(fā)現(xiàn)一個好的匯編程序不僅要正確可行,還要有健壯性,當用戶輸入數(shù)據(jù)非法,使運行環(huán)境改變時,程序能恰當?shù)刈鞒龇磻蜻M行處理,不會產(chǎn)生莫名其妙的輸出結(jié)果。一個正確可行的算法如果缺乏健壯性,那么這個程序也不能算真正的成功。</p><p><b>  參考文獻</b></p><p>  [1] 微型計算機原理與接口技術(shù) 呂林濤主編 北京

107、科學出版社,2005</p><p>  [2] 錢曉捷 新版匯編語言程序設計 北京電子工業(yè)出版社,2008</p><p>  [3] 劉麗莉 匯編語言程序設計 北京大學出版社,2010</p><p>  [4] 王爽 匯編語言 清華大學出版社,2008</p><p>  [5] 《零基礎入門學習匯編語言》 主講:小甲魚</p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論