freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

微機與接口技術(shù)課程設(shè)計--萬年歷(已修改)

2025-06-21 23:01 本頁面
 

【正文】 信息科學(xué)與技術(shù)學(xué)院 《微機原理與接口技術(shù)》課程設(shè)計 題目名稱 : 電子萬年歷 學(xué)生姓名 : 湛開洪 學(xué) 號: 2021082191 專 業(yè): 計算機科學(xué)與技術(shù) 班 級 : 09 級( 1)班 指導(dǎo)教師 : 裘祖旗 完成日期: 2021 年 1 月 11 日 微機原理與接口技 術(shù)課程設(shè)計 2 目錄 目錄 一、課程設(shè)計要求 3 二、程序流程圖 3 三、程序主要功能模塊 4 ......................................................................... 4 ..................................................................... 4 ................................................................................. 4 ................................................................. 5 期 ................................................. 5 四、主要技術(shù)路線 6 ........................................................................................ 6 ........................................................................................ 6 ........................................................................................ 7 五、系統(tǒng)的難點及解決方案 8 ................................................................................................ 8 ..................................................................... 8 六、總結(jié)與體會 9 七、參考文獻 9 附錄(源程序) 11 微機原理與接口技 術(shù)課程設(shè)計 3 萬年歷 一、課程設(shè)計要求 DOS 下萬年歷( 8086 匯編) DOS 運行的日歷,支持農(nóng)歷: 1. a. 能實現(xiàn)計時功能 2. 顯示年、月、日、進、分、秒、星期 擴展功能:實現(xiàn)公歷與陰歷轉(zhuǎn)換 二、程序流程圖 微機原理與接口技 術(shù)課程設(shè)計 4 三、程序主要功能模塊 本萬年歷程序正確實現(xiàn)從 1901 年 1 月 1 日至 2050 年 12 月 31 日的公歷與農(nóng)歷查詢,包括公歷年,月,日,星期,農(nóng)歷干支年,月,日。本程序共有一個主過程,二十個子過程, 73 個標(biāo)號, 1460 行, 27185 字,主要分成以下五大 模塊: : 在該模塊的設(shè)計中,主要令其實現(xiàn)程序的界面,即該萬年歷程序的邊框部分。由于該程序做的比較倉促,界面設(shè)計相對簡單,我只是框出一個 7*7 的矩形區(qū)域,每個小區(qū)域都是 3*3(像素大小為 48*48)大小的。其中第一行用于顯示星期信息(日,一,?),以下六行用于分別在相應(yīng)位置顯示一整個月的月歷。 : SETMODE:設(shè)置顯示模式至 INT 10H(AH=00H,AL=12H)的 640*480 圖形 16 色模式 CLEAR:清屏函數(shù),實現(xiàn)將屏幕上卷一屏的功能 WRITEROW:畫出程序主體框架的所有橫線 WRITECOL:畫出程序主體框架的所有豎線 : 在該模塊設(shè)計中,主要在界面中填充非漢字字符,包括標(biāo)題部分,版權(quán)部分,月歷部分,月歷標(biāo)題部分和提示輸入部分。我們知道,月歷中每行最多顯示 7天,而第一行要顯示的天數(shù)是由該月 1 日的星期數(shù)來決定的,而每個月又有可能有 28, 29, 30, 31 天,這樣,導(dǎo)致輸出的月歷中,有可能是 5 行,也有可能是6 行,而我為了簡化程序的流程直接準(zhǔn)備了 6 行的空白來填充公歷的月歷,這就有可能導(dǎo)致有的時候,畫面中最后 一行是空白的,影響顯示效果。 : WRITECHAR:使用 INT 21H(AH 13H)功能,在圖形模式下顯示字符串 WRITENORMAL:調(diào)用 WRITECHAR 子過程,顯示所有非漢字字符串 COVTITLE3:用于將年月日的信息轉(zhuǎn)換成可以輸出的字符串 : 在該模塊設(shè)計中,主要實現(xiàn)漢字字符的顯示,包括星期的標(biāo)題,公歷和農(nóng)歷的提示,公歷的“年”“月”“日”的提示,農(nóng)歷年月日信息的顯示。由于在原來的設(shè)計中,我打算在月歷中的每一個日期下面都輸出它的農(nóng)歷日期,所以 在模塊 1微機原理與接口技 術(shù)課程設(shè)計 5 中畫了較大的矩形框,分配給每個日期 3*3 的矩形。而在實際代碼實現(xiàn)時,我才了解輸出漢字是多么的煩瑣,故索性將農(nóng)歷漢字的輸出改為只是用戶所輸入的那個日期。所以,可以看到,我的界面在中間部分顯得很松散,而右邊,集中了好多的信息,而且我沒有仔細(xì)的設(shè)計輸出的格式,有的情況下,可能漢字的顯示位置會比較難看。 : WRITECCHAR:使用 INT 10H(AH 0CH),利用漢字字模來輸出一個漢字 WRITEABNORMAL:調(diào)用 WRITECCHAR 子過程,來輸出星期提示 WRITELUNARDATA: 調(diào)用 WRITECCHAR 子過程,來輸出農(nóng)歷信息 : 在本模塊設(shè)計中,主要實現(xiàn)了農(nóng)歷數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的填充,包括該日期對應(yīng)的農(nóng)歷年份,即天干地支;農(nóng)歷的月份,包括該月是否是閏月的信息;農(nóng)歷的日期。其中,農(nóng)歷年的計算相對簡單,而農(nóng)歷月日的計算相對比較煩瑣,農(nóng)歷信息的數(shù)組我是在網(wǎng)上找的,所以不保證全部的正確性,但在所有我測試過的關(guān)鍵日期上,結(jié)果是完全正確的。 : GetWeekDay:得到該日期的星期信息 IsLeapYear:判斷該年份是否是閏 年 GetMonthDays:得到該日期所在月份的總天數(shù) GetBetweenDays:得到給定的兩個日期之間所差的天數(shù) GetLunarYearDays:得到一個農(nóng)歷日期所在年份的總天數(shù) GetLunarMonthDays:得到一個農(nóng)歷日期所在月份的總天數(shù) GetLunarData:該過程調(diào)用上面一個子過程,填充好農(nóng)歷所有的數(shù)據(jù)結(jié)構(gòu) : 該模塊提供用戶輸入的基本功能,由于本程序是圖形模式,故輸入的實現(xiàn)麻煩些,包括基本按鍵后在屏幕上回顯所按的鍵,按 BackSpace 退格,按 Esc 鍵退出程序。還是由于時間問題,我處理了了當(dāng)用戶輸入不足 8 位時這個異常,方法是將年月日初始化為 1901 年 1 月 1 日;而用戶在輸入過程中按了非法的年月日信息,或者按了除 09 之外的按鍵這種異常,我并沒有處理。在程序運行過程中可能產(chǎn)生問題。 : INPUT :使用 INT 21H(AH=08H) 功能,判斷用戶輸入,然后調(diào)用WRITECHAR 子過程將用戶輸入回顯在屏幕上,并將用戶輸入存在一個 8 位長度的字符串中以備計算新的年月日信息 INITINPUT:在每次以新 的年月日信息重新運行該程序時,我發(fā)現(xiàn)在用戶輸入?yún)^(qū)域還是會顯示用戶上一次輸入的內(nèi)容,然后每次用戶按一個鍵,才會更新微機原理與接口技 術(shù)課程設(shè)計 6 一個字符,看起來很不舒服。所以我設(shè)計了這個函數(shù),在每次重新運行程序時,會清空供用戶輸入的區(qū)域 COVINPUT:用于將用戶輸入的 8 位字符串由 ASCII 碼轉(zhuǎn)換為相關(guān)的年,月,日這三個變量,以備計算之用 四、主要技術(shù)路線 輸入工具 :Notepad++ 編譯器 :MASM 連接器 :TLINK : 公歷每年有 12 個月,其 中 12 月為大月,每月 31 天; 11 月為小月,每月 30 天。公歷有閏年平年之分,若某年是閏年,則該年 2 月有 29 天,全年有 366 天;若某年是平年,則該年 2 月有 28 天,全年有 365 天。農(nóng)歷一般全年有 12 個月,如果出現(xiàn)閏月則全年就有 13 個月。大月 30 天,小月 29 天,大小月出現(xiàn)月份不確定。 : 由于公歷信息每年基本不變,而農(nóng)歷信息每年變化很大,因此,我將全部年份的農(nóng)歷信息存儲在兩個基本的數(shù)據(jù)表里,當(dāng)綜合兩個表的信息時,可以 得到與某年農(nóng)歷有關(guān)的所有數(shù)據(jù):該年年份(由在數(shù)組中的偏移量來確定)、該年各月的大?。ù笤掠?1 小月記 0)、該年有無閏月以及閏月的月份(直接記錄月份的大?。?、該年有無閏月及閏月的大?。o閏月及閏月為小月記 0 為大月記 1)。 a)基本數(shù)據(jù)表一 在基本數(shù)據(jù)表一里筆者用 4 位十六進制數(shù) D3D2D1D0(兩個字節(jié))描繪某一農(nóng)歷年的信息,其中每位十六進制數(shù)又可以用 4 位二進制數(shù)( b3b2b1b0)表示。下面以一個具體的例子來說明基本數(shù)據(jù)表一里的數(shù)據(jù)格式,該數(shù)據(jù)是表一中2021 年農(nóng)歷的基本信息: D3D2D1 的二進 制形式表示該農(nóng)歷年各月(依次從 1 月到 12 月)的大小,1 代表大月即 30 天, 0 代表小月。本例中十六進制 D3D2D1 為二進制 1011 1011 0111,代表 1 12 月為大月,其余月為小月。 D0 表示閏月出現(xiàn)的月份,從 0001 到 1100 分別代表閏月出現(xiàn)在 12 個月中從一到十二月的某月, 0000 表示沒有閏月,從 1101 到 1111 空余。本例中 0111 表示該年 7 月有閏月。 b)基本數(shù)據(jù)表二 在基本數(shù)據(jù)表二里,我用 1bit 來表示每一年中閏月的大小, 0 為無閏月或該年閏 月天數(shù)為小月 29 天, 1 為該年閏月天數(shù)為大月 30 天。因為我存儲了從 1900微機原理與接口技 術(shù)課程設(shè)計 7 年至 2050 年間的農(nóng)歷信息,故一共需要 [( 20501900+1) /8 ]+1=19 bytes。 要實現(xiàn)公歷到農(nóng)歷的轉(zhuǎn)換,必須知道需要轉(zhuǎn)換的公歷年月日的具體信息,再運用基本數(shù)據(jù)表一,二里的數(shù)據(jù),就可以得到該公歷日期對應(yīng)的農(nóng)歷年月日的具體信息。具體算法如下: 我們欲先知道 1901 年 1 月 1 日為農(nóng)歷 1900 年 11 月 11 日,故在算法開始,我們假定需要計算的日期的農(nóng)歷為 1900 年 11 月,并計算出給定的公歷日期 距1901 年 1 月 1 日的日數(shù) x,我們先暫時賦農(nóng)歷日為 x,然后再逐級計算。 A)首先,檢查 x 是否大于 19,若小于,則證明所查日期在 1901 年 1 月 19 日之前,可得到最后的結(jié)果:農(nóng)歷年 =1900,農(nóng)歷月 =11,農(nóng)歷日 =x+11,跳轉(zhuǎn)到步驟E。若 x 大于 19,則 x=18,農(nóng)歷月 ++(農(nóng)歷月 =12),跳轉(zhuǎn)到步驟 B。 B)再檢查 x 是否大于 31,若小于,則證明所查日期在 1901 年 1 月 20 日到 1901年 2 月 18 日之間,可得到最后的結(jié)果:農(nóng)歷年 =1900,農(nóng)歷月 =12,農(nóng)歷日 =x,跳轉(zhuǎn)到步驟 E。若 x 大于 31,則 x=31,農(nóng)歷 年 ++(農(nóng)歷年 =1901),農(nóng)歷月 =1,農(nóng)歷日 =1,跳轉(zhuǎn)到步驟 C。 C)然后,計算當(dāng)前農(nóng)歷年的日數(shù) y,若 xy,則證明所查日期的年份一定大于這一農(nóng)歷年,故 x=y,農(nóng)歷年 ++,再次執(zhí)行步驟 C。若 xy,則證明所查日期的農(nóng)歷年就是當(dāng)前用于計算的農(nóng)歷年,跳轉(zhuǎn)到步驟 D。 D)接下來,原理同步驟 C,計算當(dāng)前農(nóng)歷月的日數(shù) y,若 xy,則證明所查日期的月份一定大于這一農(nóng)歷月,故 x=y,農(nóng)歷月 ++,再次執(zhí)行步驟 D。若 xy,則證明所查日期的農(nóng)歷月就是當(dāng)前用于計算的農(nóng)歷月,同時檢查閏月情況,跳轉(zhuǎn)到步驟 E。 E)至此可得 ,農(nóng)歷年 =當(dāng)前農(nóng)歷年 ,農(nóng)歷月 =當(dāng)前農(nóng)歷月 ,農(nóng)歷日 =x+當(dāng)前農(nóng)歷日。接下來計算農(nóng)歷年的干支表示。我們知道干支組合一共 60 種,經(jīng)統(tǒng)計信息可知,我們將(農(nóng)歷年 +56) %60 得到的結(jié)果,正好可以得到該年的干支序號,即甲子=0,乙丑 =1,依次類推。 下面我舉個具體的例子來說明上述算法。以今天的日期即 202168 為
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1