版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 微機原理課程設計說明書</p><p> 2012 級 電氣工程及其自動化 專業(yè) 1206972 班級</p><p> 題 目 判斷某一年是否為閏年 </p><p> 二О一二 年 十二 月 十二 日</p><p><b> 摘要</b>&l
2、t;/p><p> 隨著科學技術的迅速發(fā)展,微機的應用越來越普遍,在此設計中利用DOS 21H中斷類型的10號鍵盤功能調(diào)用,將從鍵盤接收的表示年份數(shù)值的字符串按字節(jié)存入緩沖區(qū)。將字符串中的每個字符轉(zhuǎn)換為對應的十進制數(shù)值(利用0-9這10個數(shù)的ASCll碼值比其本身大30H的關系),利用判斷某年是否為閏年的表達式,輸出該年是否為閏年的信息。</p><p> 解決本問題的關鍵是找到判斷閏年的
3、方法。判斷閏年的規(guī)則是:如果某一年能被4整除但不能被100整除或者該年能被400整除,則該年為閏年。</p><p> 判斷某年是否為閏年的匯編語言的表達式為:</p><p> (((AX)MOD 4 EQ 0)AND((AX)MOD 100 NE 0))OR((AX)MOD 400 EQ 0)</p><p> 關鍵詞:判斷閏年 中斷 字符串輸
4、入輸出</p><p> 一、判斷某一年是否為閏年的基本原理 </p><p> 本設計是根據(jù)閏年的計算方法,利用匯編語言編寫的一個簡單的判斷閏年的程序。根據(jù)判斷閏年規(guī)則:如果某年能被4整除但不能被100整除或者該年能被400整除,則該年為閏年,否則不是閏年。在本程序運行后,只要從鍵盤輸入年份,通過計算后,就能輸出該年份是否為閏年的信息。</p><p><
5、;b> 二、設計方案</b></p><p> 2.1設計程序流程圖</p><p><b> 否</b></p><p><b> 是</b></p><p><b> 否</b></p><p> 是
6、 </p><p><b> 是</b></p><p> 閏年計算設計程序流程圖 </p><p><b> 2.2設計說明</b></p><p> 如圖1閏年計算程序流程圖所示,程序開始運行以后,首先屏幕輸出提示語,提示
7、用戶輸入一個年份。用戶輸入年份后,程序?qū)⑤斎氲淖址D(zhuǎn)換為數(shù)值。設計利用乘法的操作,實現(xiàn)字符之間的10倍數(shù)值轉(zhuǎn)換關系。將年份字符轉(zhuǎn)換成數(shù)值后,則進行是否是閏年的判斷。首先將年份除以4,若不能整除,則判斷為不是閏年,屏幕將輸出該年不是閏年的信息,并提示用戶是否繼續(xù)下一個年份的判斷,如果用戶輸入‘n’則表示不需要繼續(xù),程序?qū)⑼顺觯駝t繼續(xù)下一個年份的判斷;若能整除4,則該年份將繼續(xù)除以100,若不能整除,則判斷為是閏年,屏幕將輸出該年是閏年的
8、信息,并提示用戶是否繼續(xù)下一個年份的判斷,若不需要繼續(xù),程序?qū)⑼顺觯駝t繼續(xù)下一個年份的判斷;若能整除100,則該年份將繼續(xù)除以400,若能整除,則判斷為是閏年,屏幕將輸出該年是閏年的信息,并提示用戶是否繼續(xù)下一個年份的判斷,若不需要繼續(xù),程序?qū)⑼顺?,否則繼續(xù)下一個年份的判斷;若不能整除400,則判斷為不是閏年,屏幕將輸出該年不是閏年的信息,并提示用戶是否繼續(xù)下一個年份的判斷,若不需要繼續(xù),程序?qū)⑼顺?,否則繼續(xù)下一個年份的判斷。<
9、/p><p><b> 三、軟件設計</b></p><p><b> 3.1代碼段定義:</b></p><p> 代碼段需要定義欲顯示的字符串,且字符串以‘$’作為結束標志,還需定義欲輸入字符串的緩沖區(qū),緩沖區(qū)的第一個字節(jié)存放能保存的最大字符數(shù),第二個字節(jié)存放實際輸入的字符數(shù),用戶從鍵盤輸入的字符從第三個字節(jié)開始存放
10、,直到用戶輸入回車鍵為止。 </p><p> 本設計代碼段定義如下:</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號鍵盤功能調(diào)用,在屏幕輸出提示用戶輸入年份的提示。首先,
14、將要顯示的字符串放在內(nèi)存數(shù)據(jù)區(qū)中,本設計提示語顯示程序代碼如下:</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號鍵盤功能調(diào)用,將從鍵盤接收的表示年份數(shù)值的字符串按字節(jié)存儲緩沖區(qū)。首先,應在內(nèi)存中建立一個輸入緩沖區(qū),如inbuff db 5,?,5 dup(?)。本設計字符串輸入程序代碼如下: </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個數(shù)的ASCII碼值比其本身大30H的關系,將字符串中的每個字符轉(zhuǎn)換為對應的十進制數(shù)值。本設計數(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> 利用判斷某年是否為閏年的表達式,輸出該年是否為閏年的信息。</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號鍵盤功能調(diào)用,在屏幕輸出提示用戶輸入年份的提示。本設計年份輸出顯示程序代碼如下:</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> 設計源
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> 五、結論</
40、b></p><p> 經(jīng)過這次課程設計,大大地提高了我的分析解決問題的能力,在這一過程中,我根據(jù)課程設計題目所給定的總題要求,獨立設計、分析和調(diào)試程序,在面對問題時,能夠耐心思考,解決了很多問題,從中也學到了很多書面上所沒有講明的問題。在運用匯編語言理論知識去解決問題時,也對以前學過的知識點有更深一層的了解。 </p><p> 雖然在設計的過程中遇到了很多問題,但最后通過自己
41、的思考與詢問他人,我成功的完成了整體設計要求。經(jīng)過多次的修改完成了畫出了設計流程圖。接下來根據(jù)流程圖完成了程序的編寫,程序編完后用了一段時間對程序進行調(diào)試。在調(diào)試的過程中,遇到了一些問題,剛開始程序并不能很好的運行,經(jīng)過錯誤分析與不斷修改,最后解決了問題,程序能夠正常運行并輸出正確的結果。通過本次實驗,我對循環(huán)語句、分支語句和子程序有了進一步的了解,明確了它們各自的功能及具體的運用情況。在實驗中體現(xiàn)出對指令不熟練,因此應該在以后的學習中
42、進一步的學習,編出實現(xiàn)功能更好的,讓自己滿意的程序來。</p><p> 我通過這次課程設計,深刻地認識到學好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了自己的學習成果。設計的整個過程,鍛煉了我們的思考與運用知識的能力,并且學習到做研究的耐心與專注力,要有一絲不茍的態(tài)度,科學不可有半點馬虎。這次課程設計,讓我學到了很多有用的知識,對我以后的學習有很大的幫助與提高。總之,我在這次課程設計中受益匪淺。
43、 </p><p><b> 六、參考文獻</b></p><p> [1] 余春暄.80x86/Pentium微機原理及接口技術.北京:機械工程出版社,2008</p><p> [2] 張榮標.微型計算機原理與接口技術.北京:機械工業(yè)出版社,2008</p><p> [3] 王爽.匯編語言.北京:清華大學
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《匯編語言》課程設計報告--判斷閏年程序
- 判斷系統(tǒng)穩(wěn)定性課程設計
- 課程設計--ca6140拔叉的加工工藝及某一工序?qū)S脢A具設計
- 數(shù)電課程設計報告--設計一個按鍵陣列判斷電路
- 課程設計---判斷完全二叉樹
- 如何判斷雞蛋是否新鮮
- 課程設計--ca6140車床法蘭盤加工工藝規(guī)程及某一工序?qū)S脢A具設計
- 一、課程設計背景
- 行車(一)課程設計
- 數(shù)字電路課程設計---數(shù)字密碼判斷電路
- 課程設計---完全二叉樹的判斷
- 如何判斷離合器特性是否為多級減震或一般減震
- 如何判斷家庭財務是否健康
- 《路面工程》課程設計(一)
- 課程設計---設計判斷素數(shù)的函數(shù)和家庭賬務管理程序
- 幾個標準判斷黑痣是否會癌變
- 傳感器課程設計-- 公共汽車門是否關閉檢測裝置
- 沖壓課程設計統(tǒng)一模板
- 地鐵與輕軌課程設計一
- 計算機網(wǎng)絡課程設計--判斷ip地址的合法性及子網(wǎng)判斷
評論
0/150
提交評論