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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  課程名稱:微機原理與匯編語言</p><p>  設計題目: 系統(tǒng)時期時間的顯示與設置 </p><p>  院 系: 計算機科學與技術學院 </p>

2、<p>  專 業(yè): 計算機科學與技術 </p><p>  班 級: </p><p>  姓 名: </p><p>  學 號:

3、 </p><p>  日 期: 2010年10月18日-2010年10月20日 </p><p>  指導教師: </p><p>  成 績: </p><p>  第一章 需求分析

4、1</p><p>  1.本課程設計題目1</p><p>  2.本課程設計要求與任務1</p><p>  3.課程設計思想1</p><p>  4. 軟硬件開發(fā)環(huán)境1</p><p><b>  5.開發(fā)工具1</b></p><p>  第二章 概要設

5、計3</p><p><b>  1.分析3</b></p><p>  2.設計(系統(tǒng)結構圖如下:)4</p><p>  第三章 詳細設計5</p><p>  1.子程序信息表5</p><p><b>  2.段的設計5</b></p>&l

6、t;p><b>  3.主程序設計6</b></p><p><b>  4.子程序設計6</b></p><p>  第四章 調試與運行10</p><p>  第五章 總結與體會11</p><p><b>  第六章 致謝11</b></p>

7、<p>  第七章 參考文獻11</p><p><b>  需求分析</b></p><p><b>  1.本課程設計題目</b></p><p>  系統(tǒng)時期時間的顯示與設置</p><p>  2.本課程設計要求與任務</p><p> ?。?)人機界面

8、友好,如可以采用以下顯示菜單形式:</p><p> ?。?)編寫代碼,實現以上功能。</p><p> ?。?)各功能分別要采用子程序實現。</p><p><b>  3.課程設計思想</b></p><p>  本次試驗主要思想是模塊化程序設計,就是對于不同的模塊分開設計,主模塊調用(call)子模塊。最開始應該是

9、人機相互界面的設計,直接放在數據段再顯示就可以了。再就是相應的進入各個不同的子程序了。顯示日期或時間可用相似的函數進行設計,而最困難的應該在于設置。包括對輸入數字的判斷,數字的存儲,數字的顯示。并設計相應的操作界面。</p><p>  4. 軟硬件開發(fā)環(huán)境</p><p>  Windows操作系統(tǒng),虛擬的dos環(huán)境,Masm For Windows 集成實驗環(huán)境2007.3。用戶程序的

10、編輯、編譯、連接、運行和修改的全過程都在一個集成的環(huán)境中完成,大大提高了編程的效率,并以全屏幕窗口環(huán)境的形式供用戶使用。</p><p><b>  5.開發(fā)工具</b></p><p>  實驗程序的開發(fā)工具包括編輯器、編譯系統(tǒng)、連接程序和調試程序。</p><p> ?。?)編輯器采用全屏幕多窗口編輯器,復制,粘貼,裁減十分方便。</

11、p><p> ?。?)編譯系統(tǒng) Masm For Windows軟件包括匯編語言的編譯系統(tǒng),在集成環(huán)境中進行程序的編譯(匯編)、連接、運行與調試。</p><p> ?。?)連接程序 采用link。</p><p> ?。?)調試程序 全屏幕調試程序,直觀全面,使用方便。以上應用程序(實驗程序)開發(fā)工具,集成在集成開發(fā)環(huán)境(中,用戶只需在集成開發(fā)環(huán)境全屏幕窗口中,

12、點擊主菜單的相應菜單項,即可隨時啟用。</p><p><b>  第二章 概要設計</b></p><p><b>  1.分析</b></p><p>  該課程設計采用17個子程序,主函數內調用2個子程序實現。</p><p>  有兩個人機界面: </p><p>

13、<b>  函數中調用的關系:</b></p><p>  主函數main調用顯示人機界面的menu函數和判斷字符的check函數;</p><p>  Menu中調用數據段設定的界面show函數;</p><p>  Show函數調用清屏函數clrscr_screen;</p><p>  在check函數中分別調用相

14、應的功能函數sub1—sub5;</p><p>  (5)函數sub1、sub2分別調用清屏函數clrscr_screen、顯示數據段函數show、顯示年月的斜線函數showxiexian或顯示時間的冒號函數showmaohao、顯示日期和時間的函數sub_method</p><p> ?。?)函數sub3、sub4分寫調用清屏函數clrscr_screen、顯示數據段函數show、顯

15、示年月的斜線函數showxiexian或顯示時間的冒號函數showmaohao、設置實時時鐘日期或時鐘并在指定區(qū)域顯示數字的showset函數、寫入日期或時間的字符,保存在數據的緩沖區(qū)的write函數;</p><p> ?。?)函數sub_method包含有顯示時的延時函數delay和從RAM的制定單元讀出數據并輸出至顯存的指定區(qū)域的read函數;</p><p> ?。?)函數writ

16、e能根據用戶的要求對應相應功能,包括有幾個設置實時時鐘日期或時鐘并在指定區(qū)域顯示數字的showset函數、延時函數delay,返回主界面的mian函數、恢復修改了的顯示字符數據的緩沖區(qū)的clrscr_setdatabuffer函數。</p><p>  2.設計(系統(tǒng)結構圖如下:)</p><p><b>  第三章 詳細設計</b></p><p

17、><b>  1.子程序信息表</b></p><p><b>  2.段的設計</b></p><p>  數據段與堆棧段的設計如下:</p><p>  data segment</p><p>  menudata db "******************

18、*****" ;人機界面的主界面數據段</p><p>  db "* 1: Display Date *"</p><p>  db "* 2: Display Time *"</p><p>  db "* 3: Set Date *"<

19、/p><p>  db "* 4: Set Time *"</p><p>  db "* 5: Exit *" </p><p>  db "***********************"</p><p>  showdata

20、 db "***********************" ;人機界面的二級界面數據段</p><p>  db "* *"</p><p>  db "***********************"</p><p>  db "* E

21、nter(q) to quit! *"</p><p>  db "* Enter(r) to return!*"</p><p>  db "* Enter(s) to set *"</p><p>  db "*(backspace) to modify*"</p>

22、;<p>  db "***********************"</p><p>  datedata db 9,8,7 ;設置顯示的單元信息: 年:(9) 月:(8) 日:(7) </p><p>  timedata db 4,2,0 ;設置顯示的單元信息: 時

23、:(4) 分:(2) 秒:(0)</p><p>  setdate db "yymmdd" ;顯示時的友好字</p><p>  settime db "hhmmss" </p><p>  setdatabuffer db

24、 "------!" ;顯示字符數據的緩沖區(qū)</p><p>  errordata db " error!" ;提示錯誤輸入的數據</p><p>  bufferdata db 3 dup(?)

25、 ;暫時保存數據的緩沖區(qū)</p><p>  data ends</p><p>  stack segment</p><p>  dw 100 dup (0) ;??臻g的定義</p><p>  stack ends</

26、p><p><b>  3.主程序設計</b></p><p>  assume cs:code,ds:data,ss:stack</p><p>  code segment</p><p>  main proc</p><p>  mov ax,0b800h</p><

27、;p>  mov es,ax ;設置顯存的段地址</p><p>  mov bp,160*12+2*25 ;設置顯存的偏移地址</p><p>  mov ax,data </p><p>  mov ds,

28、ax </p><p>  mov di,0 ;數據段的初始化</p><p>  mov ax,stack</p><p>  mov ss,ax

29、 ;設置棧</p><p>  mov sp,200 ;設置棧頂</p><p>  call menu ;顯示人機界面的主界面 </p><p><b> 

30、 mov ah,0</b></p><p>  int 16h ;讀取從鍵盤輸入的字符</p><p>  call check ;對輸入的字符的字符進行判</p><p>  jmp main

31、 ;繼續(xù)運行</p><p>  main endp</p><p><b>  4.子程序設計</b></p><p><b> ?。?)check </b></p><p>  ;功能:對從鍵盤輸入的字符進行判斷</

32、p><p>  ;入口參數:(al)=從鍵盤輸入的字符的ASCII碼</p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:cmp指令對應相應的數字按鍵調用相應的子程序sub1—sub5</p><p><b> ?。?)menu </b></p><p

33、>  ;功能:顯示人機界面的主界面</p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:調用show函數</p><p><b> ?。?)show</b></p><p>  ;功能:顯示指定行

34、數的23列的數據段</p><p>  ;入口參數:(dx)=行數 , (si)=數據段的偏移地址 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:把si存儲的偏移地址放入es段中,dx中的行數傳到cx中,循環(huán)cx次,一一顯示數據段的數據</p><p> ?。?)showset

35、 </p><p>  ;功能:設置實時時鐘日期或時鐘時,在指定區(qū)域顯示友好字母</p><p>  ;入口參數:(si)=顯示時的友好字母的偏移地址 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:把si存儲的偏移地址放入es段中,每次顯示2個數字,由cx控制,再循環(huán)3次,顯示

36、6個數字</p><p> ?。?)showmaohao</p><p>  ;功能:在指定區(qū)域顯示冒號</p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:冒號放入es中,依次放入兩次</p><p&g

37、t; ?。?)showxiexian </p><p>  ;功能:在指定區(qū)域顯示斜線</p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:斜線放入es中,依次放入兩次</p><p><b> ?。?)sub1&

38、lt;/b></p><p>  ;功能:Display Date</p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:人機二界面的偏移地址放入si中,調用show函數,調用showxiexian函數,把顯示單元信息的數據段偏移地址放入si中

39、,再調用 sub_method函數</p><p><b>  (8)sub2</b></p><p>  ;功能:Display Time</p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:人機二界

40、面的偏移地址放入si中,調用show函數,調用showmaohao函數,把顯示單元信息的數據段的偏移地址放入si中,再調用sub_method函數</p><p><b> ?。?)sub3</b></p><p>  ;功能:Set Date</p><p>  ;入口參數:無 </p><p><b>

41、  ;出口參數:無</b></p><p>  ;主要算法:分別調用show、showxiexian和write函數,將暫時保存數據的緩沖區(qū)寫入指定的寄存器,年月日分別放入cl、dh、dl中</p><p><b> ?。?0)sub4</b></p><p>  ;功能:Set Time</p><p> 

42、 ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:分別調用show、showmaohao和write函數,將暫時保存數據的緩沖區(qū)寫入指定的寄存器,時分秒分別放入ch、cl、dh中</p><p><b> ?。?1)sub5</b></p><p

43、><b>  ;功能:Exit</b></p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b></p><p> ?。?2)sub_method</p><p>  ;功能: Display Date or Time</p><p

44、>  ;入口參數:(si)=設置顯示的單元信息的偏移地址 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:把si設置顯示的單元信息的偏移地址送入dl,調用read函數,并用cx控制循環(huán)。</p><p><b> ?。?3)write</b></p><p&

45、gt;  ;功能: 寫入Set Date or Time的字符,保存在數據的緩沖區(qū)</p><p>  ;入口參數:(si)=顯示字符數據的緩沖區(qū)的偏移地址 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:cmp指令判斷輸入是否為0—9之間的數值,在判斷緩沖區(qū)是否已滿,未滿編寫如ds:si中,再把字

46、符數據緩沖區(qū)的偏移地址放入si中,調用showset函數顯示。cmp指令判斷人機二界面的輸入操作,進入相應的操作。將輸入的字符每兩個以BCD碼的形式保存在暫時保存數據的緩沖區(qū)。最后調用clrscr_screen函數恢復修改了的顯示字符數據緩沖區(qū)</p><p><b>  ;流程圖:</b></p><p><b> ?。?4)read</b>&

47、lt;/p><p>  ;功能:從CMOS RAM的指定單元讀出數據,并輸出至顯存的指定的區(qū)域</p><p>  ;入口參數:(dl)=單元數 </p><p><b>  ;出口參數:無</b></p><p>  ;主要算法:dl單元數放入a l中,再從CMOS RAM的al 號單元讀出BCD碼,顯示(ah)+30h

48、和(al)+30h對應的碼字符,ah為十位的數值,al為個位的數值,再把數值放入es中</p><p>  (15)clrscr_setdatabuffer </p><p>  ;功能:恢復修改了的顯示字符數據的緩沖區(qū)</p><p>  ;入口參數:無 </p><p><b>  ;出口參數:無</b><

49、/p><p>  ;主要算法:把修改后的顯示字符的緩沖區(qū)setdatasuffer段地址傳送給si寄存器,cx為6控制循環(huán)</p><p> ?。?6)clrscr_screen</p><p><b>  ;功能:清屏</b></p><p>  ;入口參數:無 </p><p><b&g

50、t;  ;出口參數:無</b></p><p>  ;主要算法:把空格放入數據段,再一一顯示出來。由cx控制循環(huán)。</p><p><b> ?。?7)delay</b></p><p><b>  ;功能:延時</b></p><p>  ;入口參數:無 </p>&

51、lt;p><b>  ;出口參數:無</b></p><p><b>  第四章 調試與運行</b></p><p>  在dos下輸入生成的可執(zhí)行文件,運行</p><p>  屏幕顯示如下圖所示:</p><p>  出現人機交互界面,即一個小菜單</p><p>

52、  選擇3或4進行設置日期與時間:</p><p><b>  第五章 總結與體會</b></p><p>  最開始看到這個實驗課題時,我覺得無從下手。因為就我對匯編程序的理解,實在是不足以完成這個實驗。以前上課的時候也做過一些實驗,就是對課堂學習的指令進行實際操作,編寫小的程序,如數據及字符串的讀寫、加減乘除,了解數據在存儲器中是如何存儲的。經過反復的思考,結合書

53、本知識,發(fā)現這個課題的核心是使用模塊化程序設計的思想。對于時間和日期的現實與設置是通過主函數調用來實現的。雖然對于模塊化程序設計的思想了解了,但是對于如何設置與顯示時間和日期,還是覺得不好實現。于是我再次對課題進行深入的研究,首先確定為了實現這一系統(tǒng)要設計哪些子模塊,根據每個子模塊的功能及各模塊之間的聯系確定其入口參數和出口參數。還有對于數據處理的步驟及其存儲進行分析。</p><p>  經過不斷地查找資料以及

54、反復的思考設計,最終實現整個系統(tǒng)的功能,我學到了很多東西。以前課堂上學的基礎知識,要結合起來實現某種現實有用的功能不是件容易的事。首先要了解其原理,其次要了解數據在存儲器中的存儲和轉換成所需的格式的方法。模塊化的設計使得整個開發(fā)過程條理化,更清晰,從而避免了許多不必要的誤區(qū)。</p><p>  同時,離散的指令只有運用到實際程序中才能有更好的了解。所以,不管什么知識,要理論結合實際才能掌握的更牢固。 <

55、/p><p><b>  第六章 致謝</b></p><p>  非常感謝老師細心指導,在實踐中培養(yǎng)了我不畏艱難險阻,勇往直前的精神。學習知識,鍛煉了能力,再次感謝老師的悉心教誨!</p><p><b>  第七章 參考文獻</b></p><p>  1. 錢曉捷,新版匯編語言程序設計,電子工業(yè)出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論