匯編 判斷閏年 課程設計報告_第1頁
匯編 判斷閏年 課程設計報告_第2頁
匯編 判斷閏年 課程設計報告_第3頁
匯編 判斷閏年 課程設計報告_第4頁
匯編 判斷閏年 課程設計報告_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、埃簌以工大擘課程設計說明書題目:判斷閏年院 系:計算機科學與工程學院專業(yè)班級:學 號:學生姓名:指導教師:2010年 12月 30日安徽理工大學課程設計(論文)任務書計算機科學與工程學院硬件教研室學號學生姓名專業(yè)(班級)設 計 題 目題目一:判斷閏年J題目二:簡單計算器題目三:代碼轉換程序題目四:字符圖形程序題目五:學生成績管理題目六:打字練習(注:請在自己選做的題目后打J)設 計 技 術 參 數熟悉匯編指令、宏匯編語言的編程方法BIOS中斷調用、系統(tǒng)功能中斷調用方法磁盤文件、及文件內容操作設 計 要 求題目的選擇是根據匯編語言的特點主要針對系統(tǒng)內部的一些中斷調用、系統(tǒng)功能調 用、系統(tǒng)數據處理

2、、文件數據處理而設計的,是對所學課程知識較為系統(tǒng)的應用。 由于匯編語言編程相對其他語言編程比較復雜,因此,在設計上應把重點放在程序 的功能實現上,不要太在意程序的結構和顯示界面的設計。不要局限于題目所規(guī)定 的要求,可以靈活裁減,設計出功能更完善的程序。另外,也可以自己設計題目,同時,提出詳細的功能描述,經指導老師審查同意后 也可作為課程設計的題目。工 作 量完成所選題目的軟件設計;課程設計說明書1000字(不包括程序源代碼)左右。工 作 計 劃第1次熟悉軟件環(huán)境。第2次繪制程序流程圖。第3次用編寫程序。第4次用調試運行程序。第5次編寫課程設計說明書參 考 資 料李敬兆8086/8088和arm

3、核匯編語言程序設計中國科技大學出版社沈美明,溫冬嬋編著IBMPC匯編語言程序設計(第二版)清華大學出版社 出版沈美明,溫冬嬋,張赤紅 編著IBMPC匯編語言程序設計實驗教程 清華大 學出版社出版指導教師簽字教研室主任簽字安徽理工大學課程設計(論文)成績評定表摘要本程序是用匯編語言編寫的簡單的判斷閏年的小程序。在運行后,屏幕會提示輸入年份,輸入 后程序會自動判斷輸入的年份是否為閏年。判斷某年為閏年的匯編語言表達式為:(AX) MOD 4 EQ 0) AND (AX) MOD 100 EQ 0) OR (AX) MOD 400 EQ 0其中,(AX)中存放的是從鍵盤輸入的年份 值。在本程序運行后,

4、只要輸入年份就能判斷是否為閏年。完成的主要功能1、在屏幕上顯示提示 信息,輸入年份。2、判斷輸入的年份是否為閏年。3、判斷完后返回。關鍵詞: AX, BUF, CALL, DATACATE, IFYEARS目錄 TOC o 1-5 h z HYPERLINK l bookmark5 o Current Document 1設計目的1 HYPERLINK l bookmark8 o Current Document 2概要設計2 HYPERLINK l bookmark11 o Current Document 2.1系統(tǒng)總體分析2 HYPERLINK l bookmark14 o Curren

5、t Document 2.2主模塊框圖及說明2 HYPERLINK l bookmark17 o Current Document 3詳細設計3 HYPERLINK l bookmark20 o Current Document 3.1主模塊及子模塊說明3 HYPERLINK l bookmark23 o Current Document 3.2各模塊詳細設計3 HYPERLINK l bookmark26 o Current Document 4.程序調試7 HYPERLINK l bookmark29 o Current Document 4.1運行界面分析7 HYPERLINK l bo

6、okmark32 o Current Document 4.2算法的分析7 HYPERLINK l bookmark35 o Current Document 4.3調試過程及分析8 HYPERLINK l bookmark40 o Current Document 5心得體會9 HYPERLINK l bookmark43 o Current Document 5.1設計體會9 HYPERLINK l bookmark46 o Current Document 5.2系統(tǒng)改進9 HYPERLINK l bookmark49 o Current Document 參考文獻101設計目的本次課程

7、設計是關于判斷閏年的程序,既輸入具體的年份,輸出本年是否為閏年的 提示信息,然后退出此程序。本次課程設計的目的主要是將課堂上所學的知識學以致用,通過程序的制作過程學 習課外的新知識,并加強加深對舊知識的理解與掌握。2概要設計2.1系統(tǒng)總體分析總體設計思想本程序是用匯編語言編寫的簡單的判斷閏年的小程序。在運行后,屏 幕會提示輸入年份,輸入后程序會自動判斷輸入的年份是否為閏年。判斷某年為閏年的 匯編語言表達式為:(AX) MOD 4 EQ 0) AND (AX) MOD 100 EQ 0) OR (AX) MOD 400 EQ 0)其中,(AX)中存放的是從鍵盤輸入的年份值。在本程序運行后,只要輸

8、入年份就 能判斷是否為閏年。完成的主要功能1、在屏幕上顯示提示信息,輸入年份。2、判斷 輸入的年份是否為閏年。3、判斷完后返回。2.2主模塊框圖及說明主模塊框圖如圖2-13詳細設計3.1主模塊及子模塊說明判斷輸入模塊:模塊是對輸入的年份的格式的判斷,若是錯誤則退出本程序,正確則進行下面的操 作。字符串轉換格式模塊:此模塊是將數字字符串轉換成數字,以便進行下面的模塊。判斷閏年模塊:此模塊是判斷輸入的年份是否為閏年,若是則輸出“This is a leap year!”,若 不是則輸出“ This is not a leap year!”,然后退出。3.2各模塊詳細設計定義數據段,將輸入的數據放到

9、buf中。data segment ;定義數據段infon db 0dh,0ah,Please input a year: $i db 0dh,0ah,quitq $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 0buf db 8db ?db 8 dup(?)data ends將地址放到al中,然后取出字符串里面的每一個字符與回車鍵比較相等則跳轉到 &5,不等與9比較,比9大跳轉到a0,不等與0比較,比0小,跳轉, 否則指向下一個字符。z

10、m:mov al,dicmp al,0dhjz a5cmp al,9jg a0cmp al,0jl a0inc dijmp zm將zm跳轉的字符串放到a5中通過datacate和ifyears兩個子程序 檢驗其是 否為閏年,是(CF=1)執(zhí)行al,否(CF=0)執(zhí)行a2,然后跳轉到結束段。a5:call datacatecall ifyearsjnc a2 ;有進位jc a1 ;無進位a1:lea dx,ya2:lea dx,n輸出“q”,執(zhí)行退出功能,結束本實驗。exit:mov ah,0int 16hcmp ah,71hmov ah,4ch int 21h retdatacate子程序將字

11、符串轉換為數字存到w變量中。datacate proc near;用于把表示年份的字符串轉換為數值push cx;進棧操作,保存cx,即字符個數dec cx;讓cx寄存器自減1lea si,buf+2 ;把字符串的首地址保存在源地址寄存器SI中tt1:inc si;si寄存器中內容增1loop tt1;loop是循環(huán)語句pop cx;出棧操作,與55行進棧操作相呼應mov dh,30hmov bl,10mov ax,111:push ax;入棧操作,sub byte ptr si,dh ;由于字符是ASCII碼表示的,因此減去30H 后即可轉換為十六進制數mul byte ptr si ;計算

12、ax乘以字符數字add w,ax;把計算結果累加,并保存在w中pop ax;出棧操作,去除上一次操作后的倍數mul bl;乘以bl,計算當前的倍數dec si;修改源地址寄存器si的值loop l1;循環(huán)直到所有字符處理完畢ret;子程序返回指令datacate endpifyears子程序是判斷閏年的模塊,將數據與“4”相除,若dx不為“0”跳轉到 la1,令CF=1否與“100”,相除,若dx不為“0”跳轉到la2,令CF=0否與“400”相 除,若dx為“0”跳轉到la2,令CF=1否則CF=0ifyears proc near;此子程序用來判斷年份是否為閏年push bx;將寄存器實行

13、入棧操作是為了保存寄存器狀態(tài)push cxpush dxmov ax,w;把轉換后的年份的數值存入AXmov cx,ax;把AX中存儲的年份的數值存入CX,作用是復制一個年份數值,mov dx,0;把0存放到寄存器dx中mov bx,4;把4存放到寄存器bx中(除數)div bx;除法指令cmp dx,0;將dx中的余數與0進行比較,看似否整除jnz lab1;JNZ用來判斷比較的結果,如果有不等的數據則跳轉。(zf=1則轉移)mov ax,cx;將前面復制到cx寄存器中的年份的數值傳給axmov bx,100 mov dx,0 div bx cmp dx,0 jnz lab2 則跳轉。(zf

14、=1則轉移)mov ax,cx mov bx,400 mov dx,0 div bx cmp dx,0 jz lab2 labl:clc 志是否為閏年)jmp lab3 lab2: stc lab3: pop dxpop cx pop bx ret ifyears endpmov bx,100 mov dx,0 div bx cmp dx,0 jnz lab2 則跳轉。(zf=1則轉移)mov ax,cx mov bx,400 mov dx,0 div bx cmp dx,0 jz lab2 labl:clc 志是否為閏年)jmp lab3 lab2: stc lab3: pop dxpop

15、cx pop bx ret ifyears endp;將dx中的余數與0進行比較,看似否整除;JNZ用來判斷比較的結果,如果有不等的數據;判斷年份是否位400的整數倍;清除進位標志,即非閏年(進位標志用于標;jmp無條件轉移;設置進位標志,即閏年;出棧操作,寄存器狀態(tài)。;子程序返回指令4 .程序調試4.1運行界面分析初始界面:如圖4-1圖4-1按照提示輸入年份如2004按回車執(zhí)行程序,界面如圖4-2圖4-2顯示“This is a leap year! ”若不是閏年則顯示,如圖4-34-3若輸入錯誤則顯示如圖4-3若輸入錯誤則顯示如圖4-4圖4-4最后按提示輸入“勺”退出本程序。4.2算法的分

16、析本程序主要是將各個模塊組合來完成一個目標及判斷閏年。通過主程序的調集子程 序,將各個子程序的功能整合起來,完成實驗目的。4.3調試過程及分析(1)此程序中隊buf的地址地存放了解不夠,它是從第二位開始的,在編譯過程中, 使顯示總是錯誤。(2)本程序用了很多的跳轉,如:jz、jg、jl等,使用時要注意防止它們跳轉的格式, 使用范圍,如:jg、jl它們是帶符號位比較轉移指令。5心得體會5.1設計體會將近一周的課程設計,使我了解了匯編語言的基本的編程,雖然這次設計的只是一 個小程序,但是這其間我還是學到了不少東西。在這次課程設計的過程,我得到來自老 師以及同學們的幫助和鼓勵,致使最后圓滿完成預期任

17、務。在設計過程中在做這個課程設計過程中,我深深感受到自己所掌握知識還是不足, 已掌握也不牢固是遇到的一些棘手的問題不能解決,比如,buf地址的移動,年份的字 符串轉換為數值,判斷閏年的語法實現等問題,但是,我通過詢問同學,以及查詢資料 最終獲得了解決,由此我們深刻體會到,只有在實際編程我們才能認識到自己的不足, 才能進而進行彌補來使自己的編程水平有所提高。這次課程設計也加深了對匯編語言這 門課的認識,匯編語言課程主要是研究軟件到硬件的程序設計問題,它是計算機能夠提 供給用戶使用的最快而又最有效的用語言,也是能夠利用計算機所有硬件特性并直接控 制硬件的唯一語言。并且通過本次課程設計,我的思維能力、綜合應用能力和專業(yè)素質 得到提高。本程序雖然已經完成了課程設計的需求,但是就應用上來說還是不完整的。由于時 間倉促,故只提出一些改進的思想。最后,感謝老師,以及同學們對我的幫助。5.2系統(tǒng)改進由于時間比較緊,對程序的設計還不夠完美,只是設計出了程序的大體功能。對于 界面還有待繼續(xù)設計。在以后完善程序的過程中,可以加上運行一次程序多次判斷閏年 等功能,此功能可通過利用選擇語句來判斷程序是否繼續(xù)執(zhí)行跳轉來重新進行本程序, 并且系統(tǒng)還有很多地方需要去改善,使其更為簡潔易懂。

溫馨提示

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

評論

0/150

提交評論