版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《匯編語言》課程設(shè)計(jì)報(bào)告--判斷閏年程序
- 判斷系統(tǒng)穩(wěn)定性課程設(shè)計(jì)
- 課程設(shè)計(jì)--ca6140拔叉的加工工藝及某一工序?qū)S脢A具設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)報(bào)告--設(shè)計(jì)一個(gè)按鍵陣列判斷電路
- 課程設(shè)計(jì)---判斷完全二叉樹
- 如何判斷雞蛋是否新鮮
- 課程設(shè)計(jì)--ca6140車床法蘭盤加工工藝規(guī)程及某一工序?qū)S脢A具設(shè)計(jì)
- 一、課程設(shè)計(jì)背景
- 行車(一)課程設(shè)計(jì)
- 數(shù)字電路課程設(shè)計(jì)---數(shù)字密碼判斷電路
- 課程設(shè)計(jì)---完全二叉樹的判斷
- 如何判斷離合器特性是否為多級(jí)減震或一般減震
- 如何判斷家庭財(cái)務(wù)是否健康
- 《路面工程》課程設(shè)計(jì)(一)
- 課程設(shè)計(jì)---設(shè)計(jì)判斷素?cái)?shù)的函數(shù)和家庭賬務(wù)管理程序
- 幾個(gè)標(biāo)準(zhǔn)判斷黑痣是否會(huì)癌變
- 傳感器課程設(shè)計(jì)-- 公共汽車門是否關(guān)閉檢測(cè)裝置
- 沖壓課程設(shè)計(jì)統(tǒng)一模板
- 地鐵與輕軌課程設(shè)計(jì)一
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)--判斷ip地址的合法性及子網(wǎng)判斷
評(píng)論
0/150
提交評(píng)論