版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEword文檔可自由復(fù)制編輯武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)說(shuō)明書(shū)學(xué)號(hào):課程設(shè)計(jì)題目電子時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)學(xué)院自動(dòng)化學(xué)院專(zhuān)業(yè)電氣工程及其自動(dòng)化班級(jí)姓名指導(dǎo)教師2014年1月9日
課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名:專(zhuān)業(yè)班級(jí):指導(dǎo)教師:工作單位:題目:電子時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)初始條件:掌握8086匯編語(yǔ)言程序設(shè)計(jì)方法,設(shè)計(jì)一個(gè)電子時(shí)鐘,實(shí)現(xiàn)分、秒、時(shí)的顯示與刷新功能。要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書(shū)撰寫(xiě)等具體要求)1.定義顯示界面。2.調(diào)用系統(tǒng)時(shí)間,并將調(diào)用的用二進(jìn)制表示的時(shí)間數(shù)轉(zhuǎn)換成ASCII碼,并將時(shí)間數(shù)存入內(nèi)存區(qū)。3.將存在系統(tǒng)內(nèi)存區(qū)的時(shí)間數(shù)用數(shù)字式或指針式鐘表的形式顯示出來(lái)。4.獲取鍵盤(pán)的按鍵值,判斷鍵值并退出系統(tǒng)。5.撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計(jì)任務(wù)及要求、方案比較及論證、軟件設(shè)計(jì)說(shuō)明(軟件思想,流程,源程序設(shè)計(jì)及說(shuō)明等)、程序調(diào)試說(shuō)明和結(jié)果分析、課程設(shè)計(jì)收獲及心得體會(huì)。時(shí)間安排: 12月26日12月28日查閱資料及方案設(shè)計(jì)1月29日1月2日 編程1月3日1月7日 調(diào)試程序1月8日1月9日 撰寫(xiě)課程設(shè)計(jì)報(bào)告指導(dǎo)教師簽名:年月日系主任(或責(zé)任教師)簽名:年月日目錄摘要 11設(shè)計(jì)任務(wù)及要求 21.1設(shè)計(jì)題目 21.2設(shè)計(jì)要求 21.3設(shè)計(jì)目的 22設(shè)計(jì)方案論述 32.1設(shè)計(jì)方案概括 32.2設(shè)計(jì)方案具體說(shuō)明 33軟件設(shè)計(jì)說(shuō)明 43.1理論知識(shí)介紹 43.2設(shè)計(jì)思路介紹 73.3設(shè)計(jì)流程 73.4程序設(shè)計(jì)說(shuō)明 124調(diào)試結(jié)果及分析 224.1程序初始運(yùn)行狀態(tài) 224.2日期顯示運(yùn)行結(jié)果 224.3計(jì)時(shí)功能運(yùn)行結(jié)果 235收獲與體會(huì) 25參考文獻(xiàn) 26附錄:設(shè)計(jì)源程序 27本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表 36word文檔可自由復(fù)制編輯摘要本設(shè)計(jì)采用16位微型處理器8086CPU以及86系列微型計(jì)算機(jī)的指令系統(tǒng)利用匯編語(yǔ)言編寫(xiě),設(shè)計(jì)一個(gè)界面實(shí)現(xiàn)系統(tǒng)日期及時(shí)間顯示功能,軟件設(shè)計(jì)平臺(tái)為MasmforWindows集成實(shí)驗(yàn)環(huán)境。在本設(shè)計(jì)中,設(shè)計(jì)顯示界面并通過(guò)DOS中斷調(diào)用系統(tǒng)時(shí)間,并將調(diào)用的用二進(jìn)制表示的時(shí)間數(shù)轉(zhuǎn)換成ASCII碼,并將時(shí)間數(shù)存入內(nèi)存區(qū)。將存在系統(tǒng)內(nèi)存區(qū)的時(shí)間數(shù)用數(shù)字式鐘表的形式顯示出來(lái)。通過(guò)讀取鍵盤(pán)輸入的相關(guān)內(nèi)容,如:輸入D,則設(shè)計(jì)程序代碼依次讀取系統(tǒng)日期年、月、日,并轉(zhuǎn)換成ASCII碼調(diào)用中斷予以顯示;若在鍵盤(pán)輸入H,則啟動(dòng)秒表功能;輸入Q,判斷鍵值后退出系統(tǒng);若不是相關(guān)字符,則不會(huì)有任何響應(yīng)。關(guān)鍵詞:系統(tǒng)時(shí)鐘8086CPU匯編語(yǔ)言
電子時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)1設(shè)計(jì)任務(wù)及要求1.1設(shè)計(jì)題目掌握8086匯編語(yǔ)言程序設(shè)計(jì)方法,設(shè)計(jì)一個(gè)電子時(shí)鐘,實(shí)現(xiàn)分、秒、時(shí)的顯示與刷新功能。1.2設(shè)計(jì)要求(1)定義顯示界面;(2)調(diào)用系統(tǒng)時(shí)間,并將調(diào)用的用二進(jìn)制表示的時(shí)間數(shù)轉(zhuǎn)換成ASCII碼,并將時(shí)間數(shù)存入內(nèi)存區(qū);(3)將存在系統(tǒng)內(nèi)存區(qū)的時(shí)間數(shù)用顯示字符串的形式顯示出來(lái);(4)為時(shí)鐘加入附加功能,包括日期顯示、計(jì)時(shí)功能;(5)獲取鍵盤(pán)的按鍵值,判斷鍵值并退出系;。(6)撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計(jì)任務(wù)及要求、方案比較及論證、軟件設(shè)計(jì)說(shuō)明(軟件思想,流程,源程序設(shè)計(jì)及說(shuō)明等)、程序調(diào)試說(shuō)明和結(jié)果分析、課程設(shè)計(jì)收獲及心得體會(huì)。1.3設(shè)計(jì)目的(1)掌握8086CPU微機(jī)系統(tǒng)的存儲(chǔ)子系統(tǒng)設(shè)計(jì);(2)掌握8086CPU微機(jī)系統(tǒng)的中斷控制子系統(tǒng)的設(shè)計(jì);(3)掌握8086CPU微機(jī)系統(tǒng)的I/O系統(tǒng)的設(shè)計(jì);(4)掌握8086CPU微機(jī)系統(tǒng)的初始化匯編編程和具體項(xiàng)目功能的軟件匯編語(yǔ)言代碼編寫(xiě)。
2設(shè)計(jì)方案論述2.1設(shè)計(jì)方案概括在此次電子時(shí)鐘的設(shè)計(jì)中,主要功能是顯示系統(tǒng)時(shí)間,通過(guò)DOS中斷調(diào)用進(jìn)行系統(tǒng)時(shí)間的提取,然后進(jìn)行輸出至屏幕。附加功能共包括兩種,第一種功能為顯示系統(tǒng)的日期,也是通過(guò)DOS中斷提取系統(tǒng)日期輸出至屏幕;第二種功能為作為計(jì)時(shí)器使用,判斷一定時(shí)間段內(nèi)的具體時(shí)間。兩個(gè)功能通過(guò)鍵盤(pán)按鍵進(jìn)入、退出,整個(gè)電子時(shí)鐘系統(tǒng)也可通過(guò)鍵盤(pán)按鍵退出。2.2設(shè)計(jì)方案具體說(shuō)明2.2.1顯示系統(tǒng)時(shí)間方案說(shuō)明時(shí)間顯示的重點(diǎn)分為三部分,第一部分是如何調(diào)用系統(tǒng)時(shí)間,此次電子時(shí)鐘的設(shè)計(jì)通過(guò)AH=2CH;INT21H的DOS中斷調(diào)用進(jìn)行系統(tǒng)時(shí)間的提取。提取的時(shí)間為二進(jìn)制的存儲(chǔ)模式,第二部分的重點(diǎn)為將二進(jìn)制數(shù)轉(zhuǎn)換成為ASCII碼。第三部分即為將轉(zhuǎn)換的時(shí)間的ASCII碼輸出至屏幕,調(diào)用AH=09H;INT21H中斷,將存儲(chǔ)的時(shí)間作為字符輸出。2.2.2顯示系統(tǒng)日期方案說(shuō)明首先通過(guò)判斷是否有按鍵“D”輸入,若有則調(diào)用日期顯示功能,日期顯示同時(shí)間顯示基本相同,只是提取系統(tǒng)日期的指令與調(diào)用時(shí)間不同,為AH=2AH;INT21H。在進(jìn)行日期顯示的功能中,若有按鍵“L”則退出此功能。2.2.3計(jì)時(shí)功能方案說(shuō)明首先通過(guò)判斷是否有按鍵“H”輸入,若有則調(diào)用計(jì)時(shí)功能。進(jìn)入計(jì)時(shí)功能后,按鍵“S”計(jì)時(shí)開(kāi)始,按鍵“P”計(jì)時(shí)暫停,按鍵“G”計(jì)時(shí)繼續(xù),按鍵“T”計(jì)時(shí)停止,按鍵“C”計(jì)時(shí)器清零。
3軟件設(shè)計(jì)說(shuō)明3.1理論知識(shí)介紹3.1.1DOS中斷與BIOS中斷的功能及調(diào)用(1)DOS中斷類(lèi)型如表3-1所示。表3-1DOS中斷類(lèi)型中斷號(hào)中斷名稱(chēng)中斷號(hào)中斷名稱(chēng)20程序終止27結(jié)束并駐留內(nèi)存21功能調(diào)用28鍵盤(pán)忙循環(huán)22終止地址29快速寫(xiě)字符23Ctrl_C中斷向量2A網(wǎng)絡(luò)接口24嚴(yán)重錯(cuò)誤向量2E執(zhí)行命令25絕對(duì)磁盤(pán)讀2F多路轉(zhuǎn)接接口26絕對(duì)磁盤(pán)寫(xiě)30-3F保留給DOS(2)BIOS中斷類(lèi)型如表3-2所示。表3-2BIOS中斷類(lèi)型中斷號(hào)中斷名稱(chēng)中斷號(hào)中斷名稱(chēng)10顯示器I/O16鍵盤(pán)I/O11取設(shè)備信息17打印機(jī)I/O12取內(nèi)存容量18ROMBASIC13磁盤(pán)I/O19引導(dǎo)裝入程序14RS-232串行口I/O1A時(shí)鐘15磁帶I/O40軟盤(pán)BIOSDOS功能與BIOS功能都通過(guò)軟件中斷調(diào)用。在中斷調(diào)用前需要把功能號(hào)裝入AH寄存器,把子功能號(hào)裝入AL寄存器,除此而外,通常還需在CPU寄存器中提供專(zhuān)門(mén)的調(diào)用參數(shù)。一般地說(shuō),調(diào)用DOS或BIOS功能時(shí),有以下幾個(gè)基本步驟:1)將調(diào)用參數(shù)裝入指定的寄存器中;2)如需功能號(hào),把它裝入AH;3)如需子功能號(hào),把它裝入AL;4)按中斷號(hào)調(diào)用DOS或BIOS中斷;5)檢查返回參數(shù)是否正確。本例中需要的BIOS中斷如表3所示。表3本課程設(shè)計(jì)所需BIOS中斷類(lèi)型INTAH功能入口參數(shù)出口參數(shù)1009H表示在當(dāng)前的光標(biāo)處按指令屬性顯示字符AH=09HAL=字符BH=顯示頁(yè)碼BL=屬性CX=重復(fù)輸出字符的次數(shù)無(wú)1002H用文本坐標(biāo)下設(shè)置光標(biāo)位置AH=02HBH=顯示頁(yè)碼DH=行(Y坐標(biāo))DL=列(X坐標(biāo))無(wú)2101H從鍵盤(pán)輸入一個(gè)字符無(wú)AL=ASCII2102H在屏幕上顯示一個(gè)字符DL=ASCII無(wú)1601H讀取鍵盤(pán)狀態(tài),即讀入輸入字符AH=01H—檢查普通鍵盤(pán)ZF=1——無(wú)字符輸入,否則,AH=鍵盤(pán)的掃描碼,AL=按鍵的ASCII碼(字符鍵)或者0(其他鍵)1600H從鍵盤(pán)讀入字符AH=00H—強(qiáng)制讀普通鍵盤(pán)AH=鍵盤(pán)的掃描碼AL=按鍵的ASCII碼(字符鍵)或者0(其他鍵)1008H讀光標(biāo)處的字符及其屬性AH=08HBH=顯示頁(yè)碼AH=屬性AL=字符2106H1號(hào)2號(hào)功能的組合DL=0FFH時(shí)為1號(hào)功能;DL寄存器放入字符的ASCII值時(shí)就是2號(hào)功能無(wú)或AL=ASCII1A02H讀取時(shí)間AH=02HCH=BCD碼格式的小時(shí);CL=BCD碼格式的分鐘;DH=BCD碼格式的秒;DL=00H——標(biāo)準(zhǔn)時(shí)間,否則,夏令時(shí);CF=0——時(shí)鐘在走,否則,時(shí)鐘停止3.1.2子程序的設(shè)計(jì)子程序又稱(chēng)為過(guò)程,它相當(dāng)于高級(jí)語(yǔ)言中的過(guò)程和函數(shù)。在一個(gè)程序的不同部分,往往要用到類(lèi)似的程序段,這些程序段的功能和結(jié)構(gòu)形式都相同,只是某些變量的賦值不同,此時(shí)就可以把這些程序段寫(xiě)成子程序形式,以便需要時(shí)可以調(diào)用它。過(guò)程定義偽操作用在過(guò)程(子程序)的前后,使整個(gè)過(guò)程形成清晰的、具有特定功能的代碼塊。其格式為:procedurenamePROCAttribute…procedurenameENDP其中過(guò)程名為標(biāo)識(shí)符,它又是子程序入口的符號(hào)地址。它的寫(xiě)法和標(biāo)號(hào)的寫(xiě)法相同。屬性(attribute)是指類(lèi)型屬性,它可以是NEAR或FAR。段內(nèi)調(diào)用使用NEAR屬性,段間調(diào)用使用FAR屬性。為了使用戶(hù)的工作更加方便,80x86的匯編程序用PROC偽操作的類(lèi)型屬性來(lái)確定CALL和RET指令的屬性。也就是說(shuō),如果所定義的過(guò)程是FAR屬性的,那么對(duì)它的調(diào)用和返回一定都是FAR屬性的;如果所定義的過(guò)程是NEAR屬性的,那么對(duì)它的調(diào)用和返回也一定是NEAR屬性的。這樣,用戶(hù)只需在定義過(guò)程時(shí)考慮它的屬性,而CALL和RET的屬性可以由匯編程序來(lái)確定。用戶(hù)對(duì)過(guò)程屬性的確定原則很簡(jiǎn)單,即:(1)如調(diào)用程序和過(guò)程在同一個(gè)代碼段中,則使用NEAR屬性;(2)如調(diào)用程序和過(guò)程不在同一個(gè)代碼段中,則使用FAR屬性。3.1.3中斷概述CPU在執(zhí)行某一程序的過(guò)程中,出現(xiàn)了內(nèi)部或外部某些事件的請(qǐng)求,CPU暫時(shí)停止當(dāng)前程序的正常執(zhí)行,轉(zhuǎn)去執(zhí)行請(qǐng)求事件的處理工作,CPU在事件處理結(jié)束后又繼續(xù)原來(lái)的程序,這個(gè)過(guò)程稱(chēng)作中斷。中斷程序的入口地址稱(chēng)作中斷向量。8086中斷系統(tǒng)最多可以支持256個(gè)中斷源,系統(tǒng)將這些中斷向量按照中斷類(lèi)型碼的順序依次存放在內(nèi)存RAM的最低地址區(qū)的1024個(gè)內(nèi)存單元中,這就構(gòu)成了中斷向量表。中斷向量表的邏輯地址范圍為0000H:0000H-0000H:03FF。另外,中斷向量在中斷向量表中的位置就是中斷向量地址,它與中斷類(lèi)型碼之間的關(guān)系可以表示如下:中斷向量地址=0000H:中斷類(lèi)型碼*4CPU在響應(yīng)中斷后,根據(jù)中斷源提供的中斷類(lèi)型碼,首先計(jì)算出中斷向量地址,然后根據(jù)中斷向量地址在表中查找到相應(yīng)的中斷服務(wù)程序的入口地址。本例中即利用了鍵盤(pán)中斷來(lái)實(shí)現(xiàn)相應(yīng)的功能。3.2設(shè)計(jì)思路介紹首先在數(shù)據(jù)段開(kāi)辟一顯示緩沖區(qū),用來(lái)存儲(chǔ)系統(tǒng)時(shí)間。調(diào)用DOS中斷,返回系統(tǒng)時(shí)間,并將來(lái)返回的二進(jìn)制時(shí)間轉(zhuǎn)換成ASCII碼,方便時(shí)間顯示時(shí)的調(diào)用。分別將來(lái)小時(shí)數(shù)、分鐘數(shù)、秒數(shù)存入顯示緩沖區(qū),并最終存入一結(jié)束字符號(hào)’$’。調(diào)用DOS字符串顯示功能將時(shí)間顯示出來(lái)。并調(diào)用屏幕I/O中斷,定位光標(biāo)的開(kāi)始位置,結(jié)合著將時(shí)間顯示在我們預(yù)先定義好的位置上。由于獲取了的系統(tǒng)時(shí)間不會(huì)自動(dòng)刷新,所以我們要設(shè)計(jì)成刷新的方式來(lái)不斷獲取系統(tǒng)的時(shí)間,這樣就形成了會(huì)跳動(dòng)的電子鐘了。時(shí)間顯示的刷新要配合延時(shí)程序進(jìn)行,為了得到良好的顯示效果,延時(shí)程序要盡量接近1秒,但又不能超過(guò)一秒,所以本程序調(diào)用了一段較精確的時(shí)間延遲程序,屏幕顯示延遲一段時(shí)間后再提取系統(tǒng)時(shí)間,然后顯示,由此循環(huán)下去。程序加入附加功能,根據(jù)不同的按鍵選擇不同的功能進(jìn)行實(shí)現(xiàn),D為顯示系統(tǒng)日期,W為整點(diǎn)報(bào)時(shí),H為計(jì)時(shí)功能。各個(gè)功能的推出均為L(zhǎng)按鍵。選擇的某個(gè)功能推出后才可以重新選擇功能。程序的最后還設(shè)計(jì)一了個(gè)按“Q”鍵就退出的功能。所有的按鍵都采取了判斷鍵值A(chǔ)SCII碼確定輸入字符的方法確定按鍵值。為了顯示的美觀,還設(shè)計(jì)一個(gè)字符圖界面,通過(guò)顯示字符串的方法顯示出來(lái)。3.3設(shè)計(jì)流程在此次的設(shè)計(jì)中根據(jù)設(shè)想功能的實(shí)現(xiàn),在主流程下,共有兩個(gè)分支功能,故其流程圖為一個(gè)主流程圖,兩個(gè)附加功能的子流程圖。3.3.1主流程圖及說(shuō)明在主流程圖中可以了解到,進(jìn)入程序后首先清屏,設(shè)置屏幕的顯示,使得界面整體布局安排以及功能的提示信息出現(xiàn)在屏幕上。然后調(diào)用系統(tǒng)時(shí)間,將時(shí)間顯示到設(shè)定好的位置上。接著是進(jìn)行鍵盤(pán)狀態(tài)的讀取,判斷有無(wú)按鍵按下,如果沒(méi)有,重新調(diào)用系統(tǒng)時(shí)間并顯示,如果有按鍵按下,判斷按鍵字符,若為“D”,執(zhí)行讀取日期子程序;若為“H”,執(zhí)行計(jì)時(shí)器子程序;若為“Q”,則退出程序;如果均不為上述字符,則返回調(diào)用系統(tǒng)時(shí)間。開(kāi)始判斷按鍵是否為H判斷按鍵是否為開(kāi)始判斷按鍵是否為H判斷按鍵是否為D判斷是否有鍵盤(pán)按鍵輸入讀取按鍵字符調(diào)用系統(tǒng)時(shí)間輸出至屏幕顯示設(shè)置屏幕顯示進(jìn)入計(jì)時(shí)器子程序進(jìn)入顯示日期子程序是是否否否是圖3-1系統(tǒng)主程序流程圖判斷按鍵是否為Q結(jié)束是否3.3.2顯示日期子流程圖及說(shuō)明日期顯示子程序流程圖如圖3-2所示。開(kāi)始開(kāi)始提取系統(tǒng)日期將年份數(shù)轉(zhuǎn)為ASCII碼并存入DATEDIS中將日期數(shù)轉(zhuǎn)為ASCII碼并存入DATEDIS中將分月份轉(zhuǎn)為ASCII碼并存入DATEDIS中顯示系統(tǒng)日期返回圖3-2日期顯示子程序流程圖根據(jù)圖3-2所示的子流程圖可以分到系統(tǒng)日期顯示的整體過(guò)程。在經(jīng)過(guò)功能選擇進(jìn)入日期顯示后,首先提取電腦內(nèi)部的系統(tǒng)日期,提取到的系統(tǒng)日期為二進(jìn)制碼,首先將年份的二進(jìn)制碼轉(zhuǎn)換為ASCII碼,存入數(shù)據(jù)段的緩沖區(qū),然后將月份的二進(jìn)制碼轉(zhuǎn)換為ASCII碼,存入數(shù)據(jù)段的緩沖區(qū),接著是將日期的二進(jìn)制碼轉(zhuǎn)換為ASCII碼,存入數(shù)據(jù)段的緩沖區(qū),于是緩沖區(qū)中就包含了系統(tǒng)日期的ASCII碼,調(diào)用輸出函數(shù),將系統(tǒng)日期輸出到系統(tǒng)的指定位置。3.3.3計(jì)時(shí)器的流程圖及說(shuō)明計(jì)時(shí)器子程序流程圖如圖3-3所示。開(kāi)始開(kāi)始讀取鍵盤(pán)值讀取鍵盤(pán)值讀取鍵盤(pán)值判斷有無(wú)按鍵按下按鍵為S按鍵為T(mén)按鍵為G按鍵為P按鍵為L(zhǎng)按鍵為C開(kāi)始計(jì)時(shí)停止計(jì)時(shí)判斷有無(wú)按鍵按下判斷有無(wú)按鍵按下退出子程序計(jì)數(shù)器清零是否是否否否是是是否否是是否是否否是圖3-3計(jì)時(shí)器子程序流程圖根據(jù)計(jì)時(shí)器子程序的流程圖可知,進(jìn)入計(jì)時(shí)器程序后,首先是等待計(jì)時(shí)開(kāi)始,掃面鍵盤(pán)是否有按鍵按下,若按下“L”則推出此計(jì)時(shí)程序,若按下的為“S”則計(jì)時(shí)開(kāi)始,在計(jì)時(shí)的過(guò)程中進(jìn)行按鍵掃描,判斷有無(wú)按鍵的輸入,如果沒(méi)有則保持計(jì)時(shí),如果判斷按鍵為“P”,則暫停計(jì)時(shí),此時(shí)不斷掃描鍵盤(pán),若發(fā)現(xiàn)按鍵“G”,則繼續(xù)計(jì)時(shí),同時(shí)繼續(xù)掃描鍵盤(pán)狀態(tài),若發(fā)現(xiàn)按鍵“T”按下,則停止計(jì)時(shí),同時(shí)掃描按鍵,如果獲取到“C”按下,則對(duì)計(jì)數(shù)器清零,此時(shí)返回子程序開(kāi)始端,重新掃描鍵盤(pán),準(zhǔn)備新一輪的計(jì)時(shí)。3.3.4系統(tǒng)時(shí)間顯示子程序系統(tǒng)時(shí)間顯示子程序流程圖如圖3-4所示。開(kāi)始開(kāi)始提取系統(tǒng)時(shí)間將小時(shí)數(shù)轉(zhuǎn)為ASCII碼并存入TIMEDIS中將秒數(shù)轉(zhuǎn)為ASCII碼并存入TIMEDIS中將分鐘轉(zhuǎn)為ASCII碼并存入TIMEDIS中顯示系統(tǒng)時(shí)間返回圖3-4時(shí)間顯示子程序流程圖3.4程序設(shè)計(jì)說(shuō)明3.4.1清屏程序介紹CLEAR_SCREENMACROOP1,OP2,OP3,OP4;清屏 PUSHAX;入棧保護(hù)現(xiàn)場(chǎng)PUSHBXPUSHCXPUSHDX MOVAH,06H;向上滾屏 MOVAL,00H;全屏幕為空白 MOVBH,79H;空白區(qū)域缺省屬性 MOVCH,OP1;左上角行號(hào) MOVCL,OP2;左上角列號(hào) MOVDH,OP3;右下角行號(hào) MOVDL,OP4;右下角列號(hào) INT10H;BIOS對(duì)屏幕及顯示器中斷調(diào)用 POPDX;出棧顯示數(shù)據(jù)POPCXPOPBXPOPAX ENDM此為宏定義寫(xiě)出的清屏指令,首先將寄存器的數(shù)據(jù)壓入堆棧進(jìn)行保護(hù),然后調(diào)用INT10中斷設(shè)定屏幕顯示。其中AH設(shè)置滾屏方式06為向上滾屏,AL=0為設(shè)置窗口的清屏,而CH、CL、DH、DL為設(shè)置窗口的大小,根據(jù)設(shè)定的窗口大小確定清屏的范圍。清屏結(jié)束后,將壓入堆棧的寄存器的數(shù)據(jù)彈出,使清屏命令不會(huì)影響寄存器的數(shù)值。3.4.2光標(biāo)定位程序介紹CURSOR_POSITIONMACROROW,CLM;設(shè)置光標(biāo)位置宏定義PUSHAX;入棧保護(hù)現(xiàn)場(chǎng)PUSHBXPUSHCXPUSHDX MOVAH,2MOVBH,0;光標(biāo)頁(yè)號(hào)MOVDH,ROW;光標(biāo)行號(hào)MOVDL,CLM;光標(biāo)列號(hào)INT10H;BIOS對(duì)屏幕及顯示器中斷調(diào)用 MOVAH,1;置光標(biāo)類(lèi)型,不顯示光標(biāo) MOVCH,20H INT10HPOPDX;出棧顯示數(shù)據(jù)POPCXPOPBXPOPAX ENDM此宏定義為光標(biāo)位置的設(shè)定,首先是寄存器數(shù)據(jù)壓入堆棧保護(hù)。光標(biāo)設(shè)定需要調(diào)用INT10H,給AH賦值02H,執(zhí)行設(shè)置光標(biāo)位置命令,然后由DH、DL的數(shù)值確定光標(biāo)的行號(hào)和列號(hào)。由于根據(jù)設(shè)計(jì)需求,在此還需設(shè)置光標(biāo)屬性為隱藏,此功能同樣為調(diào)用INT10H,使得AH賦值為01H,根據(jù)CH的值確定光標(biāo)的屬性。最后為寄存器數(shù)據(jù)出棧。3.4.3多字符顯示程序介紹SHOWMACROB ;宏定義顯示寄存器中內(nèi)容 LEADX,B ;將b的首地址給DX MOVAH,9 ;顯示器I/O,多字符輸出 INT21H ;DOS中斷調(diào)用 ENDM此處宏定義為多字符的屏幕顯示,首先是將需要顯示的字符的存儲(chǔ)區(qū)的便宜地址給DX,然后通過(guò)功能調(diào)用AH=09H;INT21H,便可將多個(gè)字符輸出至屏幕。3.4.4讀取鍵盤(pán)狀態(tài)程序介紹SCANKEYMACRO PUSHAX MOVAH,01H INT16H POPAX ENDM此處宏定義為讀取鍵盤(pán)狀態(tài),通過(guò)功能調(diào)用AH=01H;INT21H即可實(shí)現(xiàn),如有按鍵按下,則ZF=1,若無(wú),則ZF=0。3.4.5讀取鍵盤(pán)值程序介紹INPKEYMACRO PUSHAX MOVAH,00H INT16H MOVBL,AL POPAX ENDM此處宏定義為讀取鍵盤(pán)函數(shù)值,通過(guò)功能調(diào)用AH=00H;INT21H實(shí)現(xiàn),此命令會(huì)將鍵盤(pán)按鍵的ASCII碼值輸入至AL寄存器中。3.4.6調(diào)用系統(tǒng)時(shí)間顯示程序介紹TIMEDISPLAYPROCNEAR;定義時(shí)間顯示子程序 MOVAH,2CH;取當(dāng)前系統(tǒng)時(shí)間 INT21H MOVBX,10 LEADI,TIMEDIS;TIMEDIS的首地址給DI MOVAL,CH;小時(shí)傳遞給AL XORAH,AH;AH清零 DIVBL;小時(shí)的十位為AH,個(gè)位為AL ADDAX,3030H;轉(zhuǎn)為ASCII碼 MOV[DI+1],AX;將小時(shí)存入[DI+1] MOVAL,CL;將分鐘傳遞給AL XORAH,AH;AH清零 DIVBL;分鐘的高位為AH,低位為AL ADDAX,3030H;轉(zhuǎn)為ASCII碼 MOV[DI+6],AX;將分鐘存入[DI+6] MOVAL,DH;將秒傳遞給AL XORAH,AH;AH清零 DIVBL;秒的高位存入AH,低位存入AL ADDAX,3030H;轉(zhuǎn)換ASCII碼 MOV[DI+11],AX;將秒存入[DI+11] CURSOR_POSITION8,21H SHOWTIMEDIS;顯示TIMEDIS中內(nèi)容系統(tǒng)時(shí)間 RET;時(shí)間調(diào)用返回 TIMEDISPLAYENDP此處子程序?yàn)檎{(diào)用系統(tǒng)時(shí)間,然后到屏幕輸出,系統(tǒng)時(shí)間的調(diào)用采用DOS功能調(diào)用,AH=2CH;INT21H,調(diào)用后的系統(tǒng)時(shí)間,將小時(shí)的二進(jìn)制碼保存在CH寄存器中,分鐘的二進(jìn)制碼存入CL寄存器中,秒數(shù)的二進(jìn)制碼存入DH寄存器中,然后DL寄存器中的值為1/100秒,根據(jù)設(shè)計(jì)要求只需要保存CH、CL、DH中的內(nèi)容,并將其除以10,先轉(zhuǎn)換為BCD碼,再加上3030H,轉(zhuǎn)換為ASCII碼,存入設(shè)置的數(shù)據(jù)緩沖區(qū)。然后定義光標(biāo)位置,調(diào)用輸出命令,將其輸出至屏幕。3.4.7調(diào)用系統(tǒng)日期顯示程序介紹DATEDISPLAYPROCNEAR;定義日期顯示子程序 MOVAH,2AH;取當(dāng)前系統(tǒng)日期 INT21H MOVAX,CX;送年份入AX(二進(jìn)制數(shù)) MOVBX,10;(BX)=10 LEASI,DATEDIS+14;使SI指向年的最后一位 MOVCX,4;(CX)=4 PUSHDX;保存月日TAB:XORDX,DX;DX清零 DIVBX;(DX,AX)/BX,商送AX,余數(shù)送DX() ADDDL,30H;余數(shù)與30H相加變?yōu)樽址腁SCII碼 MOV[SI],DL;余數(shù)送入SI所指向的字節(jié)區(qū) DECSI;SI減一 LOOPTAB ;循環(huán)(將4個(gè)8字節(jié)的年份存入SI) POPDX;DX還原 MOVAL,DL;日送AL XORAH,AH;AH清零 DIVBL;AX/BL,商送AH,余數(shù)送AL ADDAX,3030H;轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼 SUBSI,4;使SI指向日的第一位 MOV[SI],AX;(AX)送SI所指向的字節(jié)區(qū)(將4位表示變?yōu)?位表示) MOVAL,DH;月送AL XORAH,AH;AH清零 DIVBL;AX/BL,商送AH,余數(shù)送AL ADDAX,3030H;轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼 SUBSI,5;使SI指向月的第一位 MOV[SI],AX;(AX)送SI所指向的字節(jié)區(qū) CURSOR_POSITION10H,28H SHOWDATEDIS;顯示日期 CURSOR_POSITION10H,10H SHOWmess3 RET;調(diào)用后返回DATEDISPLAYENDP此處子程序?yàn)檎{(diào)用系統(tǒng)日期,然后到屏幕輸出,系統(tǒng)時(shí)間的調(diào)用采用DOS功能調(diào)用,AH=2AH;INT21H,調(diào)用后的系統(tǒng)日期,將年份的二進(jìn)制碼保存在CX寄存器中,月份的二進(jìn)制碼存入DH寄存器中,日的二進(jìn)制碼存入DL寄存器中。其流程跟時(shí)間顯示基本一致,將提取的二進(jìn)制碼轉(zhuǎn)換為ASCII碼,存入緩沖區(qū),定義輸出位置輸出。3.4.8計(jì)時(shí)器程序介紹CHRONOGRAPHPROCNEAR CURSOR_POSITION10H,14H SHOWmess4 CURSOR_POSITION10H,28H SHOWmess5CHPH: CALLTIMEDISPLAYSCANKEY CALLDELAY_1 JECLEAR INPKEY CMPBL,53H JESTAT JMPCLEARSTAT: CALLTIMEDISPLAY CALLTIME SCANKEY JESTAT INPKEY CMPBL,50H JEPAUSE CMPBL,54H JEPAUSE JMPSTATPAUSE: CALLTIMEDISPLAY SCANKEY JEPAUSE INPKEY CMPBL,47H JESTAT CMPBL,43H JECLEAR CALLTIMEDISPLAY JMPPAUSECLEAR:CALLTIMEDISPLAY MOVCOUNT1,0 MOVCOUNT2,0 MOVCOUNT3,0 RET CHRONOGRAPHENDP計(jì)時(shí)器子程序首先顯示提示界面,通過(guò)按鍵的判斷執(zhí)行不同的功能選擇,主要通過(guò)提取鍵盤(pán)值,然后進(jìn)行程序的跳轉(zhuǎn)完成。3.4.9將二進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼程序介紹CHANGEPROCNEARMOVCX,10D;顯示十位CALLDECDIVMOVCX,1;顯示個(gè)位CALLDECDIVRETCHANGEENDPDECDIVPROCNEAR;轉(zhuǎn)化成字符顯示MOVDX,0DIVCXMOVBX,0ADDAL,30H;轉(zhuǎn)換成ASCIIMOVAH,0EHINT10H;顯示一個(gè)字符MOVAX,DXRETDECDIVENDP以上程序完成的為進(jìn)制轉(zhuǎn)換,首先將二進(jìn)制數(shù)除以10將商和余數(shù)分別保存,轉(zhuǎn)換為BCD碼,分十位、個(gè)位分別操作,分別加上30H調(diào)整為ASCII碼。3.4.10計(jì)時(shí)程序介紹TIME PROC PUSHAX PUSHDXMAIN: MOVAH,2 INT1AH CMPDH,SECOND JNEGET JMPNEXTGET: MOVSECOND,DH INCCOUNT1 MOVAX,COUNT1 CMPAX,32H JNENEXT4 MOVCOUNT1,0 INCCOUNT2 MOVAX,COUNT2 CMPAX,32H JNENEXT4 MOVCOUNT2,0 INCCOUNT3NEXT4: CURSOR_POSITION10H,28H MOVAX,COUNT3 CALLCHANGE MOVAH,2 MOVDL,':' INT21H CURSOR_POSITION10H,2BH MOVAX,COUNT2 CALLCHANGE MOVAH,2 MOVDL,':' INT21H CURSOR_POSITION10H,2EH MOVAX,COUNT1 CALLCHANGENEXT: POPDX POPAX RETTIME ENDP此程序?yàn)橛?jì)時(shí)器的主體程序,通過(guò)功能調(diào)用AH=2;INT1AH,得到系統(tǒng)時(shí)間,并且得到系統(tǒng)現(xiàn)在的秒數(shù),保存至DH寄存器中,首先將SECOND賦值為0,然后和提取的秒對(duì)比,若相等,則輸出此時(shí)的計(jì)時(shí)的小時(shí)、分鐘、秒,若不想等,秒加一,且將DH的值賦給SECOND,在此輸出,同時(shí)考慮分鐘的最大值,若到達(dá)60,則將分鐘值加一,秒數(shù)清零,輸出,若分鐘數(shù)達(dá)到60,則將小時(shí)數(shù)加一,分鐘數(shù)清零輸出。
4調(diào)試結(jié)果及分析4.1程序初始運(yùn)行狀態(tài)程序運(yùn)行之后,屏幕出現(xiàn)程序初始界面如圖4-1所示。圖4-1程序初始界面在此界面下,如果有按鍵“Q”(必須是大寫(xiě)的)按下,則會(huì)退出此執(zhí)行界面。根據(jù)界面顯示的不同提示語(yǔ)句,可根據(jù)不同的輸入實(shí)現(xiàn)不同的功能。4.2日期顯示運(yùn)行結(jié)果在程序初始界面的前提下,按下鍵盤(pán)“D”,則進(jìn)入日期顯示功能,其日期顯示界面如圖4-2所示。在此界面下,會(huì)輸出系統(tǒng)的當(dāng)前日期,只有當(dāng)按下鍵盤(pán)“L”后,退出此功能,且回到程序初始界面。圖4-2日期顯示界面4.3計(jì)時(shí)功能運(yùn)行結(jié)果在程序初始界面的前提下,按下鍵盤(pán)“H”,則進(jìn)入計(jì)時(shí)功能,計(jì)時(shí)功能界面如圖4-3所示。圖4-3計(jì)時(shí)功能界面此界面顯示程序進(jìn)入計(jì)時(shí)器功能,程序準(zhǔn)備好計(jì)時(shí),此事按下鍵盤(pán)“S”,計(jì)時(shí)開(kāi)始,計(jì)時(shí)時(shí)間開(kāi)始運(yùn)行,得到的計(jì)時(shí)功能開(kāi)始后界面如圖4-4所示。圖4-4計(jì)時(shí)功能開(kāi)始后界面在此界面中,顯示已經(jīng)經(jīng)過(guò)的時(shí)間,在此狀態(tài)下,按下鍵盤(pán)“P”,計(jì)時(shí)暫停,界面上的計(jì)時(shí)器出的時(shí)間顯示暫停,不再變化。此時(shí)若按下“G”,計(jì)時(shí)繼續(xù)開(kāi)始,在原來(lái)時(shí)間的基礎(chǔ)上繼續(xù)變化。若有鍵盤(pán)“T”按下,則計(jì)時(shí)停止。如果按下鍵盤(pán)“C”,計(jì)時(shí)器清零,界面計(jì)時(shí)器處的顯示重新為00:00:00,此事等待重新計(jì)時(shí)按鍵“S”,或退出按鍵“L”使屏幕恢復(fù)到初始運(yùn)行狀態(tài)。
5收獲與體會(huì)微機(jī)原理與接口技術(shù)是一門(mén)很有趣的課程,任何一個(gè)計(jì)算機(jī)系統(tǒng)都是一個(gè)復(fù)雜的整體,學(xué)習(xí)計(jì)算機(jī)原理是要涉及到整體的每一部分。討論某一部分原理時(shí)又要涉及到其它部分的工作原理。這樣一來(lái),不僅不能在短時(shí)間內(nèi)較深入理解計(jì)算機(jī)的工作原理,而且也很難孤立地理解某一部分的工作原理。所以,在循序漸進(jìn)的課堂教學(xué)過(guò)程中,我總是處于“學(xué)會(huì)了一些新知識(shí),弄清了一些原來(lái)保留的問(wèn)題,又出現(xiàn)了一些新問(wèn)題”的循環(huán)中,直到課程結(jié)束時(shí),才把保留的問(wèn)題基本搞清楚。在此次的課程設(shè)計(jì)的上機(jī)與理論學(xué)習(xí),帶給了我更深的感受。此次課程設(shè)計(jì)讓我了解到編寫(xiě)程序的復(fù)雜性,必須保持編寫(xiě)程序時(shí)的細(xì)心認(rèn)真。為了編寫(xiě)程序方便,以及程序調(diào)試的方便,將程序進(jìn)行分塊書(shū)寫(xiě),便于程序的閱讀、改正,以及更多功能的增添。同時(shí)在程序的運(yùn)行、調(diào)試過(guò)程也遇到了比較繁瑣的難題。第一是光標(biāo)的閃爍問(wèn)題,由于要不斷的調(diào)用系統(tǒng)時(shí)間,不斷的光標(biāo)定位,然后輸出到屏幕顯示。由于時(shí)間比較快,所以不斷閃爍。最后選擇解決方案為設(shè)置光標(biāo)的屬性,將光標(biāo)設(shè)置為隱藏不顯示。第二是功能選擇問(wèn)題,由于跳轉(zhuǎn)的選項(xiàng)較多,使得各功能的進(jìn)入退出出現(xiàn)問(wèn)題,經(jīng)過(guò)不斷的調(diào)試,整理思路,調(diào)整程序順序,以達(dá)到最后的功能。第三就是計(jì)時(shí)器功能的實(shí)現(xiàn),需要不斷的需系統(tǒng)時(shí)間進(jìn)行對(duì)比,系統(tǒng)時(shí)間變化一秒,計(jì)時(shí)器數(shù)值增加一秒,同時(shí)將計(jì)時(shí)器存儲(chǔ)的數(shù)值分為小時(shí)、分鐘、秒存儲(chǔ),且需要將其轉(zhuǎn)換為ASCII碼進(jìn)行輸出。在解決程序設(shè)計(jì)出現(xiàn)的問(wèn)題的同時(shí)我也體會(huì)到在二進(jìn)制轉(zhuǎn)化成ASCII碼的過(guò)程中,二進(jìn)制數(shù)首先轉(zhuǎn)化為雙四位的BCD碼,再將高四位低四位分別相加30H,從而轉(zhuǎn)化為ASCII碼,此時(shí)要對(duì)照書(shū)本ASCII碼表,了解電腦CPU如何將ASCII碼的信息轉(zhuǎn)換成顯示字符。再有要多多學(xué)習(xí)經(jīng)典程序書(shū)寫(xiě)思路、方式,且熟練掌握,將其作為自己的子程序運(yùn)用到自己的設(shè)計(jì)當(dāng)中去。此次課程設(shè)計(jì),讓我們將理論知識(shí)于實(shí)際相結(jié)合,自己深入設(shè)計(jì)其中,感到了自己的進(jìn)步,也發(fā)現(xiàn)了自己的不足。明確自己需要在以后不斷學(xué)習(xí),不斷進(jìn)取,同時(shí)也感謝老師在此次課程設(shè)計(jì)中的指導(dǎo)幫助。
參考文獻(xiàn)姚燕南,薛均義主編.微型計(jì)算機(jī)原理與接口技術(shù).高等教育出版社,2004李群芳,張士軍,黃建編著.單片機(jī)微型計(jì)算機(jī)與接口技術(shù).電子工業(yè)出版社,2005薛均義主編.微型計(jì)算機(jī)原理及應(yīng)用(Intel80X86系列).機(jī)械工業(yè)出版,2002黃明,梁旭,常征著.匯編語(yǔ)言程序設(shè)計(jì)習(xí)題詳解.北京:機(jī)械工業(yè)出版社,2004王永山,楊宏五,楊嬋娟著.微型計(jì)算機(jī)原理與應(yīng)用(第二版).西安:西安電子科技大學(xué)出版社,2006溫冬蟬,沈美明.IBMPC匯編語(yǔ)言程序設(shè)計(jì)(第2版).北京:清華大學(xué)出版社,2002姚燕南,薛均義主編.微型計(jì)算機(jī)原理與接口技術(shù).北京:高等教育出版社,2004
附錄:設(shè)計(jì)源程序;name:ELECTRONICCLOCK;designbybaixiaomeng,dianqi1107;*****************************清屏*******************************CLEAR_SCREENMACROOP1,OP2,OP3,OP4;清屏 PUSHAX;入棧保護(hù)現(xiàn)場(chǎng)PUSHBXPUSHCXPUSHDX MOVAH,06H;向上滾屏 MOVAL,00H;全屏幕為空白 MOVBH,79H;空白區(qū)域缺省屬性 MOVCH,OP1;左上角行號(hào) MOVCL,OP2;左上角列號(hào) MOVDH,OP3;右下角行號(hào) MOVDL,OP4;右下角列號(hào) INT10H;BIOS對(duì)屏幕及顯示器中斷調(diào)用 POPDX;出棧顯示數(shù)據(jù)POPCXPOPBXPOPAX ENDM;******************************光標(biāo)定位******************************* CURSOR_POSITIONMACROROW,CLM;設(shè)置光標(biāo)位置宏定義PUSHAX;入棧保護(hù)現(xiàn)場(chǎng)PUSHBXPUSHCXPUSHDX MOVAH,2MOVBH,0;光標(biāo)頁(yè)號(hào)MOVDH,ROW;光標(biāo)行號(hào)MOVDL,CLM;光標(biāo)列號(hào)INT10H;BIOS對(duì)屏幕及顯示器中斷調(diào)用 MOVAH,1;置光標(biāo)類(lèi)型,不顯示光標(biāo) MOVCH,20H INT10HPOPDX;出棧顯示數(shù)據(jù)POPCXPOPBXPOPAX ENDM;**********************************字符顯示***************************** SHOWMACROB ;宏定義顯示寄存器中內(nèi)容 LEADX,B ;將b的首地址給DX MOVAH,9 ;顯示器I/O,多字符輸出 INT21H ;DOS中斷調(diào)用 ENDM ;**************************從鍵盤(pán)輸入一個(gè)字符************************INPUTMACROPUSHAXMOVAH,1 INT21H MOVBL,AL POPAX ENDM;********************************讀取鍵盤(pán)狀態(tài)***************************SCANKEYMACRO PUSHAX MOVAH,01H INT16H POPAX ENDM ;**********************************讀取鍵盤(pán)值***************************INPKEYMACRO PUSHAX MOVAH,00H INT16H MOVBL,AL POPAX ENDM;*******************************定義數(shù)據(jù)段******************************DATASEGMENTmess1db'Welcometomybeautiful!','$',0ah,0dhmess2db'',0ah,0dh db'+~~~(*^__^*)~~~+',0ah,0dh db'++',0ah,0dh db'+ELECTRONICCLOCK+',0ah,0dh db'+baixiaomeng+',0ah,0dh db'+Thetimeisnow:+',0ah,0dhdb'++',0ah,0dh db'++',0ah,0dh db'+AdditionalFunction:+',0ah,0dh db'+1.ShowDateTimeOpen:DClose:L+',0ah,0dh db'+2.ChronographOpen:HClose:L+',0ah,0dh db'+Start:SPause:PContinue:GStop:TClear:C+',0ah,0dh db'++',0ah,0dh db'++',0ah,0dh db'++',0ah,0dh db'+PressQbuttontoquit+',0ah,0dh db'+****************************************************+','$' mess3db'TheDateTimeisnow:',0ah,0dh,'$' mess4db'ThePastTimeis:',0ah,0dh,'$' mess5db'00:00:00',0ah,0dh,'$'mess6db'ZhengDianBaoShi',0ah,0dh,'$' D_BUF1db20DUP(?);在數(shù)據(jù)段開(kāi)辟一時(shí)間顯示緩沖區(qū) D_BUF2db20DUP(?)SECONDDB0 COUNT1DW0 ;秒COUNT2DW0 ;分COUNT3DW0 ;時(shí) DATEDISDB'00-00-0000',0AH,'$';顯示DATE TIMEDISDB'00',3AH,'00',3AH,'00',0AH,'$' DATAENDS;*********************************定義堆棧段****************************STACKSEGMENTdb100dup(?)STACKENDS;***********************************定義指令段**************************CODESEGMENTASSUMEcs:code,ss:stack,ds:dataSTART: MOVAH,0;設(shè)置顯示模式 MOVAL,3 ;文字分辨率80*25顏色16 INT10H;BIOS對(duì)屏幕及顯示器中斷調(diào)用 CLEAR_SCREEN00H,00H,50H,50H;調(diào)用宏定義設(shè)置區(qū)域 MOVAX,DATA;數(shù)據(jù)段首地址給AX MOVDS,AX;數(shù)據(jù)段首地址給DS MOVAX,STACK;堆棧段首地址給AX MOVSS,AX;堆棧段首地址給SS CURSOR_POSITION1,1 SHOWmess1 CURSOR_POSITION2,1 SHOWmess2LOOP1: CALLTIMEDISPLAY SCANKEY JELOOP1 INPKEY CMPBL,57H JEZDTM CMPBL,44H JEDATE CMPBL,48H JECHRO CMPBL,51H JEQUIT JMPLOOP1DATE:CALLDATEDISPLAYCALLTIMEDISPLAYSCANKEY JEDATE INPKEY CMPBL,4CH JNEDATE CLEAR_SCREEN0FH,0FH,10H,37H CURSOR_POSITION0EH,15JMPLOOP1CHRO: CALLCHRONOGRAPHCALLTIMEDISPLAYSCANKEY JECHRO INPKEY CMPBL,4CH JNECHRO CLEAR_SCREEN0FH,0FH,10H,37H CURSOR_POSITION0EH,15JMPLOOP1`ZDTM:CURSOR_POSITION10H,1DHSHOWmess6 CALLTIMEDISPLAYSCANKEY JEZDTM INPKEY CMPBL,4CH JNEZDTM CLEAR_SCREEN0FH,0FH,10H,37HJMPLOOP1QUIT:CURSOR_POSITION14H,1HMOVAH,4CHINT21H ;***********************秒表子程序***************************CHRONOGRAPHPROCNEAR CURSOR_POSITION10H,14H SHOWmess4 CURSOR_POSITION10H,28H SHOWmess5CHPH: CALLTIMEDISPLAYSCANKEY CALLDELAY_1 JECLEAR INPKEY CMPBL,53H JESTAT JMPCLEARSTAT: CALLTIMEDISPLAY CALLTIME SCANKEY JESTAT INPKEY CMPBL,50H JEPAUSE CMPBL,54H JEPAUSE JMPSTATPAUSE: CALLTIMEDISPLAY SCANKEY JEPAUSE INPKEY CMPBL,47H JESTAT CMPBL,43H JECLEAR CALLTIMEDISPLAY JMPPAUSECLEAR:CALLTIMEDISPLAY MOVCOUNT1,0 MOVCOUNT2,0 MOVCOUNT3,0 RET CHRONOGRAPHENDP ;***********************時(shí)間顯示子程序***********************TIMEDISPLAYPROCNEAR;定義時(shí)間顯示子程序 MOVAH,2CH;取當(dāng)前系統(tǒng)時(shí)間 INT21H MOVBX,10 LEADI,TIMEDIS;TIMEDIS的首地址給DI MOVAL,CH;小時(shí)傳遞給AL XORAH,AH;AH清零 DIVBL;小時(shí)的十位為AH,個(gè)位為AL ADDAX,3030H;轉(zhuǎn)為ASCII碼 MOV[DI+1],AX;將小時(shí)存入[DI+1] MOVAL,CL;將分鐘傳遞給AL XORAH,AH;AH清零 DIVBL;分鐘的高位為AH,低位為AL ADDAX,3030H;轉(zhuǎn)為ASCII碼 MOV[DI+6],AX;將分鐘存入[DI+6] MOVAL,DH;將秒傳遞給AL XORAH,AH;AH清零 DIVBL;秒的高位存入AH,低位存入AL ADDAX,3030H;轉(zhuǎn)換ASCII碼 MOV[DI+11],AX;將秒存入[DI+11] CURSOR_POSITION8,21H SHOWTIMEDIS;顯示TIMEDIS中內(nèi)容系統(tǒng)時(shí)間 RET;時(shí)間調(diào)用返回 TIMEDISPLAYENDP;************************延遲時(shí)間子程序****************************DELAY PROC PUSHCX MOVCX,0FFFHNEXT_D:NOP LOOPNEXT_D POPCX RETDELAY ENDP;*************************短延時(shí)**********************************DELAY_1 PROC PUSHCX MOVCX,00FFHNEXT_D1:NOP LOOPNEXT_D1 POPCX RETDELAY_1 ENDP;****************************日期顯示子程序*****
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 茵陳藥效評(píng)價(jià)體系構(gòu)建-洞察分析
- 纖維材料輕量化-洞察分析
- 水族館疾病預(yù)防與控制措施-洞察分析
- 水環(huán)境治理與生態(tài)修復(fù)-洞察分析
- 移動(dòng)支付與金融創(chuàng)新-洞察分析
- 穩(wěn)定性同位素分析-洞察分析
- 語(yǔ)言類(lèi)型學(xué)與社會(huì)文化-洞察分析
- 腺癌化療藥物聯(lián)合生物治療研究-洞察分析
- 藥物靶點(diǎn)篩選與疾病關(guān)聯(lián)-洞察分析
- 2024年桂東縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- QCT1067.5-2023汽車(chē)電線束和電器設(shè)備用連接器第5部分:設(shè)備連接器(插座)的型式和尺寸
- 《YST 550-20xx 金屬熱噴涂層剪切強(qiáng)度的測(cè)定》-編制說(shuō)明送審
- 江西省上饒市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量測(cè)試物理試題(解析版)
- 2024年財(cái)務(wù)風(fēng)險(xiǎn)評(píng)估和控制培訓(xùn)資料
- 2024建筑消防設(shè)施檢測(cè)報(bào)告書(shū)模板
- 兒童流行性感冒的護(hù)理
- 萬(wàn)科保安公司測(cè)評(píng)題及答案
- 揭露煤層、貫通老空專(zhuān)項(xiàng)安全技術(shù)措施
- 醫(yī)美項(xiàng)目水光培訓(xùn)課件
- 個(gè)人在工作中的服務(wù)態(tài)度和客戶(hù)滿(mǎn)意度
- 部長(zhǎng)述職答辯報(bào)告
評(píng)論
0/150
提交評(píng)論