星期判斷微機匯編_第1頁
星期判斷微機匯編_第2頁
星期判斷微機匯編_第3頁
星期判斷微機匯編_第4頁
星期判斷微機匯編_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學號:課程設計題目星期判斷的程序學院自動化學院專業(yè)電氣工程及其自動化班級電氣1304姓名指導教師2015年12月26日課程設計任務書學生姓名:專業(yè)班級:電氣指導教師:工作單位:自動化學院題目:星期判斷的程序初始條件:星期判斷程序輸入年、月、日,能夠判斷當日的星期數,并進行輸出?!部稍O某年的1月1日為起點,注意閏年問題〕;要求完成的主要任務:〔包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求〕設計任務及要求分析方案比擬及認證說明系統(tǒng)原理闡述硬件設計課題需要說明:硬件原理,電路圖,采用器件的功能說明軟件設計課題需要說明:軟件思想,流程圖,源程序及程序注釋調試記錄及結果分析總結參考資料附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實物圖時間安排: 12月3日~12月6日:收集資料,方案選擇12月7日~12月19日:整體流程,程序細節(jié),調試程序12月21日~12月30日:課程設計報告撰寫1月4:交報告,程序演示,辯論指導教師簽名:年月日系主任〔或責任教師〕簽名:年月日目錄TOC\o"1-3"\h\u19317摘

要 據區(qū)里。其次程序的核心轉換思想是運用蔡勒公式W

=

[C/4]

-

2C

+

y

+

[y/4]

+

[13

*

(M+1)

/

5]

+

d

1進行轉換,調用子程序并將最后結果顯示在屏幕上。四、程序框圖開始開始輸入年月日輸入年月日提示錯誤是否提示錯誤是否繼續(xù)判斷正誤判斷正誤 N蔡勒公式進行轉換結束是否繼續(xù)顯示星期 N 蔡勒公式進行轉換結束是否繼續(xù)顯示星期 YN五、源程序及程序注解stacksSEGMENTstackDB200DUP(0)stacksENDSdatasegmentYeardw0Monthdb0Daydb0tempdb10dup(0)countdw?ErrMsgdb0dh,0ah,'Inputwrong!pleaseinputagain!','$'str1db0dh,0ah,'pleaseinputyearmonthday:',0dh,0ah,'$'str2db0dh,0ah,'WhetherornottocontinueinquiriesYes/No',0dh,0ah,'$'weekstr0db'TodayisSunday','$'weekstr1db'TodayisMonday','$'weekstr2db'TodayisTuesday','$'weekstr3db'TodayisWednesday','$'weekstr4db'TodayisThursday','$'weekstr5db'TodayisFriday','$'weekstr6db'TodayisSaturday','$'adw?bdw?ccdw?ddw?wdb0dataends;定義了變量和信息codesegmentassumecs:code,ds:data,ss:stacksstart:movax,datamovds,axleadx,str1;提醒你輸入年月日movah,9h;顯示字符串int21hcallGetYearMonthDay;調用子程序輸入正確的年月日calldisplay;調用子程序通過計算得出星期sel:leadx,str2;提醒你選擇退出程序還是繼續(xù)movah,9hint21hmovah,1;輸入你的選擇〔鍵盤輸入并回顯〕int21hcmpal,'Y'jestartcmpal,'y';輸入y或Y繼續(xù)程序jestartcmpal,'N'jeexitcmpal,'n';輸入n或N退出程序jeexitjmpselexit:movah,4chint21h;退出GetYearMonthDayprocnear;子程序輸入正確的年月日pushaxpushcxpushsipushdi;壓棧inputagain:movYear,0movMonth,0movDay,0movsi,0;把年月日重新歸零repeatY:movah,1;輸入年int21hcmpal,0dh;換行jeEndY;回車結束年的輸入cmpal,20h;判斷是否是是空格鍵SPjeEndY;空格結束年的輸入cmpal,1bh;判斷是否是退出ESCjeExitDos0;退出鍵那么退出程序cmpal,30h;和0比擬jbErr;小于0轉到錯誤提示cmpal,39h;和9比擬jaErr;大于9轉到錯誤提示subal,30h;把讀入的數據轉化為二進制保存到temp[si]中movtemp[si],alincsi;si加1jmprepeatYErr:leadx,ErrMsgmovah,9hint21hmovah,2;顯示輸出movdl,0dhint21h;換行movdl,0ahint21h;回車jmpinputagain;跳回到inputagain重新輸入年月日EndY:movbx,10;把10存入bxmovdi,si;把si的值傳給dimovsi,0;再把si清零NextYBit:movah,0moval,temp[si];再把存在temp[si]中的數據存入almovcount,di;把di中的轉到countsubcount,si;count=count-sideccount;count-1movcx,count;把自減后的count存入cxjcxzskipY;cx為0轉移lopmul:mulbx;*10,主要實現把年按千位,百位,十位,各位存放looplopmul;cx-1循環(huán)skipY:addYear,ax;把ax中存入的年的值賦給yearincsi;si自加1cmpsi,di;比擬si和dijneNextYBit;不相等轉移;主要實現把年按千位,百位,十位,各位存放pushdxmovah,2movdl,0dh;換行int21hmovdl,0ah;回車int21hpopdxjmpskiplap;跳到月的輸入ExitDos0:jmpExitDos退出skiplap:movsi,0;si清零repeatM:movah,1int21hcmpal,0dhjeEndMon;換行cmpal,20hjeEndMon;空格結束輸入cmpal,1bhjeExitDos1;ESC退出程序cmpal,30hjbErr1;小于0報錯cmpal,39hjaErr1subal,30hmovtemp[si],alincsijmprepeatMErr1:jmpErrExitDos1:jmpExitDosEndMon:movdi,si;把si的值傳給dimovsi,0;再把si清零movbl,10;把10存入blNextMBit:moval,temp[si]movcount,disubcount,sideccountmovcx,countjcxzskipMlpmul:mulbllooplpmulskipM:addMonth,alincsicmpsi,dijneNextMBitcmpMonth,12jaErr1pushdxmovah,2movdl,0dh;回車int21hmovdl,0ah;換行int21hpopdxjmpskiplap1skiplap1:movsi,0repeatD:movah,1int21hcmpal,0dhjeEndDaycmpal,20hjeEndDaycmpal,1bhjeExitDoscmpal,30hjbErr2cmpal,39hjaErr2subal,30hmovtemp[si],al;把讀入的數據轉化為二進制保存到temp[si]中incsijmprepeatDErr2:jmpErr1EndDay:movdi,si;把si的值傳給dimovsi,0;再把si清零movbl,10;把10存入blNextDBit:moval,temp[si]movcount,disubcount,sideccountmovcx,countjcxzskipDlpmul1:mulbllooplpmul1skipD:addDay,alincsicmpsi,dijneNextDBitcallGetrightday;調用子程序確定每個月的最大天數moval,[si];把存放器si中的值存入alcmpDay,al;用輸入的day和al比擬jaErr2;假設day大于al那么報錯pushdxmovah,2movdl,0dhint21hmovdl,0ahint21hpopdxpopdipopsipopcxpopaxretExitDos:movah,4chint21hGetYearMonthDayendpGetrightdayprocnear;此子程序用來判斷年份是否為閏年pushbxpushcxPushdxmovsi,offsetwmovax,Yearmovcx,axmovdx,0movbx,4divbxmovb,dxcmpdx,0jnzlab1movax,cx;接著判斷年份是否為100的倍數movbx,100divbxmovcc,dxcmpdx,0jnzlab2movax,cx;再判斷是否為400的倍數movbx,400divbxmovd,dxcmpdx,0jzlab2lab1:;確定平年各月的天數cmpMonth,1jel1cmpMonth,3jel1cmpMonth,5jel1cmpMonth,7jel1cmpMonth,8jel1cmpMonth,10jel1cmpMonth,12jel1cmpMonth,4jel2cmpMonth,6jel2cmpMonth,9jel2cmpMonth,11jel2moval,28mov[si],aljmplab3l1:moval,31mov[si],aljmplab3l2:moval,30mov[si],aljmplab3lab2:cmpMonth,1jel1cmpMonth,3jel1cmpMonth,5jel1cmpMonth,7jel1cmpMonth,8jel1cmpMonth,10jel1cmpMonth,12jel1cmpMonth,4jel2cmpMonth,6jel2cmpMonth,9jel2cmpMonth,11jel2moval,29mov[si],aljmplab3lab3:popdxpopcxpopbxretGetrightdayendpdisplayprocnearcmpmonth,2jglab11addmonth,12subyear,1;小于等于2那么月加12,年再減1再計算lab11:xorax,axxorbx,bxxorcx,cxxordx,dxdecyearmovax,yearmovcx,axmovdx,0movbl,4divbxaddcx,axxorax,axxorbx,bxmovax,yearmovdx,0movbl,100divbxsubcx,axxorax,axxorbx,bxxordx,dxmovax,yearmovbx,400divbxaddcx,axxorax,axmovdx,0movbx,0incmonthmoval,monthmovbl,13mulblxorbx,bxmovbl,5divbxaddcx,axxorax,axxordx,dxcmpmonth,13janoaddd;當此時month大于13時,即月為1、2月時不用考慮加1cmpb,0jnenoadddcmpcc,0jneadddcmpd,0jeadddaddd:addday,1;day+1jmpdodnoaddd:jmpdod;day不用加一dod:moval,dayaddcx,ax;把day送個cxxorax,axxorbx,bxxordx,dxmovax,cxmovbl,7divbxmova,dx;把由公式的來的和除以7,取余cmpa,0jes0cmpa,1jes1cmpa,2jes2cmpa,3jes3cmpa,4jes4cmpa,5jes5leadx,weekstr6movah,9hint21hjmpexit1s0:leadx,weekstr0movah,9hint21hjmpexit1s1:leadx,weekstr1movah,9hint21hjmpexit1s2:leadx,weekstr2movah,9hint21hjmpexit1s3:leadx,weekstr3movah,9hint21hjmpexit1s4:leadx,weekstr4movah,9hint21hjmpexit1s5:leadx,weekstr5movah,9hint21hexit1:retdisplayendpcodeendsendstart六、調試

溫馨提示

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

最新文檔

評論

0/150

提交評論