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

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設(shè) 計</b></p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  學(xué)生姓名: 專業(yè)班級: </p><p>  指導(dǎo)教師: 工作單位:計算機(jī)科學(xué)與技術(shù)學(xué)院 </p><p>  題目: 打印水仙花數(shù)<

2、;/p><p><b>  初始條件:</b></p><p>  理論:完成了《匯編語言程序設(shè)計》課程,對微機(jī)系統(tǒng)結(jié)構(gòu)和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設(shè)計的基本方法和技巧。</p><p>  實踐:完成了《匯編語言程序設(shè)計》的4個實驗,熟悉了匯編語言程序的設(shè)計環(huán)境并掌握了匯編語言程序的調(diào)試方法。</p>&

3、lt;p>  要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p>  進(jìn)一步理解和掌握較復(fù)雜程序的設(shè)計方法,掌握子程序結(jié)構(gòu)的設(shè)計和友好用戶界面的設(shè)計。具體的設(shè)計任務(wù)及要求:</p><p><b>  輸入一個大整數(shù)n;</b></p><p>  將小于n的水仙花數(shù)打印出來(各位數(shù)字的立方

4、和等于該數(shù)本身);</p><p>  程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;</p><p>  友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。</p><p>  在完成設(shè)計任務(wù)后,按要求撰寫課程設(shè)計說明書;對課程設(shè)計說明書的具體要求請見課程設(shè)計指導(dǎo)書。</p><p><b>  閱讀資料:</b></p>

5、;<p>  1)《IBM—PC匯編語言程序設(shè)計實驗教程》實驗2.4</p><p>  2)《IBM—PC匯編語言程序設(shè)計(第2版)》例6.11</p><p><b>  時間安排:</b></p><p>  設(shè)計安排一周:周1、周2:完成系統(tǒng)分析及設(shè)計。</p><p>  周3、周4:完成程序調(diào)試

6、,和驗收。</p><p>  周5:撰寫課程設(shè)計報告。</p><p>  指導(dǎo)教師簽名: 2012年 月 日</p><p>  系主任(或責(zé)任教師)簽名: 2012年 月 日</p><p><b>  打印水仙花數(shù)</b></p>

7、<p><b>  需求說明</b></p><p><b>  1.1設(shè)計要求:</b></p><p>  進(jìn)一步理解和掌握較復(fù)雜程序的設(shè)計方法,掌握子程序結(jié)構(gòu)的設(shè)計和友好用戶界面的設(shè)計。具體的設(shè)計任務(wù)及要求:</p><p>  1.輸入一個三位整數(shù)n;</p><p>  2.

8、將小于n的水仙花數(shù)打印出來(各位數(shù)字的立方和等于該數(shù)本身);</p><p>  3.程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;</p><p>  4.友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。</p><p><b>  1.2設(shè)計說明</b></p><p>  所謂“水仙花數(shù)”是指一個3位數(shù),其個、十、百位數(shù)字的立

9、方和等于其本身。</p><p><b>  1.3功能簡述</b></p><p>  程序可以輸入一個三位數(shù),若輸入有誤則提示錯誤,并提示重新輸入,若輸入正確,系統(tǒng)將顯示出所有大于等于100,并且小于等于輸入數(shù)字的水仙花數(shù)。</p><p>  然后提示是否繼續(xù),若用戶輸入y或Y,則系統(tǒng)回到最開始的狀態(tài),若輸入n或N,則退出系統(tǒng),若為其他則

10、提示錯誤,并重新輸入。</p><p>  設(shè)計說明(簡要的分析與概要設(shè)計)</p><p><b>  2.1簡要分析</b></p><p><b>  2.1.1原理說明</b></p><p>  可以用標(biāo)簽來接收三位數(shù),標(biāo)簽的好處在于可以限制輸入的位數(shù),并且通過實際輸入位數(shù)可以直接進(jìn)行一部

11、分的異常處理。</p><p>  將數(shù)存到標(biāo)簽后,因為是以ASCII碼的形式存的,所以需要進(jìn)行轉(zhuǎn)換,將其變成十六進(jìn)制數(shù),轉(zhuǎn)換后將數(shù)字存到申請的內(nèi)存字中。在轉(zhuǎn)換成十六進(jìn)制數(shù)的過程中,可以對輸入的數(shù)進(jìn)行異常處理,判斷是否輸入有誤。</p><p>  在輸出水仙花數(shù)時,設(shè)置一個計數(shù)器,從100開始循環(huán)判斷,直到等于用戶輸入的數(shù)為止,依次判斷是否為水仙花數(shù),決定是否輸出該數(shù)。</p>

12、;<p>  在輸出時,分別取出水仙花數(shù)的個、十、百位數(shù),轉(zhuǎn)換成ASCII碼再輸出。</p><p>  系統(tǒng)提示是否繼續(xù)后,程序?qū)τ脩糨斎氲男畔⑦M(jìn)行判斷,若為y或Y則系統(tǒng)回到初始狀態(tài),若為n或N則退出系統(tǒng),若為其他則提示輸入錯誤并重新輸入。</p><p>  2.1.2程序流程圖</p><p><b>  開始</b><

13、;/p><p><b>  輸入一個三位數(shù)n</b></p><p><b>  是否繼續(xù)</b></p><p><b>  結(jié)束</b></p><p><b>  2.2 數(shù)據(jù)段設(shè)計</b></p><p>  data segm

14、ent</p><p>  mess1 db 0dh,0ah,'Please input a nubmer (100<=number<=999):','$'</p><p>  mess2 db 0dh,0ah,'Do you want to continue(y/n)? ','$'</p>

15、<p>  mess3 db 0dh,0ah,'shuixianhuashu:',0ah,'$'</p><p>  error db 0dh,0ah,'Input error,please input again!','$'</p><p>  numpar label byte</p>&

16、lt;p>  max db 4</p><p>  act db ?</p><p>  numfld db 4 dup(?);存放輸入的字符串,設(shè)定了最大長度,避免錯誤。</p><p>  real dw ? ;用于存放轉(zhuǎn)換后的十六進(jìn)制數(shù)</p><p><b>  data

17、 ends</b></p><p><b>  子程序設(shè)計與描述</b></p><p>  3.1輸入一個三位數(shù):</p><p>  ;input a number</p><p>  num proc near</p><p>  lea dx,mess1</p>

18、<p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  mov ah,0ah</p><p>  lea dx,numpar</p><p><b>  int 21h</b></p>&

19、lt;p>  call convert</p><p><b>  ret</b></p><p><b>  num endp</b></p><p>  3.2 將輸入的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制數(shù)并進(jìn)行異常處理:</p><p>  convert proc near</p>

20、<p><b>  mov bx,0</b></p><p><b>  mov dx,0</b></p><p><b>  mov ax,0</b></p><p>  cmp act,3 ;判斷是否為三位數(shù)</p><p><b&g

21、t;  jne err</b></p><p>  mov bl,numfld[2] ;判斷個位是否為1~9</p><p>  cmp bl,2fh</p><p><b>  jbe err</b></p><p>  cmp bl,3ah</p><p><b>

22、;  jge err </b></p><p>  sub bl,30h</p><p>  mov al,numfld[1] ;判斷十位是否為0~9</p><p>  cmp al,2fh</p><p><b>  jbe err</b></p><p>  cmp al

23、,3ah</p><p><b>  jge err </b></p><p>  sub al,30h</p><p><b>  mov dh,10</b></p><p><b>  mul dh</b></p><p><b>  ad

24、d bl,al</b></p><p>  mov al,numfld[0] ;判斷百位是否為0~9</p><p>  cmp al,30h </p><p><b>  jbe err</b></p><p>  cmp al,3ah</p><p

25、><b>  jge err </b></p><p>  sub al,30h</p><p>  mov dh,100</p><p>  mul dh </p><p><b>  add ax,bx</b></p><p>  mov real,ax

26、 ;將轉(zhuǎn)換后的十六進(jìn)制數(shù)存到內(nèi)存中</p><p><b>  jmp ext</b></p><p>  err: ;錯誤處理</p><p>  lea dx,error</p><p><b>  mov ah,9</b></p><p&

27、gt;<b>  int 21h</b></p><p>  call num </p><p><b>  ext:</b></p><p><b>  ret</b></p><p>  convert endp</p><p>  3.2

28、判斷是否為水仙花數(shù)并輸出結(jié)果( display子程序)</p><p>  ;display shuixianhuashu</p><p>  display proc near</p><p>  lea dx,mess3</p><p><b>  mov ah,9</b></p><p>

29、;<b>  int 21h</b></p><p>  mov cx,100</p><p><b>  cmp3: </b></p><p>  mov ax,cx ;將百位數(shù)的立方存入bx中</p><p>  mov dh,100</p><p>&l

30、t;b>  div dh</b></p><p><b>  mov dh,al</b></p><p><b>  mul dh</b></p><p><b>  mul dh</b></p><p><b>  mov bx,ax</b&

31、gt;</p><p>  mov ax,cx ;將十位數(shù)的立方加到bx中</p><p><b>  mov dh,10</b></p><p><b>  div dh</b></p><p><b>  mov ah,0</b></p>

32、<p><b>  div dh</b></p><p><b>  mov al,ah</b></p><p><b>  mov dh,ah</b></p><p><b>  mul dh</b></p><p><b>  mu

33、l dh</b></p><p><b>  add bx,ax</b></p><p>  mov ax,cx ;將個位數(shù)的立方加到bx中</p><p><b>  mov dh,10</b></p><p><b>  div dh</b&

34、gt;</p><p><b>  mov al,ah</b></p><p><b>  mov dh,ah</b></p><p><b>  mul dh</b></p><p><b>  mul dh</b></p><p&g

35、t;<b>  add bx,ax</b></p><p>  mov dx,cx ;若是水仙花數(shù)則跳轉(zhuǎn)到print</p><p><b>  cmp dx,bx</b></p><p><b>  je print</b></p><p>  mov

36、ax,real ;若等于用戶輸入的數(shù)據(jù)則終止</p><p><b>  cmp cx,ax</b></p><p><b>  je stop</b></p><p>  inc cx ;否則計數(shù)器加一繼續(xù)比較</p><p><b>  j

37、mp cmp3</b></p><p><b>  print:</b></p><p>  mov ax,bx ;打印百位</p><p>  mov dh,100</p><p><b>  div dh</b></p><p><

38、b>  mov dl,al</b></p><p>  add dl,30h</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  mov ax,bx ;打印十位</p>&

39、lt;p><b>  mov dh,10</b></p><p><b>  div dh</b></p><p><b>  mov ah,0</b></p><p><b>  div dh</b></p><p><b>  mov

40、dl,ah</b></p><p>  add dl,30h</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  mov ax,bx ;打印個位</p><p><

41、;b>  div dh</b></p><p><b>  mov dl,ah</b></p><p>  add dl,30h</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p>&

42、lt;p>  mov dl,20h</p><p><b>  int 21h</b></p><p>  mov ax,real</p><p><b>  cmp ax,cx</b></p><p><b>  je stop</b></p><p

43、><b>  inc cx</b></p><p><b>  jmp cmp3</b></p><p><b>  stop: </b></p><p><b>  ret</b></p><p>  display endp &l

44、t;/p><p>  4.源程序與執(zhí)行結(jié)果</p><p><b>  4.1源程序代碼</b></p><p>  data segment</p><p>  mess1 db 0dh,0ah,'Please input a nubmer(100<=number<=999):','

45、$' ;提示輸入一個三位數(shù)</p><p>  mess2 db 0dh,0ah,'Do you want to continue(y/n)? ','$';提示是否繼續(xù)</p><p>  mess3 db 0dh,0ah,'shuixianhuashu:',0ah,'$';提示輸出水仙花數(shù)</p>

46、;<p>  error db 0dh,0ah,'Input error,please input again!','$';出錯信息</p><p>  numpar label byte</p><p>  max db 4</p><p>  act db ?</p><

47、;p>  numfld db 4 dup(?);存放輸入的字符串,設(shè)定了最大長度,避免錯誤。</p><p>  real dw ?;用于存放轉(zhuǎn)換后的十六進(jìn)制數(shù)</p><p><b>  data ends</b></p><p>  code segment</p><p>  assume d

48、s:data,cs:code</p><p>  main proc far</p><p><b>  start:</b></p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p><b>  go:

49、</b></p><p><b>  call num</b></p><p>  call display</p><p><b>  again:</b></p><p>  lea dx,mess2</p><p><b>  mov ah,9&l

50、t;/b></p><p><b>  int 21h</b></p><p>  mov ah,1 </p><p><b>  int 21h</b></p><p>  cmp al,89 </p><p><b>  je go&

51、lt;/b></p><p>  cmp al,121 </p><p><b>  je go</b></p><p>  cmp al,78 </p><p><b>  je exit</b></p><p>  cmp al,110

52、 </p><p><b>  je exit</b></p><p>  lea dx,error</p><p>  mov ah,9 </p><p><b>  int 21h</b></p><p><b>  jmp again</b

53、></p><p><b>  exit:</b></p><p>  mov ah,4ch</p><p><b>  int 21h</b></p><p><b>  main endp</b></p><p>  ;------------

54、--------------------------</p><p>  ;input a number;輸入一個三位數(shù)</p><p>  num proc near</p><p>  lea dx,mess1</p><p><b>  mov ah,9</b></p><p><

55、b>  int 21h</b></p><p>  mov ah,0ah</p><p>  lea dx,numpar</p><p><b>  int 21h</b></p><p>  call convert</p><p><b>  ret</b&g

56、t;</p><p><b>  num endp</b></p><p>  ;---------------------------------------</p><p>  ;convert decimal to hexadecimal</p><p>  ;store to real;將輸入的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)

57、制數(shù)并進(jìn)行異常處理</p><p>  convert proc near</p><p><b>  mov bx,0</b></p><p><b>  mov dx,0</b></p><p><b>  mov ax,0</b></p><p&g

58、t;  cmp act,3 ;判斷是否為三位數(shù)</p><p><b>  jne err</b></p><p>  mov bl,numfld[2] ;判斷個位是否為0~9</p><p>  cmp bl,2fh</p><p><b>  jbe err</b></

59、p><p>  cmp bl,3ah</p><p><b>  jge err </b></p><p>  sub bl,30h</p><p>  mov al,numfld[1] ;判斷十位是否為0~9</p><p>  cmp al,2fh</p><p>

60、;<b>  jbe err</b></p><p>  cmp al,3ah</p><p><b>  jge err </b></p><p>  sub al,30h</p><p><b>  mov dh,10</b></p><p><

61、;b>  mul dh</b></p><p><b>  add bl,al</b></p><p>  mov al,numfld[0] ;判斷百位是否為1~9</p><p>  cmp al,30h </p><p><b>  jbe err

62、</b></p><p>  cmp al,3ah</p><p><b>  jge err </b></p><p>  sub al,30h</p><p>  mov dh,100</p><p>  mul dh </p><p><b&g

63、t;  add ax,bx</b></p><p>  mov real,ax ;將轉(zhuǎn)換后的十六進(jìn)制數(shù)存到內(nèi)存中</p><p><b>  jmp ext</b></p><p>  err: ;錯誤處理</p><p>  l

64、ea dx,error</p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  call num </p><p><b>  ext:</b></p><p><b>

65、;  ret</b></p><p>  convert endp</p><p>  ;---------------------------------------</p><p>  ;display shuixianhuashu;判斷是否為水仙花數(shù)并輸出結(jié)果</p><p>  display proc near&l

66、t;/p><p>  lea dx,mess3</p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  mov cx,100</p><p><b>  cmp3:</b></p&g

67、t;<p>  mov ax,cx ;將百位數(shù)的立方存入bx中</p><p>  mov dh,100</p><p><b>  div dh</b></p><p><b>  mov dh,al</b></p><p><b>  mul

68、dh</b></p><p><b>  mul dh</b></p><p><b>  mov bx,ax</b></p><p>  mov ax,cx ;將十位數(shù)的立方加到bx中</p><p><b>  mov dh,10</b&

69、gt;</p><p><b>  div dh</b></p><p><b>  mov ah,0</b></p><p><b>  div dh</b></p><p><b>  mov al,ah</b></p><p>

70、;<b>  mov dh,ah</b></p><p><b>  mul dh</b></p><p><b>  mul dh</b></p><p><b>  add bx,ax</b></p><p>  mov ax,cx

71、 ;將個位數(shù)的立方加到bx中</p><p><b>  mov dh,10</b></p><p><b>  div dh</b></p><p><b>  mov al,ah</b></p><p><b>  mov dh,ah</b>

72、;</p><p><b>  mul dh</b></p><p><b>  mul dh</b></p><p><b>  add bx,ax</b></p><p>  mov dx,cx ;若是水仙花數(shù)則跳轉(zhuǎn)到print<

73、/p><p><b>  cmp dx,bx</b></p><p><b>  je print</b></p><p>  mov ax,real ;若等于用戶輸入的數(shù)據(jù)則終止</p><p><b>  cmp cx,ax</b><

74、/p><p><b>  je stop</b></p><p>  inc cx ;否則計數(shù)器加一繼續(xù)比較</p><p><b>  jmp cmp3</b></p><p><b>  print:</b></p&g

75、t;<p>  mov ax,bx ;打印百位</p><p>  mov dh,100</p><p><b>  div dh</b></p><p><b>  mov dl,al</b></p><p>  add dl,30h</p

76、><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  mov ax,bx ;打印十位</p><p><b>  mov dh,10</b></p><p&

77、gt;<b>  div dh</b></p><p><b>  mov ah,0</b></p><p><b>  div dh</b></p><p><b>  mov dl,ah</b></p><p>  add dl,30h</p&g

78、t;<p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  mov ax,bx ;打印個位</p><p><b>  div dh</b></p><p>&

79、lt;b>  mov dl,ah</b></p><p>  add dl,30h</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  mov dl,20h</p><p><b

80、>  int 21h</b></p><p>  mov ax,real</p><p><b>  cmp ax,cx</b></p><p><b>  je stop</b></p><p><b>  inc cx</b></p><

81、;p><b>  jmp cmp3</b></p><p><b>  stop: </b></p><p><b>  ret</b></p><p>  display endp </p><p>  ;------------------------

82、--------------</p><p><b>  code ends</b></p><p><b>  end start</b></p><p><b>  4.2 測試方法</b></p><p>  4.2.1 測試用例</p><p>

83、<b>  輸入數(shù)字:</b></p><p><b>  錯誤輸入12</b></p><p><b>  錯誤輸入045</b></p><p><b>  正確輸入265</b></p><p><b>  是否繼續(xù):</b>&

84、lt;/p><p><b>  錯誤輸入1</b></p><p><b>  錯誤輸入t</b></p><p><b>  正確輸入y</b></p><p><b>  正確輸入n</b></p><p>  4.2.2 測試結(jié)果

85、</p><p><b>  5.總結(jié)</b></p><p><b>  5.1不足</b></p><p>  本程序只是針對了三位數(shù)進(jìn)行設(shè)計,對于四位數(shù)進(jìn)行過設(shè)計,但沒法正確輸出,最后只完成了判斷輸出三位數(shù)的水仙花數(shù),所以在功能上有所不足,只是實現(xiàn)了最基本的判斷三位數(shù)是否為水仙花數(shù)并且輸出。</p>&

86、lt;p><b>  5.2收獲與體會</b></p><p>  在編程的過程中,遇到了很多沒有預(yù)料到的困難,有很多知識點(diǎn)之前了解的很模糊,于是在編程變成完成之后,有很多細(xì)節(jié)上面的錯誤,不僅繁雜,而且有時候錯誤很隱蔽,給查找錯誤帶來很大的困難。</p><p>  這次實驗讓我明白了流程圖的重要性,剛開始寫程序的時候,直接就動手了,結(jié)果程序?qū)懙暮軄y,執(zhí)行起來的

87、效果也不好。后來動手畫了流程圖,把大概的框架寫好,然后依據(jù)框架一點(diǎn)一點(diǎn)編寫程序,發(fā)現(xiàn)寫程序變得簡單了很多,通過流程圖,每一步要做什么事情,完成什么任務(wù)變得很清晰。思路清晰以后,不僅程序編寫更加容易,查找錯誤也更加輕松。通過這次課設(shè),我認(rèn)識到我以前對流程圖的觀點(diǎn)是錯誤的,也更加熟悉了流程圖的使用。</p><p>  通過這次課程設(shè)計,我懂得了理論和實際相結(jié)合的重要性,在理論方面,看上去很容易實現(xiàn)的東西,實際操作起

溫馨提示

  • 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

提交評論