匯編 判斷閏年 課程設(shè)計(jì)報(bào)告.doc
《匯編 判斷閏年 課程設(shè)計(jì)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《匯編 判斷閏年 課程設(shè)計(jì)報(bào)告.doc(17頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 課程設(shè)計(jì)說(shuō)明書 題目: 判斷閏年 院 系: 計(jì)算機(jī)科學(xué)與工程學(xué)院 專業(yè)班級(jí): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 2010 年 12 月 30 日 安徽理工大學(xué)課程設(shè)計(jì)(論文)任務(wù)書 計(jì)算機(jī)科學(xué)與工程學(xué)院 硬件 教研室 學(xué) 號(hào) 學(xué)生姓名 專業(yè)
2、(班級(jí)) 設(shè) 計(jì) 題 目 題目一:判斷閏年√ 題目二: 簡(jiǎn)單計(jì)算器 題目三: 代碼轉(zhuǎn)換程序 題目四:字符圖形程序 題目五: 學(xué)生成績(jī)管理 題目六: 打字練習(xí) (注:請(qǐng)?jiān)谧约哼x做的題目后打√) 設(shè) 計(jì) 技 術(shù) 參 數(shù) 1. 熟悉匯編指令、宏匯編語(yǔ)言的編程方法 2. BIOS中斷調(diào)用、系統(tǒng)功能中斷調(diào)用方法 3. 磁盤文件、及文件內(nèi)容操作 設(shè) 計(jì) 要 求 題目的選擇是根據(jù)匯編語(yǔ)言的特點(diǎn)主要針對(duì)系統(tǒng)內(nèi)部的一些中斷調(diào)用、系統(tǒng)功能調(diào)用、系統(tǒng)數(shù)據(jù)處理、文件數(shù)據(jù)處理而設(shè)計(jì)的,是對(duì)所學(xué)課程知識(shí)較為系統(tǒng)的應(yīng)用。 由于匯編語(yǔ)言編程相對(duì)其他語(yǔ)言編
3、程比較復(fù)雜,因此,在設(shè)計(jì)上應(yīng)把重點(diǎn)放在程序的功能實(shí)現(xiàn)上,不要太在意程序的結(jié)構(gòu)和顯示界面的設(shè)計(jì)。不要局限于題目所規(guī)定的要求,可以靈活裁減,設(shè)計(jì)出功能更完善的程序。 另外,也可以自己設(shè)計(jì)題目,同時(shí),提出詳細(xì)的功能描述,經(jīng)指導(dǎo)老師審查同意后也可作為課程設(shè)計(jì)的題目。 工 作 量 1. 完成所選題目的軟件設(shè)計(jì); 2. 課程設(shè)計(jì)說(shuō)明書1000字(不包括程序源代碼)左右。 工 作 計(jì) 劃 第1次熟悉軟件環(huán)境。第2次繪制程序流程圖。第3次用編寫程序。 第4次用調(diào)試運(yùn)行程序。第5次編寫課程設(shè)計(jì)說(shuō)明書 參 考 資 料 1.李敬兆 8086/8088和arm核匯編語(yǔ)言程序設(shè)計(jì)
4、中國(guó)科技大學(xué)出版社 2.沈美明,溫冬嬋 編著IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版) 清華大學(xué)出版社出版 3. 沈美明,溫冬嬋,張赤紅 編著IBM—PC 匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程 清華大學(xué)出版社出版 指導(dǎo)教師簽字 教研室主任簽字 2010年 12月 17 日 安徽理工大學(xué)課程設(shè)計(jì)(論文)成績(jī)?cè)u(píng)定表 指導(dǎo)教師評(píng)語(yǔ): 成績(jī): 指導(dǎo)教師: 年
5、 月 日 摘要 本程序是用匯編語(yǔ)言編寫的簡(jiǎn)單的判斷閏年的小程序。在運(yùn)行后,屏幕會(huì)提示輸入年份,輸入后程序會(huì)自動(dòng)判斷輸入的年份是否為閏年。判斷某年為閏年的匯編語(yǔ)言表達(dá)式為:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是從鍵盤輸入的年份值。在本程序運(yùn)行后,只要輸入年份就能判斷是否為閏年。完成的主要功能1、在屏幕上顯示提示信息,輸入年份。2、判斷輸入的年份是否為閏年。3、判斷完后返回。 關(guān)鍵詞: AX,BUF,CALL,DATACATE,IFYEARS 目錄
6、1設(shè)計(jì)目的 1 2概要設(shè)計(jì) 2 2.1 系統(tǒng)總體分析 2 2.2 主模塊框圖及說(shuō)明 2 3 詳細(xì)設(shè)計(jì) 3 3.1 主模塊及子模塊說(shuō)明 3 3.2 各模塊詳細(xì)設(shè)計(jì) 3 4.程序調(diào)試 7 4.1 運(yùn)行界面分析 7 4.2 算法的分析 7 4.3 調(diào)試過(guò)程及分析 8 5心得體會(huì) 9 5.1 設(shè)計(jì)體會(huì) 9 5.2 系統(tǒng)改進(jìn) 9 參考文獻(xiàn) 10 I 安徽理工大學(xué)課程設(shè)計(jì)(論文) 1設(shè)計(jì)目的 本次課程設(shè)計(jì)是關(guān)于判斷閏年的程序,既輸入具體的年份,輸出本年是否為閏年的提示信息,然后退出此程序。 本次課程設(shè)計(jì)的目的主要是將課堂上所學(xué)的知識(shí)學(xué)以致用,通過(guò)程序的制作過(guò)
7、程學(xué)習(xí)課外的新知識(shí),并加強(qiáng)加深對(duì)舊知識(shí)的理解與掌握。 2概要設(shè)計(jì) 2.1 系統(tǒng)總體分析 總體設(shè)計(jì)思想本程序是用匯編語(yǔ)言編寫的簡(jiǎn)單的判斷閏年的小程序。在運(yùn)行后,屏幕會(huì)提示輸入年份,輸入后程序會(huì)自動(dòng)判斷輸入的年份是否為閏年。判斷某年為閏年的匯編語(yǔ)言表達(dá)式為:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是從鍵盤輸入的年份值。在本程序運(yùn)行后,只要輸入年份就能判斷是否為閏年。完成的主要功能1、在屏幕上顯示提示信息,輸入年份。2、判斷輸入的年份是否為閏年。3、判斷完后返回。 2.2 主
8、模塊框圖及說(shuō)明 主模塊框圖如圖2-1 圖2-1 本框圖列出了此次課程設(shè)計(jì)的總流程,顯示信息,輸入數(shù)據(jù),判斷格式,判斷閏年和結(jié)束程序??陀^顯示了設(shè)計(jì)的順序結(jié)構(gòu),循環(huán)結(jié)構(gòu)及分支結(jié)構(gòu)。 3 詳細(xì)設(shè)計(jì) 3.1 主模塊及子模塊說(shuō)明 判斷輸入模塊: 模塊是對(duì)輸入的年份的格式的判斷,若是錯(cuò)誤則退出本程序,正確則進(jìn)行下面的操作。 字符串轉(zhuǎn)換格式模塊: 此模塊是將數(shù)字字符串轉(zhuǎn)換成數(shù)字,以便進(jìn)行下面的模塊。 判斷閏年模塊: 此模塊是判斷輸入的年份是否為閏年,若是則輸出“This is a leap year!”,若不是則輸出“This is not a leap year!”,然后退
9、出。 3.2 各模塊詳細(xì)設(shè)計(jì) 定義數(shù)據(jù)段,將輸入的數(shù)據(jù)放到buf中。 data segment ;定義數(shù)據(jù)段 infon db 0dh,0ah,Please input a year: $ i db 0dh,0ah,quit"q" $ Y db 0dh,0ah,This is a leap year! $ N db 0dh,0ah,This is not a leap year! $ e db 0dh,0ah,no year! $ w dw 0 buf db 8 db ? db
10、8 dup(?) data ends 將地址放到al中,然后取出字符串里面的每一個(gè)字符與回車鍵比較相等則跳轉(zhuǎn)到a5,不等與‘9’比較,比‘9’大跳轉(zhuǎn)到a0,不等與‘0’比較,比‘0’小,跳轉(zhuǎn),否則指向下一個(gè)字符。 zm: mov al,[di] cmp al,0dh jz a5 cmp al,9 jg a0 cmp al,0 jl a0 inc di jmp zm 將zm跳轉(zhuǎn)的字符串放到a5中通過(guò) datacate和ifyears兩個(gè)子程序 檢驗(yàn)其是否為閏
11、年,是(CF=1)執(zhí)行a1,否(CF=0)執(zhí)行a2,然后跳轉(zhuǎn)到結(jié)束段。 a5: call datacate call ifyears jnc a2 ;有進(jìn)位 jc a1 ;無(wú)進(jìn)位 a1: lea dx,y a2: lea dx,n 輸出“q”,執(zhí)行退出功能,結(jié)束本實(shí)驗(yàn)。 exit: mov ah,0 int 16h cmp ah,71h
12、 mov ah,4ch int 21h ret datacate子程序?qū)⒆址D(zhuǎn)換為數(shù)字存到w變量中。 datacate proc near ;用于把表示年份的字符串轉(zhuǎn)換為數(shù)值 push cx; ;進(jìn)棧操作,保存cx,即字符個(gè)數(shù) dec cx ;讓cx寄存器自減1 lea si,buf+2 ;把字符串的首地址保存在源地址寄存器SI中
13、 tt1: inc si ;si寄存器中內(nèi)容增1 loop tt1 ;loop是循環(huán)語(yǔ)句 pop cx ;出棧操作,與55行進(jìn)棧操作相呼應(yīng) mov dh,30h mov bl,10 mov ax,1 l1: push ax ;入棧操作, sub byte ptr [si],dh ;由于字符是ASC
14、II碼表示的,因此減去30H后即可轉(zhuǎn)換為十六進(jìn)制數(shù) mul byte ptr [si] ;計(jì)算ax乘以字符數(shù)字 add w,ax ;把計(jì)算結(jié)果累加,并保存在w中 pop ax ;出棧操作,去除上一次操作后的倍數(shù) mul bl ;乘以bl,計(jì)算當(dāng)前的倍數(shù) dec si ;修改源地址寄存器si的值 loop l1
15、 ;循環(huán)直到所有字符處理完畢 ret ;子程序返回指令 datacate endp ifyears子程序是判斷閏年的模塊,將數(shù)據(jù)與“4”相除,若dx不為“0”跳轉(zhuǎn)到la1,令CF=1否與“100”,相除,若dx不為“0”跳轉(zhuǎn)到la2,令CF=0否與“400” 相除,若dx為“0”跳轉(zhuǎn)到la2,令CF=1否則CF=0 ifyears proc near ;此子程序用來(lái)判斷年份是否為閏年 push bx ;將寄存器實(shí)行入棧操作是為了保存寄存器狀態(tài)
16、 push cx push dx mov ax,w ;把轉(zhuǎn)換后的年份的數(shù)值存入AX mov cx,ax ;把AX中存儲(chǔ)的年份的數(shù)值存入CX,作用是復(fù)制一個(gè)年份數(shù)值, mov dx,0 ;把0存放到寄存器dx中 mov bx,4 ;把4存放到寄存器bx中(除數(shù)) div bx ;除法指令 cmp dx,0
17、 ;將dx中的余數(shù)與0進(jìn)行比較,看似否整除 jnz lab1 ;JNZ用來(lái)判斷比較的結(jié)果,如果有不等的數(shù)據(jù)則跳轉(zhuǎn)。(zf=1則轉(zhuǎn)移) mov ax,cx ;將前面復(fù)制到cx寄存器中的年份的數(shù)值傳給ax mov bx,100 ;將100賦給bx寄存器,做div的源操作數(shù) mov dx,0 div bx cmp dx,0 ;將dx中的余數(shù)與0進(jìn)行比較,
18、看似否整除 jnz lab2 ;JNZ用來(lái)判斷比較的結(jié)果,如果有不等的數(shù)據(jù)則跳轉(zhuǎn)。(zf=1則轉(zhuǎn)移) ;判斷年份是否位400的整數(shù)倍 mov ax,cx mov bx,400 mov dx,0 div bx cmp dx,0 jz lab2 lab1: clc ;清除進(jìn)位標(biāo)志,即非閏年(進(jìn)位標(biāo)志用于標(biāo)志
19、是否為閏年) jmp lab3 ;jmp無(wú)條件轉(zhuǎn)移 lab2: stc ;設(shè)置進(jìn)位標(biāo)志,即閏年 lab3: pop dx ;出棧操作,寄存器狀態(tài)。 pop cx pop bx ret ;子程序返回指令 ifyears endp 4.程序調(diào)試 4.1 運(yùn)行界面分析 初始界面:如圖4-1 圖4-1 按照提示輸入年份如2004按回
20、車執(zhí)行程序,界面如圖4-2 圖4-2 顯示“This is a leap year!”若不是閏年則顯示,如圖4-3 圖4-3 若輸入錯(cuò)誤則顯示如圖4-4 圖4-4 最后按提示輸入“q”退出本程序。 4.2算法的分析 本程序主要是將各個(gè)模塊組合來(lái)完成一個(gè)目標(biāo)及判斷閏年。通過(guò)主程序的調(diào)集子程序,將各個(gè)子程序的功能整合起來(lái),完成實(shí)驗(yàn)?zāi)康摹? 4.3 調(diào)試過(guò)程及分析 (1)此程序中隊(duì)buf的地址地存放了解不夠,它是從第二位開始的,在編譯過(guò)程中,使顯示總是錯(cuò)誤。 (2)本程序用了很多的跳轉(zhuǎn),如:jz、jg、jl等,使用時(shí)要注意防止它們跳轉(zhuǎn)的格式,使用范圍,如:
21、jg、jl它們是帶符號(hào)位比較轉(zhuǎn)移指令。 5心得體會(huì) 5.1 設(shè)計(jì)體會(huì) 將近一周的課程設(shè)計(jì),使我了解了匯編語(yǔ)言的基本的編程,雖然這次設(shè)計(jì)的只是一個(gè)小程序,但是這其間我還是學(xué)到了不少東西。在這次課程設(shè)計(jì)的過(guò)程,我得到來(lái)自老師以及同學(xué)們的幫助和鼓勵(lì),致使最后圓滿完成預(yù)期任務(wù)。 在設(shè)計(jì)過(guò)程中在做這個(gè)課程設(shè)計(jì)過(guò)程中,我深深感受到自己所掌握知識(shí)還是不足,已掌握也不牢固是遇到的一些棘手的問(wèn)題不能解決,比如,buf地址的移動(dòng),年份的字符串轉(zhuǎn)換為數(shù)值,判斷閏年的語(yǔ)法實(shí)現(xiàn)等問(wèn)題,但是,我通過(guò)詢問(wèn)同學(xué),以及查詢資料最終獲得了解決,由此我們深刻體會(huì)到,只有在實(shí)際編程我們才能認(rèn)識(shí)到自己的不足,才能進(jìn)而進(jìn)行彌補(bǔ)來(lái)
22、使自己的編程水平有所提高。這次課程設(shè)計(jì)也加深了對(duì)匯編語(yǔ)言這門課的認(rèn)識(shí),匯編語(yǔ)言課程主要是研究軟件到硬件的程序設(shè)計(jì)問(wèn)題,它是計(jì)算機(jī)能夠提供給用戶使用的最快而又最有效的用語(yǔ)言,也是能夠利用計(jì)算機(jī)所有硬件特性并直接控制硬件的唯一語(yǔ)言。并且通過(guò)本次課程設(shè)計(jì),我的思維能力、綜合應(yīng)用能力和專業(yè)素質(zhì)得到提高。 本程序雖然已經(jīng)完成了課程設(shè)計(jì)的需求,但是就應(yīng)用上來(lái)說(shuō)還是不完整的。由于時(shí)間倉(cāng)促,故只提出一些改進(jìn)的思想。最后,感謝老師,以及同學(xué)們對(duì)我的幫助。 5.2 系統(tǒng)改進(jìn) 由于時(shí)間比較緊,對(duì)程序的設(shè)計(jì)還不夠完美,只是設(shè)計(jì)出了程序的大體功能。對(duì)于界面還有待繼續(xù)設(shè)計(jì)。在以后完善程序的過(guò)程中,可以加上運(yùn)行一次程
23、序多次判斷閏年等功能,此功能可通過(guò)利用選擇語(yǔ)句來(lái)判斷程序是否繼續(xù)執(zhí)行跳轉(zhuǎn)來(lái)重新進(jìn)行本程序,并且系統(tǒng)還有很多地方需要去改善,使其更為簡(jiǎn)潔易懂。 參考文獻(xiàn) [1] 李敬兆, 8086/8088和arm核匯編語(yǔ)言程序設(shè)計(jì) 中國(guó)科技大學(xué)出版社 [2] 陳夠喜等著,微機(jī)原理應(yīng)用實(shí)驗(yàn)教程. 北京:人民郵電出版社,2006. [3] 劉全忠,匯編語(yǔ)言實(shí)用程序.天津:天津大學(xué)出版社,1991.6. [4] 劉樂(lè)善,微型計(jì)算機(jī)接口技術(shù)及應(yīng)用.武漢:華中科技大學(xué)出版社,2004. [5] 譚硫安 張雪蘭,windows匯編語(yǔ)言程序設(shè)計(jì)教程:電子工業(yè)大學(xué)出版社,2005.4 [6] 張光長(zhǎng),匯編語(yǔ)言程序設(shè)計(jì):北京大學(xué)出版社,2009.7 [7] 沈美明,溫冬嬋 編著IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版) 清華大學(xué)出版社 [8] 周荷琴,微型計(jì)算機(jī)與接口技術(shù).合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2004.12. -10-
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案