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

下載本文檔

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

文檔簡介

1、<p>  信 息 工 程 學(xué) 院</p><p>  課 程 設(shè) 計 報 告</p><p>  設(shè)計題目: </p><p>  名 稱: </p><p>  班 級: </p><p&g

2、t;  姓 名: </p><p>  學(xué) 號: </p><p>  設(shè)計時間: 至 </p><p>  指導(dǎo)教師: </p><p>  評 語:

3、 </p><p>  評閱成績: 評閱教師: </p><p>  一、課程設(shè)計的性質(zhì)和目的</p><p>  通過課程設(shè)計,進行程序設(shè)計方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)軟件程序設(shè)計的基本知識和基本方法,硬件電路的設(shè)計等,通過實際動手能力的培養(yǎng),進一步熟悉匯編語言的結(jié)構(gòu)

4、和使用方法,掌握軟硬結(jié)合的控制程序設(shè)計,達(dá)到能獨立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。</p><p><b>  二、課程設(shè)計的要求</b></p><p>  1、遵循模塊化、結(jié)構(gòu)化的程序設(shè)計方法。</p><p>  2、要求程序必須正確。</p><p>  3、程序簡明易懂,多運用輸入輸出提示,有出錯

5、信息及必要的注釋。</p><p>  4、要求程序結(jié)構(gòu)合理,語句使用得當(dāng)。</p><p>  5、適當(dāng)追求編程技巧和程序運行效率。</p><p>  三、主要儀器設(shè)備及軟件</p><p>  PC機、MASM匯編軟件、繪圖軟件及仿真等。</p><p>  四、課程設(shè)計題目及要求</p><

6、p><b>  計時器: </b></p><p>  要求:(1)用字符構(gòu)成的大字顯示分、秒、十分之一秒;(2)正計時能夠用鍵盤控制起</p><p>  動、停止、清0;(3)倒計時能夠用鍵盤設(shè)置初值、控制啟動、減到0自動停止。</p><p>  五、課題分析及設(shè)計思路</p><p><b> 

7、 課題分析:</b></p><p>  我們所要設(shè)計的計時器,它的主要作用就是既能產(chǎn)生正計時功能,又能產(chǎn)生倒計時功能,</p><p>  而且正計時的時候能夠用鍵盤控制啟動、停止、清0;倒計時的時候能夠用鍵盤設(shè)置初值、控制啟動、減到為0自動停止。</p><p><b>  設(shè)計思路:</b></p><p&

8、gt;  在主程序中,通過先檢查鍵盤是否有輸入,如果沒有輸入,則跳過檢查鍵盤輸入的鍵</p><p>  值的程序,如果有輸入則比較輸入為“S”或“s”鍵,“P”或“p”鍵,“G”或“g”鍵,</p><p>  “C”或“c”鍵,“ESC”鍵中的哪個鍵,進而執(zhí)行相應(yīng)鍵值對應(yīng)的實現(xiàn)該功能的程序,達(dá)</p><p>  到開始,暫停,繼續(xù),清零,退出的功能??紤]到更加

9、直觀的顯示計時器的計時功能,讓其顯示的時候?qū)俸撩牒褪撩胛灰诧@示出來,使計時功能更加準(zhǔn)確。所以在設(shè)計計時器的計時最小單位時,就要使中斷頻率設(shè)置為100Hz,即10ms 一次中斷。于是顯示的計時單位就是“時:分:秒:十毫秒”。同時設(shè)置光標(biāo)位置使其顯示在屏幕中央。當(dāng)十毫秒位超過9 時候,要對百毫秒位進行加1 操作,如果百毫秒位超過9 時,要對秒位進1,當(dāng)秒位超過9 時,對十秒位進1,如果十秒位超過5 時,才對分鐘位進1,分鐘位超過9 時,

10、對十分鐘的位進1,如果十分鐘的位的超過5 時,對小時位進1。小時位的進位設(shè)計就要考慮到小時最多24 的特殊性了,所以設(shè)置一個變量,在小時位加1 的同時給它也加1,如果這個變量加到了24 則重新開始計時,此時再把該變量的置零。為了使計時器的顯示界面更加直觀更加清楚,所以可以在int 10h 的情況下將AH 賦值為0,同時置AL 為10H 將顯示的方式設(shè)置為640×350 彩色圖形,而且為全屏顯示,同時顏色通過在int 10H 的

11、情況下將AH 賦值的為0BH,同時置BL 為04H 可以將屏幕背景顏色設(shè)置為紅色,</p><p><b>  六、程序主要流程圖</b></p><p>  1、正計時流程圖如下:</p><p>  2、倒計時流程圖如下:</p><p>  七、程序主要代碼與分析(關(guān)鍵代碼要有注釋):</p>&l

12、t;p><b>  正計時程序:</b></p><p>  data segment</p><p>  hou1 db '0'</p><p>  hou2 db '0'</p><p><b>  mw db ':'</b></p&g

13、t;<p>  min1 db '0'</p><p>  min2 db '0'</p><p><b>  m db ':'</b></p><p>  sec1 db '0'</p><p>  sec2 db '0'&l

14、t;/p><p><b>  m2 db ':'</b></p><p>  msec1 db '0'</p><p>  msec2 db '0'</p><p>  count equ $-hou1</p><p><b>  h db &

15、#39;0'</b></p><p>  sail db "Copyright by yangfan."</p><p>  hello db " Welcome to use the calculagraph of sail. "</p><p>  tishi db " s:start p:p

16、ause g:continue Esc:exit c:clear "</p><p><b>  data ends</b></p><p>  code segment</p><p>  assume cs:code,ds:data</p><p><b>  start:</b>&l

17、t;/p><p>  mov ax, data</p><p>  mov ds, ax</p><p>  mov ah,01h ;置光標(biāo)類型,不顯示光標(biāo)</p><p>  mov ch,20h</p><p><b>  int 10h</b></p><p>  cal

18、l clean_screen</p><p><b>  push ax</b></p><p><b>  push bx</b></p><p>  mov ah,00h</p><p>  mov al,10h ;設(shè)置640*350 彩色圖形方式</p><p><

19、;b>  int 10h</b></p><p>  mov ah,0bh</p><p>  mov bh,00h ;設(shè)置背景顏色為紅色</p><p>  mov bl,04h</p><p><b>  int 10h</b></p><p><b>  pop

20、ax</b></p><p><b>  pop bx</b></p><p>  mov dh,00h ;行號</p><p>  mov dl,00h ;列號</p><p>  mov bh,00h ;頁號</p><p>  mov ah,02h ;置光標(biāo)位置</p>

21、;<p><b>  int 10h</b></p><p>  mov cx, 48h</p><p>  mov si, offset hello</p><p><b>  show2:</b></p><p>  mov ah, 0eh ;顯示字符(光標(biāo)前移),al字符,bl

22、前景</p><p>  mov al, [si]</p><p><b>  int 10h</b></p><p><b>  inc si</b></p><p>  loop show2</p><p>  mov dh,02h ;列號</p><

23、p>  mov bh,00h ;頁號</p><p>  mov ah,02h ;置光標(biāo)位置</p><p><b>  int 10h</b></p><p>  mov cx, 80h</p><p>  mov si, offset tishi</p><p><b>  s

24、how3:</b></p><p>  mov ah, 0eh ;顯示字符(光標(biāo)前移),al 字符,bl 前景色</p><p>  mov al, [si]</p><p><b>  int 10h</b></p><p><b>  inc si</b></p>&l

25、t;p>  loop show3</p><p>  call locate_cursor</p><p><b>  call show</b></p><p>  q2: mov ah, 08h ; 鍵盤輸入無回顯,al= 輸入字符</p><p><b>  int 21h</b><

26、;/p><p>  cmp al, 1bh ;按下Esc 鍵結(jié)束程序</p><p><b>  je goout1</b></p><p><b>  jmp yy</b></p><p>  goout1: mov ah, 4ch</p><p><b>  int

27、 21h</b></p><p>  yy: cmp al ,'s' ;按下's'鍵開始計時</p><p><b>  je q1</b></p><p>  cmp al ,'S'</p><p><b>  je q1</b><

28、/p><p><b>  jmp q2</b></p><p>  q1: cli ;使IF 清零</p><p>  mov al, 08h</p><p>  mov ah, 35h ;獲取08h 號中斷的原入口地址</p><p><b>  int 21h</b><

29、/p><p><b>  push es</b></p><p><b>  push bx</b></p><p><b>  push ds</b></p><p>  mov ax, 3508h</p><p>  mov ds, ax</p&g

30、t;<p>  mov dx, offset int08h ;設(shè)置08h 號中斷的新入口地址</p><p>  mov al,08h</p><p>  mov ah,25h</p><p>  int 21h ;調(diào)用08h 號中斷的服務(wù)程序</p><p><b>  pop ds</b></p&

31、gt;<p>  in al,21h ;PC 機中的8253 端口地址為40H-43H,這段程序應(yīng)該是給8253 初始化和寫定時初值</p><p>  push ax ;Intel 公司的8253 </p><p>  mov al, 11111100b</p><p>  out 21h, al</p><p>  mov

32、al, 00110110b</p><p>  out 43h, al</p><p>  mov ax,432h ;定時器的時鐘頻率為1.193187MHz,計數(shù)初值= 1193187/ 100=11932</p><p>  out 40h, al</p><p>  mov al, ah</p><p>  ou

33、t 40h, al</p><p><b>  sti</b></p><p>  s1: call locate_cursor</p><p><b>  call show</b></p><p>  mov ah, 0bh ; 檢驗鍵盤狀態(tài),有輸入al=00,無輸入al=0ffh</p&

34、gt;<p><b>  int 21h</b></p><p><b>  inc al ;</b></p><p><b>  jnz s1</b></p><p>  mov ah, 08h ; 鍵盤輸入無回顯,al= 輸入字符</p><p><b&

35、gt;  int 21h</b></p><p>  cmp al, 1bh ;按下Esc 鍵結(jié)束程序</p><p><b>  je goout</b></p><p>  cmp al, 'p' ;按下'p'鍵停止計時</p><p><b>  je paus

36、e</b></p><p>  cmp al, 'P' ;按下'p'鍵停止計時</p><p><b>  je pause</b></p><p>  cmp al, 'c' ;按下c 鍵清零</p><p><b>  je clear</b

37、></p><p>  cmp al, 'C' ;按下c 鍵清零</p><p><b>  je clear</b></p><p><b>  jmp s1</b></p><p>  clear: pop ax</p><p>  out 21h,

38、al</p><p>  pop dx ;把bx 送到dx</p><p><b>  pop bx</b></p><p><b>  push ds</b></p><p><b>  mov ds,bx</b></p><p>  mov al,0

39、8h</p><p>  mov ah,25h</p><p><b>  int 21h</b></p><p><b>  pop ds</b></p><p>  mov hou1, 30h</p><p>  mov hou2, 30h</p><

40、p>  mov min1, 30h</p><p>  mov min2, 30h</p><p>  mov sec1, 30h</p><p>  mov sec2, 30h</p><p>  mov msec1, 30h</p><p>  mov msec2, 30h</p><p&

41、gt;<b>  jmp start</b></p><p><b>  pause:</b></p><p><b>  pop ax</b></p><p>  out 21h,al</p><p>  pop dx ;把bx 送到dx,原中斷向量存在ES:BX 中<

42、/p><p><b>  pop bx</b></p><p><b>  push ds</b></p><p><b>  mov ds,bx</b></p><p>  mov al,08h</p><p>  mov ah,25h</p>

43、<p><b>  int 21h</b></p><p><b>  pop ds</b></p><p>  aa1:mov ah, 08h ; 鍵盤輸入無回顯,al= 輸入字符</p><p><b>  int 21h</b></p><p>  cmp

44、al, 1bh ;按下Esc 鍵結(jié)束程序</p><p><b>  je goout</b></p><p>  cmp al, 'g' ;按下g 鍵繼續(xù)程序</p><p><b>  je jixu</b></p><p>  cmp al, 'G' ;按下g

45、鍵繼續(xù)程序</p><p><b>  je jixu</b></p><p><b>  jmp aa1</b></p><p><b>  jixu:</b></p><p><b>  jmp q1</b></p><p>&

46、lt;b>  goout:</b></p><p><b>  pop ax</b></p><p>  out 21h,al</p><p>  pop dx ;把bx 送到dx</p><p>  pop ds ;把es 送到ds</p><p>  mov ax, 2508

47、h</p><p><b>  int 21h</b></p><p>  mov al, 00110110b</p><p>  out 43h, al</p><p>  sub al, al</p><p>  out 40h, al</p><p>  out 40

48、h, al</p><p>  mov ah, 4ch</p><p><b>  int 21h</b></p><p>  int08h proc near ; 使用8253/8254 定時器0 的中斷類型8 計時,以100 次/s 的頻率發(fā)出中斷,相當(dāng)于一次中斷10ms</p><p><b>  pus

49、h ax</b></p><p><b>  push ds</b></p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p><b>  inc msec2</b></p><p>

50、  cmp msec2, 3ah</p><p><b>  jb t</b></p><p>  mov msec2,30h</p><p><b>  inc msec1</b></p><p>  cmp msec1,3ah</p><p><b>  jb

51、t</b></p><p>  mov msec1,30h</p><p><b>  inc sec2</b></p><p>  cmp sec2,3ah</p><p><b>  jb t</b></p><p>  mov sec2,30h</p&

52、gt;<p><b>  inc sec1</b></p><p>  cmp sec1,36h</p><p><b>  jb t</b></p><p>  mov sec1,30h</p><p><b>  inc min2</b></p>

53、<p>  cmp min2,3ah</p><p><b>  jb t</b></p><p>  mov min2,30h</p><p><b>  inc min1</b></p><p>  cmp min1,36h</p><p><b>

54、  jb t</b></p><p>  mov min1,30h</p><p><b>  inc hou2</b></p><p>  cmp hou2,3ah</p><p><b>  jb t</b></p><p>  mov hou2,30h<

55、;/p><p><b>  inc hou1</b></p><p>  cmp hou1,36h</p><p><b>  jb t</b></p><p>  mov hou1,30h</p><p>  t: mov al,20h</p><p>

56、  out 20h,al ; 中斷結(jié)束命令</p><p><b>  pop ds</b></p><p><b>  pop ax</b></p><p>  iret ;中斷返回</p><p>  int08h endp ;中斷服務(wù)程序結(jié)束</p><p>  cle

57、an_screen proc near</p><p><b>  push ax</b></p><p><b>  push bx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></

58、p><p>  mov ah, 06h ;屏幕初始化或向上滾動</p><p>  mov al, 00h ;清屏</p><p>  mov bh, 00h ;滾入行屬性</p><p>  mov ch, 00h ;左上角行號</p><p>  mov cl, 00h ;左上角列號</p><p&

59、gt;  mov dh, 24h ;右下角行號</p><p>  mov dl, 79h ;右下角列號</p><p><b>  int 10h</b></p><p><b>  pop dx</b></p><p><b>  pop cx</b></p>

60、<p><b>  pop bx</b></p><p><b>  pop ax</b></p><p><b>  ret</b></p><p>  clean_screen endp</p><p>  locate_cursor proc near<

61、/p><p><b>  push dx</b></p><p><b>  push bx</b></p><p><b>  push ax</b></p><p>  mov dh, 12h ;行號</p><p>  mov dl, 33h ;列號&

62、lt;/p><p>  mov bh, 00h ;頁號</p><p>  mov ah, 20h ;置光標(biāo)位置</p><p><b>  int 10h</b></p><p><b>  pop ax</b></p><p><b>  pop bx</b&

63、gt;</p><p><b>  pop dx</b></p><p><b>  ret</b></p><p>  locate_cursor endp</p><p>  show proc near</p><p><b>  push cx</b&

64、gt;</p><p><b>  push bx</b></p><p><b>  push si</b></p><p><b>  push ax</b></p><p>  mov si, offset hou1</p><p>  mov c

65、x, 0506h</p><p><b>  show1:</b></p><p>  mov bl,07h</p><p>  mov ah, 0eh;顯示字符(光標(biāo)前移),al 字符,bl 前景色</p><p>  mov al, [si]</p><p><b>  int 10

66、</b></p><p><b>  inc si</b></p><p>  loop show1</p><p><b>  pop ax</b></p><p><b>  pop si</b></p><p><b>  p

67、op bx</b></p><p><b>  pop cx</b></p><p><b>  ret</b></p><p><b>  show endp</b></p><p><b>  code ends</b></p>

68、<p><b>  end start</b></p><p><b>  倒計時程序:</b></p><p>  stack segment ;定義堆棧段stack</p><p>  db 100 dup(?)

69、 ;分配堆棧段的大小</p><p>  stack ends ;堆棧段結(jié)束</p><p>  data segment ;定義數(shù)據(jù)段data</p&g

70、t;<p>  IN_BUF: db 100 dup(0) ;定義數(shù)據(jù)</p><p>  SEC_60: db 0 ;60秒計時寄存器</p><p>  SEC_1: db ?</p><p>  Stop_Flag:db ?</p><p>  data

71、 ends ;數(shù)據(jù)段結(jié)束</p><p>  code segment 'code' ;定義代碼段</p><p>  assume cs:code,ds:data,ss:stack ;確定CS/DS/S

72、S指向的邏輯段</p><p>  start: mov ax,ss</p><p><b>  mov sp,ax</b></p><p>  mov ax,data ;設(shè)置數(shù)據(jù)段的段地址DS</p><p><b>  mov d

73、s,ax</b></p><p><b>  mov cl,60</b></p><p><b>  mov al,0</b></p><p><b>  mov dl,0</b></p><p>  mov ah,2ch</p><p>&

74、lt;b>  int 21h</b></p><p><b>  mov al,dh</b></p><p><b>  loop:</b></p><p><b>  mov ah,1</b></p><p><b>  int 16h</b

75、></p><p><b>  jnz loop1</b></p><p><b>  mov ah,0</b></p><p><b>  int 16h</b></p><p>  mov al,Stop_Flag</p><p><b&

76、gt;  inc al</b></p><p><b>  and al,1</b></p><p>  mov dl,al</p><p><b>  loop1:</b></p><p>  mov al,Stop_Flag</p><p><b>

77、;  or al,1</b></p><p><b>  jnz loop</b></p><p>  mov ah,2ch</p><p><b>  int 21h</b></p><p><b>  mov al,al</b></p><p

78、><b>  cmp al,dh</b></p><p><b>  jz loop</b></p><p><b>  mov al,dh</b></p><p><b>  mov al,cl</b></p><p><b>  dec

79、 al</b></p><p><b>  jnz loop</b></p><p>  mov ax,4c00h ;返回DOS</p><p><b>  int 21h</b></p><p>  code e

80、nds ;代碼段結(jié)束</p><p><b>  ;子程序代碼</b></p><p>  end start ;匯編結(jié)束,程序起始</p><p><b>  八、實驗

81、結(jié)果截圖</b></p><p>  運行程序后得到的初始界面如下:</p><p>  如下圖為在鍵盤上按下“s”鍵時的圖像:</p><p>  在計時器正常工作時按下“p”鍵可以使其時間暫停,得到如下圖像:</p><p>  在計時器被暫停的情況下,按下“g”鍵即可實現(xiàn)繼續(xù)計時的功能。其圖像如下:</p>&

82、lt;p>  在計時器正常運行顯示計時動態(tài)時間的時候,按下“c”鍵可以清零,以便進行進行第二次計時,其圖像如下:</p><p><b>  九、心得體會</b></p><p>  經(jīng)過兩個星期的課程設(shè)計,的確收獲了很多,感覺自己對于微機原理與接口技術(shù)這門</p><p>  程有了更加深刻的認(rèn)識。因為把平時所學(xué)的知識應(yīng)用于實踐真的會遇

83、到很多問題,當(dāng)然也會發(fā)現(xiàn)很多樂趣在其中??梢哉f整個設(shè)計中最麻煩的就是設(shè)置中斷頻率為100Hz,同時使其能夠進入中斷服務(wù)子程序執(zhí)行計時功能。這個就要不斷的多次調(diào)試才能發(fā)現(xiàn)到問題究竟出在哪里。解決了這個問題之后對于如何暫停計時器也想了好多辦法,也調(diào)試了很多次。最終通過將原中斷向量入口地址進行修改,使其不再進入計時中斷服務(wù)子程序就達(dá)到了要求。進位條件的判斷,編程中仔細(xì)思考也就沒有問題。另外對于中斷服務(wù)子程序的類型設(shè)置問題,由于以前對這個概念的

84、理解記得不清楚,于是找出課本再次進行研究。在程序設(shè)計和算法實現(xiàn)上要多方面思考,全面的考慮問題,最好畫好程序流程圖,這樣就能達(dá)到事半功倍的效果。同時上機調(diào)試也是十分重要的,在調(diào)試的過程中能夠不斷的發(fā)現(xiàn)在編寫算法時應(yīng)該注意的一些細(xì)節(jié)和算法語句的非法使用,在調(diào)試過程中通過對算法的不斷測試、更正、擴充功能、修飾細(xì)節(jié),使算法程序不斷的得到完善。通過這次的課程設(shè)計使我認(rèn)識到要將微機原理與接口技術(shù)這門專業(yè)課學(xué)好不僅僅是要把書上的基本知識學(xué)好而且還要不

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論