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

下載本文檔

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

文檔簡介

1、<p>  微機(jī)原理課程設(shè)計(jì)說明書</p><p>  2012 級(jí) 電氣工程及其自動(dòng)化 專業(yè) 1206972 班級(jí)</p><p>  題 目 判斷某一年是否為閏年 </p><p>  二О一二 年 十二 月 十二 日</p><p><b>  摘要</b>&l

2、t;/p><p>  隨著科學(xué)技術(shù)的迅速發(fā)展,微機(jī)的應(yīng)用越來越普遍,在此設(shè)計(jì)中利用DOS 21H中斷類型的10號(hào)鍵盤功能調(diào)用,將從鍵盤接收的表示年份數(shù)值的字符串按字節(jié)存入緩沖區(qū)。將字符串中的每個(gè)字符轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)值(利用0-9這10個(gè)數(shù)的ASCll碼值比其本身大30H的關(guān)系),利用判斷某年是否為閏年的表達(dá)式,輸出該年是否為閏年的信息。</p><p>  解決本問題的關(guān)鍵是找到判斷閏年的

3、方法。判斷閏年的規(guī)則是:如果某一年能被4整除但不能被100整除或者該年能被400整除,則該年為閏年。</p><p>  判斷某年是否為閏年的匯編語言的表達(dá)式為:</p><p>  (((AX)MOD 4 EQ 0)AND((AX)MOD 100 NE 0))OR((AX)MOD 400 EQ 0)</p><p>  關(guān)鍵詞:判斷閏年 中斷 字符串輸

4、入輸出</p><p>  一、判斷某一年是否為閏年的基本原理 </p><p>  本設(shè)計(jì)是根據(jù)閏年的計(jì)算方法,利用匯編語言編寫的一個(gè)簡單的判斷閏年的程序。根據(jù)判斷閏年規(guī)則:如果某年能被4整除但不能被100整除或者該年能被400整除,則該年為閏年,否則不是閏年。在本程序運(yùn)行后,只要從鍵盤輸入年份,通過計(jì)算后,就能輸出該年份是否為閏年的信息。</p><p><

5、;b>  二、設(shè)計(jì)方案</b></p><p>  2.1設(shè)計(jì)程序流程圖</p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p>  是

6、 </p><p><b>  是</b></p><p>  閏年計(jì)算設(shè)計(jì)程序流程圖 </p><p><b>  2.2設(shè)計(jì)說明</b></p><p>  如圖1閏年計(jì)算程序流程圖所示,程序開始運(yùn)行以后,首先屏幕輸出提示語,提示

7、用戶輸入一個(gè)年份。用戶輸入年份后,程序?qū)⑤斎氲淖址D(zhuǎn)換為數(shù)值。設(shè)計(jì)利用乘法的操作,實(shí)現(xiàn)字符之間的10倍數(shù)值轉(zhuǎn)換關(guān)系。將年份字符轉(zhuǎn)換成數(shù)值后,則進(jìn)行是否是閏年的判斷。首先將年份除以4,若不能整除,則判斷為不是閏年,屏幕將輸出該年不是閏年的信息,并提示用戶是否繼續(xù)下一個(gè)年份的判斷,如果用戶輸入‘n’則表示不需要繼續(xù),程序?qū)⑼顺觯駝t繼續(xù)下一個(gè)年份的判斷;若能整除4,則該年份將繼續(xù)除以100,若不能整除,則判斷為是閏年,屏幕將輸出該年是閏年的

8、信息,并提示用戶是否繼續(xù)下一個(gè)年份的判斷,若不需要繼續(xù),程序?qū)⑼顺觯駝t繼續(xù)下一個(gè)年份的判斷;若能整除100,則該年份將繼續(xù)除以400,若能整除,則判斷為是閏年,屏幕將輸出該年是閏年的信息,并提示用戶是否繼續(xù)下一個(gè)年份的判斷,若不需要繼續(xù),程序?qū)⑼顺?,否則繼續(xù)下一個(gè)年份的判斷;若不能整除400,則判斷為不是閏年,屏幕將輸出該年不是閏年的信息,并提示用戶是否繼續(xù)下一個(gè)年份的判斷,若不需要繼續(xù),程序?qū)⑼顺觯駝t繼續(xù)下一個(gè)年份的判斷。<

9、/p><p><b>  三、軟件設(shè)計(jì)</b></p><p><b>  3.1代碼段定義:</b></p><p>  代碼段需要定義欲顯示的字符串,且字符串以‘$’作為結(jié)束標(biāo)志,還需定義欲輸入字符串的緩沖區(qū),緩沖區(qū)的第一個(gè)字節(jié)存放能保存的最大字符數(shù),第二個(gè)字節(jié)存放實(shí)際輸入的字符數(shù),用戶從鍵盤輸入的字符從第三個(gè)字節(jié)開始存放

10、,直到用戶輸入回車鍵為止。 </p><p>  本設(shè)計(jì)代碼段定義如下:</p><p>  DATAS SEGMENT</p><p>  MAXLEN DB 5</p><p>  ACTLEN DB ?</p><p>  YEAR DB

11、 4 DUP(0)</p><p>  YEARALL DW 0</p><p>  NUM400 DW 400</p><p>  NUM100 DW 100</p><p>  NUM4 DW 4</p><p>  NUMMUL

12、 DW 1000,100,10,1</p><p>  MESSAGE1 DB 'please input the year',13,10,'$'</p><p>  MESSAGE2 DB 'the year is run',13,10,'$'</p><p&

13、gt;  MESSAGE3 DB 'the year is ping',13,10,'$'</p><p>  DATAS ENDS</p><p><b>  3.2提示語顯示:</b></p><p>  利用DOS 21H中斷類型09號(hào)鍵盤功能調(diào)用,在屏幕輸出提示用戶輸入年份的提示。首先,

14、將要顯示的字符串放在內(nèi)存數(shù)據(jù)區(qū)中,本設(shè)計(jì)提示語顯示程序代碼如下:</p><p>  MOV AH,09H ;輸出</p><p>  MOV DX,OFFSET MESSAGE1</p><p>  INT 21H </p><p><b>  3.3字符串輸入:</b>&l

15、t;/p><p>  利用DOS 21H中斷類型的10號(hào)鍵盤功能調(diào)用,將從鍵盤接收的表示年份數(shù)值的字符串按字節(jié)存儲(chǔ)緩沖區(qū)。首先,應(yīng)在內(nèi)存中建立一個(gè)輸入緩沖區(qū),如inbuff db 5,?,5 dup(?)。本設(shè)計(jì)字符串輸入程序代碼如下: </p><p>  MOV AH,0AH ;字符串輸入</p><p>  LEA DX,MAX

16、LEN</p><p>  INT 21H</p><p><b>  3.4數(shù)制轉(zhuǎn)換:</b></p><p>  利用0-9這10個(gè)數(shù)的ASCII碼值比其本身大30H的關(guān)系,將字符串中的每個(gè)字符轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)值。本設(shè)計(jì)數(shù)制轉(zhuǎn)換程序代碼如下:</p><p>  MOV CX,4</

17、p><p>  MOV SI,0</p><p>  MOV DI,0</p><p>  MOV YEARALL,0</p><p><b>  NEXT:</b></p><p>  MOV AL,YEAR[SI]</p><p&

18、gt;  SUB AL,30H</p><p><b>  CBW</b></p><p>  MUL NUMMUL[DI]</p><p>  ADD YEARALL,AX</p><p>  INC SI</p><p>  ADD

19、DI,2</p><p>  LOOP NEXT</p><p>  3.5是否為閏年的判斷:</p><p>  利用判斷某年是否為閏年的表達(dá)式,輸出該年是否為閏年的信息。</p><p>  MOV DX,0</p><p>  MOV AX,YEARALL</p>

20、<p>  DIV NUM4</p><p>  CMP DX,0</p><p>  JNZ NO</p><p><b>  CONTINUE:</b></p><p>  MOV DX,0</p><p>  MOV AX

21、,YEARALL</p><p>  DIV NUM100</p><p>  CMP DX,0</p><p>  JNZ YES</p><p>  MOV DX,0</p><p>  MOV AX,YEARALL</p><p>

22、;  DIV NUM400</p><p>  CMP DX,0</p><p>  JZ YES</p><p>  3.6年份輸出顯示:</p><p>  利用DOS 21H中斷類型09號(hào)鍵盤功能調(diào)用,在屏幕輸出提示用戶輸入年份的提示。本設(shè)計(jì)年份輸出顯示程序代碼如下:</p><

23、p><b>  YES:</b></p><p>  MOV AH,09H</p><p>  MOV DX,OFFSET MESSAGE2</p><p>  INT 21H</p><p>  JMP DONE</p><p><b&

24、gt;  NO:</b></p><p>  MOV AH,09H</p><p>  MOV DX,OFFSET MESSAGE3</p><p>  INT 21H</p><p>  JMP DONE </p><p><b>  設(shè)計(jì)源

25、程序</b></p><p>  DATAS SEGMENT</p><p>  MAXLEN DB 5</p><p>  ACTLEN DB ?</p><p>  YEAR DB 4 DUP(0)</p><p>  YEARALL

26、 DW 0</p><p>  NUM400 DW 400</p><p>  NUM100 DW 100</p><p>  NUM4 DW 4</p><p>  NUMMUL DW 1000,100,10,1</p><

27、p>  MESSAGE1 DB 'please input the year',13,10,'$'</p><p>  MESSAGE2 DB 'the year is run',13,10,'$'</p><p>  MESSAGE3 DB 'the year i

28、s ping',13,10,'$'</p><p>  DATAS ENDS</p><p>  STACKS SEGMENT</p><p>  ;此處輸入堆棧段代碼 </p><p>  STACKS ENDS</p><p>  CODES SEGMENT</p>&

29、lt;p>  ASSUME CS:CODES,DS:DATAS,SS:STACKS</p><p>  MAIN PROC FAR</p><p><b>  START:</b></p><p>  PUSH DS</p><p>  SUB AX,AX</p>

30、<p>  PUSH AX</p><p>  MOV AX,DATAS</p><p>  MOV DS,AX</p><p>  MOV AH,09H ;輸出</p><p>  MOV DX,OFFSET MESSAGE1</p><p

31、>  INT 21H</p><p>  MOV AH,0AH ;字符串輸入</p><p>  LEA DX,MAXLEN</p><p>  INT 21H</p><p>  MOV CX,4</p><p>  MOV SI

32、,0</p><p>  MOV DI,0</p><p>  MOV YEARALL,0</p><p><b>  NEXT:</b></p><p>  MOV AL,YEAR[SI]</p><p>  SUB AL,30H</p>

33、;<p><b>  CBW</b></p><p>  MUL NUMMUL[DI]</p><p>  ADD YEARALL,AX</p><p>  INC SI</p><p>  ADD DI,2</p><p>  LOO

34、P NEXT</p><p>  MOV DX,0</p><p>  MOV AX,YEARALL</p><p>  DIV NUM4</p><p>  CMP DX,0</p><p>  JNZ NO</p><p>

35、;<b>  CONTINUE:</b></p><p>  MOV DX,0</p><p>  MOV AX,YEARALL</p><p>  DIV NUM100</p><p>  CMP DX,0</p><p>  JNZ

36、YES</p><p>  MOV DX,0</p><p>  MOV AX,YEARALL</p><p>  DIV NUM400</p><p>  CMP DX,0</p><p>  JZ YES</p><p><

37、b>  YES:</b></p><p>  MOV AH,09H</p><p>  MOV DX,OFFSET MESSAGE2</p><p>  INT 21H</p><p>  JMP DONE</p><p><b>  NO:&

38、lt;/b></p><p>  MOV AH,09H</p><p>  MOV DX,OFFSET MESSAGE3</p><p>  INT 21H</p><p>  JMP DONE</p><p><b>  DONE:</b>&

39、lt;/p><p>  MOV AH,4CH</p><p>  INT 21H</p><p>  MAIN ENDP</p><p>  CODES ENDS</p><p>  END START</p><p><b>  五、結(jié)論</

40、b></p><p>  經(jīng)過這次課程設(shè)計(jì),大大地提高了我的分析解決問題的能力,在這一過程中,我根據(jù)課程設(shè)計(jì)題目所給定的總題要求,獨(dú)立設(shè)計(jì)、分析和調(diào)試程序,在面對(duì)問題時(shí),能夠耐心思考,解決了很多問題,從中也學(xué)到了很多書面上所沒有講明的問題。在運(yùn)用匯編語言理論知識(shí)去解決問題時(shí),也對(duì)以前學(xué)過的知識(shí)點(diǎn)有更深一層的了解。 </p><p>  雖然在設(shè)計(jì)的過程中遇到了很多問題,但最后通過自己

41、的思考與詢問他人,我成功的完成了整體設(shè)計(jì)要求。經(jīng)過多次的修改完成了畫出了設(shè)計(jì)流程圖。接下來根據(jù)流程圖完成了程序的編寫,程序編完后用了一段時(shí)間對(duì)程序進(jìn)行調(diào)試。在調(diào)試的過程中,遇到了一些問題,剛開始程序并不能很好的運(yùn)行,經(jīng)過錯(cuò)誤分析與不斷修改,最后解決了問題,程序能夠正常運(yùn)行并輸出正確的結(jié)果。通過本次實(shí)驗(yàn),我對(duì)循環(huán)語句、分支語句和子程序有了進(jìn)一步的了解,明確了它們各自的功能及具體的運(yùn)用情況。在實(shí)驗(yàn)中體現(xiàn)出對(duì)指令不熟練,因此應(yīng)該在以后的學(xué)習(xí)中

42、進(jìn)一步的學(xué)習(xí),編出實(shí)現(xiàn)功能更好的,讓自己滿意的程序來。</p><p>  我通過這次課程設(shè)計(jì),深刻地認(rèn)識(shí)到學(xué)好專業(yè)知識(shí)的重要性,也理解了理論聯(lián)系實(shí)際的含義,并且檢驗(yàn)了自己的學(xué)習(xí)成果。設(shè)計(jì)的整個(gè)過程,鍛煉了我們的思考與運(yùn)用知識(shí)的能力,并且學(xué)習(xí)到做研究的耐心與專注力,要有一絲不茍的態(tài)度,科學(xué)不可有半點(diǎn)馬虎。這次課程設(shè)計(jì),讓我學(xué)到了很多有用的知識(shí),對(duì)我以后的學(xué)習(xí)有很大的幫助與提高??傊以谶@次課程設(shè)計(jì)中受益匪淺。

43、 </p><p><b>  六、參考文獻(xiàn)</b></p><p>  [1] 余春暄.80x86/Pentium微機(jī)原理及接口技術(shù).北京:機(jī)械工程出版社,2008</p><p>  [2] 張榮標(biāo).微型計(jì)算機(jī)原理與接口技術(shù).北京:機(jī)械工業(yè)出版社,2008</p><p>  [3] 王爽.匯編語言.北京:清華大學(xué)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論