【正文】
例,可容易的知道公歷年 =2021,公歷月 =6,公歷日 =8。經(jīng)計(jì)算,該日期與 1901 年 1 月 1日相差 38874 天,故會(huì)依次執(zhí)行 ABC,然后當(dāng)當(dāng)前農(nóng)歷年 =2021, x=110 時(shí),由于 x2021 年的總天數(shù), 故跳轉(zhuǎn)到步驟 D。當(dāng)當(dāng)前農(nóng)歷月 =4, x=22 時(shí),由于 x5年的總天數(shù),故跳轉(zhuǎn)到步驟 E。( 2021+56) %60=23,得到天干 =( 23+1) %10=4,即丁;得到地支 =( 23+1) %12=0,即亥。綜上分析,得到 202168 的農(nóng)歷信息為丁亥年四月二十三。 運(yùn)用基本 8086 匯編指令,包括: : MOV,PUSH,POP : LEA : a)加法: ADD,ADC,INC b)減法: SUB,SBB,DEC,CMP c)乘法: MUL d)除法: DIV 微機(jī)原理與接口技 術(shù)課程設(shè)計(jì) 8 : AND,OR,XOR,TEST,SHL,SHR,STOS(REP), : JMP,JZ,JNZ,JE,JNE,JB,JA,LOOP,CALL,RET,INT : CMC 進(jìn)位位求反指令 五、系統(tǒng)的難點(diǎn)及解決方案 關(guān)于萬(wàn)年歷,我們可以說(shuō)再熟悉不過(guò),但是真正到了自己動(dòng)手和動(dòng)腦去寫(xiě)的時(shí)候,才發(fā)現(xiàn)它里面其實(shí)有很復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。 由于農(nóng)歷中每月的天數(shù)是不固定的,所以每年的天數(shù)也是不固定的,加之閏月的機(jī)制,使計(jì)算農(nóng)歷根本無(wú)法可尋。經(jīng)由我在網(wǎng)上的苦苦搜索,終于發(fā)現(xiàn) 原來(lái)農(nóng)歷的信息都是由專(zhuān)家事先計(jì)算好的,然后發(fā)布出來(lái)供大家使用,所以,想要知道哪一年的農(nóng)歷信息,程序中必須存儲(chǔ)該年的全部信息。所以,我設(shè)計(jì)了如前面所闡述的那樣的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)這樣的目的。 我想通了農(nóng)歷的主要算法后,便開(kāi)始著手程序的實(shí)現(xiàn)。根據(jù)我所設(shè)想的流程圖,畫(huà)出邊框,輸出標(biāo)題,提示等信息都順利實(shí)現(xiàn)。 ,因?yàn)槿f(wàn)年歷是要顯示某一個(gè)月的一整月的信息,所以遇到的第一個(gè)問(wèn)題便是該月的一日應(yīng)該輸出在屏幕的哪里,而這是由該月一日的星期數(shù)來(lái)決定的。所以我設(shè)計(jì)了一個(gè)子過(guò)程 來(lái)計(jì)算某一公歷日期的星期數(shù),每次以該年該月的一日調(diào)用,從而確定公歷的顯示位置。 。如果說(shuō)在文本模式下,顯示漢字應(yīng)該是在字庫(kù)里找到相應(yīng)漢字的字模,然后用該漢字字模替代西文的字模,那么,由于本程序是在圖形模式下運(yùn)行的,所以我需要采取另外一種方式來(lái)顯示漢字。查看了許多資料以后,我終于明白,在圖形模式下漢字可以看成是由 16*16=256 個(gè)像素點(diǎn)組成的,每個(gè)像素點(diǎn)可以是顯示或不顯示,然后該幅圖片一樣的像素區(qū)域會(huì)是看起來(lái)組成了一個(gè)漢字。舉個(gè)例子,漢字“甲”,在圖形模式下可以看成: 0123456789012345 我們看到黃色的部分組成了這個(gè)漢字,正如我所標(biāo)示的位號(hào),每一行 16個(gè)像素,可以由 2bytes 表示,共 16 行,即共 2*16=32bytes,黃色部分的 bit 存為1,背景部分的 bit 存為 0,這樣,得到這個(gè)字的字模為: 00H,08H,3FH,FCH,21H,08H,21H,08H,21H,08H,3FH,F8H,21H,08H,21H,08H,21H,08H,3FH,F8H,21H,08H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H。 想 要輸出這個(gè)漢字時(shí),我們定義一個(gè)打 16*16 個(gè)像素點(diǎn)的循環(huán),每打 16 個(gè)點(diǎn)便開(kāi)始打下一行,然后像素點(diǎn)是依據(jù)漢字字模該位是否是 1 來(lái)確定的,是 1就打,是 0 就直接檢驗(yàn)下一位,不打點(diǎn)。這樣,當(dāng)運(yùn)行程序時(shí),屏幕相應(yīng)位置的16*16 像素區(qū)域就會(huì)有漢字了,如下圖所示,當(dāng)前面那個(gè)圖像縮小到屏幕上顯示時(shí),會(huì)很好的近似為 ,即成為“甲”字。 微機(jī)原理與接口技 術(shù)課程設(shè)計(jì) 9 由于實(shí)現(xiàn)了框架,公歷,農(nóng)歷漢字的顯示之后,下一個(gè)功能是提供用戶(hù)輸入新的公歷年月日,然后顯示新的公歷,農(nóng)歷信息,那么,我接下來(lái)需要考慮的是怎樣使用戶(hù)很方便和舒適的 和本程序進(jìn)行交互。再一次注意到本程序是圖形模式,無(wú)法利用系統(tǒng)提供的光標(biāo)或者輸入顯示中斷,這樣,判斷鍵盤(pán)輸入并回顯,成了又一個(gè)重要的問(wèn)題。我的解決方法是,調(diào)用 BIOS 的中斷,判斷用戶(hù)輸入但不回顯,再利用 DOS 的中斷將鍵盤(pán)緩沖區(qū)中的內(nèi)容輸出在屏幕上。然后,我發(fā)現(xiàn),這樣的方法并沒(méi)有實(shí)現(xiàn) BackSpace 和 Esc 鍵,給用戶(hù)輸入帶來(lái)很大不便。這樣,我又加了幾個(gè)判斷語(yǔ)句,使這個(gè)輸入更接近于系統(tǒng)所提供的輸入方式。但依舊存在的一個(gè)問(wèn)題就是,用戶(hù)不可以在屏幕上已經(jīng)沒(méi)有自己輸入的字符了的情況下再按 BS 鍵,不然程序會(huì)出錯(cuò),因?yàn)槲?并沒(méi)有處理這個(gè)異常,這是這個(gè)程序的一個(gè)遺憾吧。 六 、總結(jié)與體會(huì) 微機(jī)接口技術(shù)是一門(mén)應(yīng)用性、綜合性、實(shí)踐性都較強(qiáng)的課程,通過(guò)本次課程設(shè)計(jì)過(guò)程,我基木熟悉和掌握了微機(jī)系統(tǒng)的軟件、硬件設(shè)計(jì)的方法、設(shè)計(jì)步驟,是一次微機(jī)開(kāi)發(fā)應(yīng)用方面的初步訓(xùn)練 。通過(guò)本次課程設(shè)計(jì)使我熟練掌握了微機(jī)系統(tǒng)與接口擴(kuò)展電路的設(shè)計(jì)方法,并熟練應(yīng)用 8086 匯編語(yǔ)言編寫(xiě)應(yīng)用程序和實(shí)際設(shè)計(jì)中的硬軟件調(diào)試方法和步驟,熟悉微機(jī)系統(tǒng)的硬軟件開(kāi)發(fā)工具的使用方法 . 這次的課程設(shè)計(jì)對(duì)我來(lái)說(shuō),是一次非常重要的鍛煉,通過(guò)這次設(shè)計(jì),我對(duì)所學(xué)的知識(shí)有了更深 刻的了解和掌握,使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。有了這次的設(shè)計(jì)經(jīng)驗(yàn),相信在以后的學(xué)習(xí)設(shè)計(jì)實(shí)踐過(guò)程中,我可以做到更好。 回顧此次課程設(shè)計(jì)的過(guò)程,可以用“累并收獲著”來(lái)概括。通過(guò)本次設(shè)計(jì),不但使我的專(zhuān)業(yè)知識(shí)得到鞏固和開(kāi)拓,而且能使我將所學(xué)與實(shí)踐聯(lián)系起來(lái),認(rèn)識(shí)到自身知識(shí)的缺漏,明確自己的努力的方向。計(jì)算機(jī)技術(shù)的發(fā)展日新月異,其接口技術(shù)應(yīng)用十分廣泛,我不但要 經(jīng)常跟蹤專(zhuān)業(yè)新技術(shù)、新動(dòng)態(tài),時(shí)刻走在時(shí)代的前列 。還要注重積累經(jīng)驗(yàn),在此次設(shè)計(jì)中,積累一些通用俗語(yǔ),才能使自己慢慢地融入專(zhuān)業(yè)之中,更快地進(jìn)入工作角色 :此外,還要注重養(yǎng)成終身的學(xué)習(xí)習(xí)慣,擴(kuò)大自己的知識(shí)面,才能促進(jìn)自己不斷進(jìn)步。 七、參考文獻(xiàn) ,史嘉權(quán)編著 .微型計(jì)算機(jī)技術(shù)及應(yīng)用 (第三版 )北京 :清華大學(xué)出版社, 2021 ,吳國(guó)東,趙河明等 .微機(jī)原理及接口技術(shù)北京 :機(jī)械工業(yè)出版社,2021 3 孫德文 .微型計(jì)算機(jī)技術(shù)高等教育出版社 .黃麗雯,李文杰 .微機(jī)原理及接口技 術(shù)實(shí)驗(yàn)重慶工學(xué)院電子信息與微機(jī)原理與接口技 術(shù)課程設(shè)計(jì) 10 白動(dòng)化學(xué)院 5 侯伯亨,李伯成微機(jī)原理與接口技術(shù)西安電子科技大學(xué)出版社 微機(jī)原理與接口技 術(shù)課程設(shè)計(jì) 11 附錄(源程序) DATA SEGMENT TOU DB 39。**************** CALENDAR *****************$39。 DB 39。 YEAR: TIME: $39。 PASS DB 39。Please input the user name:$39。 DB 39。Please input the password:$39。 STR3 DB 39。zhan39。 。 用戶(hù)名 COUNT1 EQU $STR3 STR4 DB 39。52539。 。密碼 COUNT2 EQU $STR4 BUF4 DB 39。ERROR!$39。 BUF5 DB 39。ERROR!$39。 RILI DB 39。SUN MON TUE WED THU FRI SAT **** SUN MON TUE WED THU FRI SAT$39。 YUE1 DB39。Jan$39。 YUE2 DB39。Feb$39。 YUE3 DB39。Mar$39。 YUE4 DB39。Apr$39。 YUE5 DB39。May$39。 YUE6 DB39。Jun$39。 YUE7 DB39。Jul$39。 YUE8 DB39。Aug$39。 YUE9 DB39。Sep$39。 YUE10 DB39。Oct$39。 YUE11 DB39。Nov$39。 YUE12 DB39。Dec$39。 YEAR DW ? MONTH DW ? B DW ? C1 DW 0 D1 DW 0 E DW 0 G DB 0 T DW 0 S DB 0 P DW ? N DW 0 Y DW 0 M DW 0 微機(jī)原理與接口技 術(shù)課程設(shè)計(jì) 12 A1 DW 0 。YUE 子程序傳遞參數(shù) A2 DW 0 A3 DW 0 A4 DB 0 BUF1 DB 31,?,31,30,31,30,31,31,30,31,30,31 BUF2 DB 1,2,3,4,5,6,7,8,9,10,11,12 INPUT3 DB 39。NOT LEAP YEAR!$39。 INPUT4 DB 39。LEAP YEAR$39。 INPUT5 DB 39。 ON $39。 STR5 DB 5 DB 0 DB 5 DUP(0) STR6 DB 3 DB 0 DB 3 DUP(0) BUF3 DB 39。 139。,0AH,0DH,39。$39。 DB 39。 239。,0AH,0DH,39。$39。 DB 39。 339。,0AH,0DH,39。$39。 DB 39。 439。,0AH,0DH,39。$39。 DB 39。 539。,0AH,0DH,39。$39。 DB 39。 639。,0AH,0DH,39。$39。 DB 39。 739。,0AH,0DH,39。$39。 DB 39。 839。,0AH,0DH,39。$39。 DB 39。 939。,0AH,0DH,39。$39。 DB 39。1039。,0AH,0DH,39。$39。 DB 39。1139。,0AH,0DH,39。$39。 DB 39。1239。,0AH,0DH,39。$39。 DB 39。1339。,0AH,0DH,39。$39。 DB 39。1439。,0AH,0DH,39。$39。 DB 39。1539。,0AH,0DH,39。$39。 DB 39。1639。,0AH,0DH,39。$39。 DB 39。1739。,0AH,0DH,39。$39。 DB 39。1839。,0AH,0DH,39。$39。 DB 39。1939。,0AH,0DH,39。$39。 DB 39。2039。,0AH,0DH,39。$39。 DB 39。2139。,0AH,0DH,39。$39。 DB 39。2239。,0AH,0DH,39。$39。 DB 39。2339。,0AH,0DH,39。$39。 DB 39。2439。,0AH,0DH,39。$39。 DB 39。2539。,0AH,0DH,39。$39。 DB 39。2639。,0AH,0DH,39。$39。 DB 39。2739。,0AH,0DH,39。$39。 DB 39。2839。,0AH,0DH,39。$39。 微機(jī)原理與接口技 術(shù)課程設(shè)計(jì) 13 DB 39。2939。,0AH,0DH,39。$39。 DB 39。3039。,0AH,0DH,39。$39。 DB 39。3139。,0AH,0DH,39。$39。 F DB ? D DB ? STR1 DB 20 DB 0 DB 20 DUP(0) STR2 DB 20 DB 0 DB 20 DUP(0) DBUFFER DB 8 DUP (39。:39。),12 DUP (39。 39。) 。調(diào)用系統(tǒng)時(shí)間子程序中變量 F_NUM DW ? 。打印參數(shù) CERROR DB 39。CREAT ERROR !39。,0AH,0DH,39。$39。 WE