基于匯編語(yǔ)言的閏年判斷程序設(shè)計(jì)_第1頁(yè)
基于匯編語(yǔ)言的閏年判斷程序設(shè)計(jì)_第2頁(yè)
基于匯編語(yǔ)言的閏年判斷程序設(shè)計(jì)_第3頁(yè)
基于匯編語(yǔ)言的閏年判斷程序設(shè)計(jì)_第4頁(yè)
基于匯編語(yǔ)言的閏年判斷程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于匯編語(yǔ)言的閏年判斷程序設(shè)計(jì)第一章 設(shè)計(jì)方案一、 設(shè)計(jì)內(nèi)容根據(jù)提示信息輸入任意年份,編寫判斷閏年的程序,如果是閏年,則在屏幕上顯示“Y”,否則顯示“N”。二、 設(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ù)的ASC碼值比其本身大30H的關(guān)系),利用判斷某年是否為閏年的表達(dá)式,輸入該年是否為閏年的信息。三、 算法分析閏年計(jì)算是一個(gè)非常經(jīng)典的問題,在學(xué)習(xí)各種語(yǔ)言時(shí)都會(huì)遇到這個(gè)問題,用來(lái)判斷某年是否為閏年。具體算法為如果該年份的數(shù)值正整數(shù)若能被100整除,又能被400整除,或者

2、不能被100整除,卻能被4整除,則該數(shù)值代表的年份為閏年。四、 程序流程圖本框圖列出了此次課程設(shè)計(jì)的總流程,顯示信息,輸入數(shù)據(jù),判斷格式,判斷閏年和結(jié)束程序??陀^顯示了設(shè)計(jì)的順序結(jié)構(gòu),循環(huán)結(jié)構(gòu)及分支結(jié)構(gòu)。圖2-1 程序流程圖第二章 程序設(shè)計(jì)一、 程序分析主程序:顯示提示輸入年份以及輸入的字符內(nèi)容,和最后輸出的判斷。子程序:1. 判斷輸入:該模塊是對(duì)輸入的年份的格式的判斷,若是錯(cuò)誤則顯示錯(cuò)誤Error,正確則進(jìn)行下面的操作。2. 字符串轉(zhuǎn)換格式:將數(shù)字字符串轉(zhuǎn)換成數(shù)字,以便進(jìn)行下面的程序操作。3. 判斷閏年:判斷輸入的年份是否為閏年,若是則輸出“This is a leap year!”,若不是

3、則輸出“This is not a leap year!”,然后退出。二、 匯編程序data segment inbuff db 5,?,5 dup(?) prompt db Please input the year:,$ errmsg db Input illegal!,$ yes db is a leap year,$ no db is not a leap year,$ mess db Continue?(y/n):,$ newline db 13,10,$ ;回車換行data ends code segment main proc far assume cs:code,ds:data

4、 start: push ds sub ax,ax push ax mov ax,data mov ds,ax lop0: call input call judge lea dx,mess mov ah,09h int 21h ;是否繼續(xù)輸入年份的判斷 mov ah,01h int 21h cmp al,n je exit continue: lea dx,newline mov ah,09h int 21h jmp lop0 exit: ret main endp ;輸入一個(gè)具體的年份,并轉(zhuǎn)換成10進(jìn)制 ;返回: ;(ax)=輸入的年份 input proc near push bx pu

5、sh cx push dx s1: lea dx,prompt mov ah,09h int 21h ;提示輸出 lea dx,inbuff mov ah,0ah int 21h ;鍵盤輸入 mov dl,byte ptr inbuff1 ;把有效地址為inbuff的字節(jié)送給dl cmp dl,4 ;輸入的值判斷是否為4位數(shù) jne error ;調(diào)用輸入不合條件時(shí)的錯(cuò)誤處理 mov cx,4 lea bx,inbuff add bx,2 mov ax,0 mov dx,0 lop1: ;檢查輸入有效性 mov dl,10 mul dl mov dl,byte ptr bx sub dl,30

6、h ;將字符轉(zhuǎn)化為數(shù)值 cmp dl,0 jb error cmp dl,9 ja error add ax,dx inc bx ;循環(huán)體中字符在字符串中的位置bx+1 loop lop1 jmp s2 error: ;錯(cuò)誤處理 lea dx,newline mov ah,09h int 21h lea dx,errmsg mov ah,09h int 21h lea dx,newline mov ah,09h int 21h jmp s1 s2: mov cx,ax lea dx,newline mov ah,09h int 21h mov ax,cx pop dx pop cx pop b

7、x ;現(xiàn)場(chǎng)恢復(fù) ret input endp ;判斷一個(gè)年份是否閏年 ;輸入: ;(ax)=年份 judge proc near push bx push cx push dx push ax ;保存ax;輸出要判斷的年份 mov cx,4 lea bx,inbuff add bx,2 lop2: mov dl,byte ptr bx mov ah,02h int 21h inc bx loop lop2 ;循環(huán)輸出年份正確時(shí)結(jié)果中的年份 lop3: pop ax mov dx,0 mov cx,ax ;保存ax到cx中 mov bx,4 ;判斷是否能被4整除 div bx cmp dx,0

8、jne notleap mov ax,cx mov bx,100 ;判斷是否能被100整除 div bx cmp dx,0 jne isleap mov ax,cx mov bx,400 ;判斷是否能被400整除 div bx cmp dx,0 jne notleap isleap: lea dx,yes mov ah,09h int 21h jmp s3 notleap: lea dx,no mov ah,09h int 21h s3: ;換行 lea dx,newline mov ah,09h int 21h ;輸出年份正確時(shí)結(jié)果的剩余部分 pop dx pop cx pop bx ret

9、 judge endp code ends end start 第三章 程序調(diào)試 在MF2KI軟件中調(diào)試,運(yùn)行上面的程序,初始界面:如圖4-1圖4-1輸入年份2008執(zhí)行程序,回車換行,則顯示2008 is leap year;并給出是否繼續(xù)的提示,輸入y,屏幕繼續(xù)顯示提示輸入語(yǔ)句;如果輸入錯(cuò)誤,如abcd則顯示Input illegal !并提示用戶繼續(xù)輸入年份,知道輸入正確年份為止;輸入2010,回車換行,則顯示2001 is not leap year;并給出是否繼續(xù)的提示,輸入n,則顯示屏幕關(guān)閉,程序結(jié)束。運(yùn)行界面:如圖4-2圖4-2利用 DOS 21H中斷類型的10號(hào)鍵盤功能調(diào)用,將從鍵盤接收的年份數(shù)值型字符串按字節(jié)存入緩沖區(qū)。將字符串中的每個(gè)字

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論