版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..秒表程序設(shè)計(jì)摘要:本課程設(shè)計(jì)旨在設(shè)計(jì)一個(gè)秒表計(jì)時(shí)并儲(chǔ)存計(jì)時(shí)的程序,可控制秒表的計(jì)時(shí)開(kāi)始及結(jié)束,實(shí)現(xiàn)秒表的準(zhǔn)確計(jì)時(shí),存儲(chǔ)計(jì)時(shí)數(shù)據(jù),翻閱計(jì)時(shí)數(shù)據(jù),清除計(jì)時(shí)數(shù)據(jù)等功能。本程序是基于8086微機(jī)系統(tǒng)設(shè)計(jì),在MasmforWindows軟件下采用匯編語(yǔ)言編寫(xiě),通過(guò)選擇8253定時(shí)器0,工作方式3,輸出周期為10ms的方波,產(chǎn)生穩(wěn)定延時(shí),調(diào)用各種中斷完成程序各邏輯模塊設(shè)計(jì),通過(guò)鍵盤(pán)掃描得到輸入的值,執(zhí)行對(duì)應(yīng)功能。每10ms計(jì)時(shí)一次,每60秒一次循環(huán),存儲(chǔ)數(shù)據(jù)設(shè)定為最多20組,可隨時(shí)存入數(shù)據(jù),操作自由度極高,經(jīng)測(cè)試,60秒計(jì)時(shí)誤差不超過(guò)1.2%,可實(shí)現(xiàn)準(zhǔn)確計(jì)時(shí)及存儲(chǔ)功能。關(guān)鍵字:秒表、顯示計(jì)時(shí)、存儲(chǔ)計(jì)時(shí)、匯編設(shè)計(jì)任務(wù)分析與方案選擇本設(shè)計(jì)需實(shí)現(xiàn)秒表穩(wěn)定計(jì)時(shí),并顯示,需要存儲(chǔ)計(jì)時(shí)數(shù)據(jù)時(shí)可立即將當(dāng)前計(jì)時(shí)數(shù)據(jù)存入緩沖區(qū),暫停計(jì)時(shí)時(shí)立即結(jié)束并可復(fù)位或者繼續(xù)計(jì)數(shù)或者查看存儲(chǔ)數(shù)據(jù),在查看數(shù)據(jù)時(shí)可前后翻閱存儲(chǔ)數(shù)據(jù),并可清除,當(dāng)退出查看數(shù)據(jù)后可使秒表繼續(xù)計(jì)數(shù)或復(fù)位。方案選擇系統(tǒng)硬件設(shè)計(jì)選擇本設(shè)計(jì)采用8253定時(shí)器0,工作方式3獲得周期為10ms的穩(wěn)定計(jì)時(shí)單位,使用8086CPU進(jìn)行譯碼,當(dāng)定時(shí)到1s的時(shí)候產(chǎn)生一個(gè)中斷信號(hào),在中斷服務(wù)程序進(jìn)行秒的計(jì)數(shù),并送入相應(yīng)的存儲(chǔ)單元,8259芯片提供中斷,并用8255的A口接七段數(shù)碼管的段選信號(hào),B口接七段數(shù)碼管的位選信號(hào)。系統(tǒng)軟件設(shè)計(jì)選擇在代碼實(shí)現(xiàn)上,對(duì)于按鍵的輸入上可以直接讀取或是先掃描鍵盤(pán)再讀取,本設(shè)計(jì)只存在各邏輯功能之間的轉(zhuǎn)換,因此選擇先掃描鍵盤(pán)再讀取的方法,可提高代碼的容錯(cuò)率及可操作性;使用宏定義及光標(biāo)定位的方法,并配合各種中斷設(shè)計(jì)界面圖形及字體顏色,宏定義可以減少代碼的重復(fù)度,且便于修改功能,可任意調(diào)用,通過(guò)定位光標(biāo)可確定輸出位置,可實(shí)現(xiàn)同一位置的動(dòng)態(tài)輸出;對(duì)于時(shí)間的掃描,可以選擇直接讀取系統(tǒng)當(dāng)前的時(shí)間或是讀取系統(tǒng)時(shí)鐘的計(jì)時(shí)單位,前者的讀取直接是BCD碼非常便于輸出顯示,后者需要不停的讀取計(jì)時(shí)單位讀取次數(shù)非常多,而且結(jié)果不是BCD碼,需要做判斷轉(zhuǎn)換輸出,此設(shè)計(jì)采用讀取系統(tǒng)時(shí)鐘的計(jì)時(shí)單位,雖然需要不停的讀取計(jì)時(shí)單位讀取次數(shù)非常多,而且結(jié)果不是BCD碼,需要做判斷轉(zhuǎn)換輸出,但是經(jīng)過(guò)與實(shí)際情況比較,后者的計(jì)時(shí)更為準(zhǔn)確,區(qū)分度更大。2詳細(xì)設(shè)計(jì)2.1理論分析與計(jì)算此設(shè)計(jì)需要實(shí)現(xiàn)單位為1秒的秒表穩(wěn)定計(jì)時(shí),8253定時(shí)器0工作方式3,外部提供一個(gè)時(shí)鐘作為CLK信號(hào),頻率f=1.1931816MHz,為得到周期為10ms的方波,應(yīng)對(duì)8253定時(shí)器設(shè)置計(jì)數(shù)初值為1.1932×10×10^-3=11932。因此,8259A每隔10ms向CPU申請(qǐng)一次中斷??捎?0作為基本計(jì)時(shí)單位,此設(shè)計(jì)的毫秒每一個(gè)計(jì)時(shí)單位改變一次,要達(dá)到1秒的計(jì)時(shí),需要的計(jì)時(shí)單位為:1000ms/10=100,則計(jì)數(shù)滿足100個(gè)計(jì)時(shí)單位時(shí),即毫秒計(jì)時(shí)到100時(shí),秒位加1,完成1秒穩(wěn)定計(jì)時(shí)。2.2算法設(shè)計(jì)本設(shè)計(jì)的算法包括鍵盤(pán)檢測(cè)及讀取、秒表計(jì)時(shí)及輸出,數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)操作、界面及提示詞設(shè)計(jì)。2.2.1鍵盤(pán)檢測(cè)及讀取使用21H中斷的0BH中斷檢測(cè)是否有鍵盤(pán)按下,如果沒(méi)有鍵盤(pán)按下則繼續(xù)檢測(cè),如果有鍵盤(pán)按下使用21H中斷的08H中斷判斷是否為所設(shè)定的值,如果不是,繼續(xù)檢測(cè)輸入,如果是便按邏輯進(jìn)行。2.2.2秒表計(jì)時(shí)及輸出使用8253定時(shí)器0,工作方式3獲得的周期為,10ms的方波作為計(jì)時(shí)單位,調(diào)用1CH中斷,讀取1CH原中斷向量,并設(shè)置中斷向量,取計(jì)時(shí)處理程序偏移地址及段地址,計(jì)時(shí)處理程序中毫秒加一直到100ms,秒位便加一,毫秒清零,繼續(xù)計(jì)時(shí)。定位光標(biāo),在光標(biāo)位置輸出計(jì)時(shí),顯示格式為00:00:00,計(jì)時(shí)顯示采用高位低位分開(kāi)顯示,將計(jì)時(shí)數(shù)值除以10,得到商和余數(shù),商作為高位,余數(shù)作為低位,當(dāng)計(jì)時(shí)單位滿1后,毫秒位加1毫秒,毫秒計(jì)時(shí)到100,秒位加1并動(dòng)態(tài)顯示。2.2.3數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)段中定義一個(gè)大小為40字的全為0的緩沖區(qū)用于存儲(chǔ)計(jì)時(shí)數(shù)值,在代碼段中合適位置取緩沖區(qū)的偏移地址給寄存器,存儲(chǔ)方式采用高位低位分開(kāi)存儲(chǔ)的方式,將秒數(shù)值除以10,商存前一個(gè)字節(jié),余數(shù)存后一個(gè)字節(jié),存完高位后寄存器指向下一個(gè)字節(jié)存低位,低位存完之后寄存器再指向下一字節(jié),用于存儲(chǔ)毫秒計(jì)時(shí)的高位。2.2.4數(shù)據(jù)操作定義光標(biāo),取緩沖區(qū)的偏移地址給寄存器,在合適位置從第一次存儲(chǔ)的數(shù)據(jù)開(kāi)始顯示,此時(shí)寄存器指向第一個(gè)字節(jié),調(diào)用21H的0BH檢測(cè)鍵盤(pán)輸入,如有鍵盤(pán)輸入,調(diào)用21H的08H檢測(cè)鍵入值,當(dāng)接收操作為查看下一個(gè)存儲(chǔ)數(shù)據(jù)時(shí),寄存器加2,指向下一組數(shù)據(jù)的高位,并調(diào)用21H的09H中斷顯示當(dāng)前數(shù)值,寄存器加一,調(diào)用21H的09H中斷顯示當(dāng)前所指數(shù)據(jù);當(dāng)接收操作為查看上一個(gè)存儲(chǔ)數(shù)據(jù)時(shí),寄存器減二,指向上一組數(shù)據(jù)的高位,并調(diào)用21H的09H中斷顯示當(dāng)前數(shù)值,寄存器加一,調(diào)用21H的09H中斷顯示當(dāng)前所指數(shù)據(jù);當(dāng)接收操作為清除當(dāng)前數(shù)據(jù)時(shí),將0存入當(dāng)前寄存器所指字節(jié)及下一字節(jié),并調(diào)用21H的09H中斷顯示當(dāng)前數(shù)值:00:00;當(dāng)接收操作為返回計(jì)時(shí)時(shí),判斷鍵入,跳轉(zhuǎn)到相應(yīng)操作。2.2.5界面及提示詞設(shè)計(jì)在數(shù)據(jù)段定義提示語(yǔ)句字符串,使用10H的02H中斷定位光標(biāo),在代碼段中相應(yīng)位置取代碼段的偏移地址,使用21H的09H中斷顯示字符串,使用宏定義,擁有兩個(gè)參數(shù),一個(gè)是光標(biāo)位置,所在行數(shù)和列數(shù),調(diào)用10H的02H中斷置光標(biāo),調(diào)用21H的09H顯示字符,可實(shí)現(xiàn)在任意位置顯示任意字符,用此宏定義繪制計(jì)時(shí)區(qū)及記憶區(qū)圖形,搭配10H的06H中斷可在任一區(qū)域進(jìn)行顯示,為使各區(qū)域鮮明區(qū)分,改變10H的06H中斷中出口參數(shù)BH的值,設(shè)置各字符串為不同顏色,實(shí)現(xiàn)彩色輸出,增強(qiáng)觀賞性。2.3硬件電路設(shè)計(jì)11.193MHZ圖1,硬件電路設(shè)計(jì)在整個(gè)電子鐘的設(shè)計(jì)中。我們使用8253用于定時(shí)功能,由于8259的中斷只能是電平與電緣觸發(fā),所以我們選擇電緣觸發(fā)。由于我們選擇一次寫(xiě)入計(jì)數(shù)初值后的能循環(huán)進(jìn)行,所以我們選擇工作方式0在每次的計(jì)數(shù)初值的N-1是產(chǎn)生一個(gè)脈沖。在CLK0引腳接入1.1932MHZ的時(shí)鐘周期,而將計(jì)數(shù)初值寫(xiě)為11932,繼而在OUT0會(huì)在每1ms產(chǎn)生脈沖,在控制字的時(shí)候采用二進(jìn)制計(jì)數(shù),所以其控制字為00110110B,所以8253能產(chǎn)生準(zhǔn)確的計(jì)時(shí)功能。8255A芯片,將8255A的A,B口均工作在工作方式0的下,且為輸出控制LED的位選與片選,而C口用于修改時(shí)間用,同樣工作于方式0低四位輸出。所以其控制字為81H。8259A芯片用于產(chǎn)生中斷信號(hào)去自動(dòng)修改秒針。所以只需將8259的IR0產(chǎn)生中斷,其他未屏蔽,單片8259,上升沿中斷,要寫(xiě)ICW4,中斷號(hào)為20H,工作在8086方式。2.4軟件設(shè)計(jì)在軟件實(shí)現(xiàn)上,對(duì)于按鍵的輸入上采用DOS系統(tǒng)功能,通過(guò)功能號(hào)0BH對(duì)應(yīng)功能掃描鍵盤(pán)判斷是否有按鍵被按下,如果有則通過(guò)功能號(hào)08H對(duì)應(yīng)功能讀取鍵盤(pán)緩沖區(qū)得到按鍵輸入信息。1S定時(shí)采用8253定時(shí)器0,工作方式3獲得10ms穩(wěn)定計(jì)時(shí)單位,設(shè)置1CH中斷向量,程序進(jìn)行時(shí),不斷讀取1CH中斷服務(wù)程序是否計(jì)數(shù)到1個(gè)計(jì)時(shí)單位。計(jì)時(shí)儲(chǔ)存采用高位低位分開(kāi)存儲(chǔ)到DW類型的緩沖區(qū)中方法,讀取存儲(chǔ)也采用高低位分別讀取的方法。界面設(shè)計(jì)采用定義宏定義的方法,參數(shù)包括光標(biāo)定位位置及需要輸出的字符串,調(diào)用INT10H的06H中斷設(shè)置每個(gè)區(qū)域的顯示及字符串的顏色。軟件代碼流程圖:圖2:設(shè)計(jì)流程圖圖2為設(shè)計(jì)流程圖,程序運(yùn)行時(shí)會(huì)等待輸入,當(dāng)輸入為S,便開(kāi)始計(jì)時(shí),開(kāi)始計(jì)時(shí)時(shí)可輸入E或者R,輸入R,存儲(chǔ)當(dāng)前計(jì)時(shí);輸入E,暫停計(jì)數(shù),程序在此等待輸入,當(dāng)輸入為C,繼續(xù)計(jì)數(shù);當(dāng)輸入為D,重新計(jì)數(shù);當(dāng)輸入為W,查看存儲(chǔ)區(qū)所存儲(chǔ)數(shù)據(jù),存儲(chǔ)區(qū)顯示第一次存儲(chǔ)的數(shù)據(jù),等待輸入,當(dāng)輸入為N,查看下一組存儲(chǔ)數(shù)據(jù);當(dāng)輸入U(xiǎn),查看上一組存儲(chǔ)數(shù)據(jù);當(dāng)輸入D,清除當(dāng)前組數(shù)據(jù);當(dāng)輸入B,返回計(jì)時(shí)區(qū),等待輸入。3系統(tǒng)調(diào)試與效果分析運(yùn)行效果圖:圖3為程序開(kāi)始界面,按下S開(kāi)始計(jì)時(shí)圖3:程序開(kāi)始界面圖4為程序開(kāi)始計(jì)時(shí)界面,按下R存儲(chǔ)當(dāng)前計(jì)時(shí),按下E暫停計(jì)時(shí)圖4:程序運(yùn)行界面圖5為存儲(chǔ)區(qū)顯示界面,按下N,查詢下一組存儲(chǔ)數(shù)據(jù),按下U查看上一組存儲(chǔ)數(shù)據(jù),按下D清除當(dāng)前組數(shù)據(jù),按下B返回計(jì)時(shí)區(qū)重新等待操作。圖5:存儲(chǔ)區(qū)顯示界面圖6,為當(dāng)前存儲(chǔ)清零,按下U,顯示上一組,按下N,顯示下一組,按下B,返回計(jì)時(shí)。圖6:清除當(dāng)前存儲(chǔ)區(qū)4問(wèn)題解決4.1計(jì)時(shí)精度初版設(shè)計(jì)采用1AH的00H中斷讀取系統(tǒng)時(shí)鐘進(jìn)行直接計(jì)時(shí)判斷,在程序開(kāi)始的地方判斷是否滿足18個(gè)計(jì)時(shí)單位,滿足則加1秒,此程序是在所有后面判斷鍵盤(pán)輸入、存儲(chǔ)數(shù)據(jù)等操作之后才清零計(jì)時(shí)單位,重新計(jì)數(shù)判斷,在循環(huán)設(shè)計(jì)中,由于每行指令的執(zhí)行都會(huì)消耗一定的時(shí)間,這就造成了在執(zhí)行其他代碼時(shí)計(jì)時(shí)單位沒(méi)有繼續(xù)計(jì)數(shù),使本來(lái)計(jì)時(shí)周期為1秒變?yōu)椴恢挂幻?經(jīng)測(cè)試,60秒計(jì)時(shí)產(chǎn)生誤差超過(guò)25%,完全達(dá)不到秒表計(jì)時(shí)標(biāo)準(zhǔn),未解決計(jì)時(shí)單位計(jì)數(shù)與代碼執(zhí)行的同步問(wèn)題,為解決此問(wèn)題采用了更改中斷向量1CH的辦法,使用8253定時(shí)器0,工作方式3,設(shè)置計(jì)數(shù)初值為11932,并在任意代碼執(zhí)行的同時(shí)讀取計(jì)時(shí)單位計(jì)數(shù)數(shù)值,這就避免了其他代碼執(zhí)行時(shí)計(jì)數(shù)并不進(jìn)行的問(wèn)題,經(jīng)測(cè)試,60秒計(jì)時(shí)產(chǎn)生誤差不超過(guò)1.2%,達(dá)到秒表計(jì)時(shí)標(biāo)準(zhǔn)。4.2各邏輯之間的相互跳轉(zhuǎn)在對(duì)鍵入值進(jìn)行判斷后會(huì)有各邏輯之間的跳轉(zhuǎn),使用JZ,JNZ等條件轉(zhuǎn)移指令時(shí)會(huì)出現(xiàn)錯(cuò)誤,導(dǎo)致程序跳轉(zhuǎn)到非理想位置,由于這個(gè)設(shè)計(jì)主要是各邏輯之間的跳轉(zhuǎn),因此我將各邏輯轉(zhuǎn)移繪制成流程圖,并標(biāo)明所需的跳轉(zhuǎn)轉(zhuǎn)移指令,解決各邏輯之間錯(cuò)誤轉(zhuǎn)移的問(wèn)題。使用條件轉(zhuǎn)移指令跳轉(zhuǎn)時(shí)可能會(huì)發(fā)生跳轉(zhuǎn)指令錯(cuò)誤,是因?yàn)檫@些跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍是有限的,當(dāng)跳轉(zhuǎn)范圍在128B之內(nèi)時(shí)才能使用這些指令,超過(guò)了需要使用長(zhǎng)跳轉(zhuǎn)指令。4.3對(duì)數(shù)據(jù)的存儲(chǔ)數(shù)據(jù)存儲(chǔ)的緩沖區(qū)的類型為DW,有兩個(gè)字節(jié),在存儲(chǔ)時(shí)采用的是高低位分開(kāi)存儲(chǔ)的方式,存儲(chǔ)低位時(shí)使用的是MOV[DI+1],DL,這個(gè)指令可實(shí)現(xiàn)將DL中的值存入DI+1這個(gè)字節(jié),存下一組數(shù)據(jù)時(shí)只INCDI了一次,造成存儲(chǔ)錯(cuò)誤,后來(lái)經(jīng)查閱資料發(fā)現(xiàn)即便執(zhí)行了MOV[DI+1],DL,DI實(shí)際指向的單位仍然是高位字節(jié),因此在程序結(jié)束后應(yīng)INCDI四次才能指向下一組數(shù)據(jù)的高位。參考文獻(xiàn)[1]黃玉清,劉雙虎,楊勝波,微機(jī)原理與接口技術(shù),2015,8<2>:170-187.附件清單程序:;----設(shè)置圖形顯示宏定義-----DISMACROLOCAT,CODEPUSHDXPUSHBXPUSHAXMOVDX,LOCAT;設(shè)置光標(biāo)位置MOVBH,00MOVAH,02HINT10HMOVDL,CODE;輸出字符串MOVAH,02HINT21HPOPAXPOPBXPOPDXENDMDATASEGMENTMSDB0SECDB0MSECDB0MINDB0FLAGDB0SFLAG DB 0 INIE DW 0 INIB DW 0MIDB'00:$'MEMDW40DUP<'0'>SPACEDB'$'NULINE DB 3DUP<0>,'$' WSTR DB"00:00:00",'$'TITDB'********CurriculumDesign********$'OPERATIONDB'Operation:$'PROMPT1DB'1.timezone:Input"S"Start,"R"Remember,"C"Continue,"D"diaplasis,"E"Exit$'PROMPT2DB'2.memoryzone:Input"N"Next,"U"Up,"D"Delete,"B"Back$'TIP1DB'OperatingTimeZone$'TIP2DB'OperatingMemoryZone$'NAMDB'---ByCaiLiqiang$'DATAENDSSTACKSEGMENTSTADB256DUP<0>TOPEQU$-STASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MAINPROCFAR;;;;;;;;;;;;XORAX,AXMOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVDI,OFFSETMEMCALLCLRTIP;標(biāo)題初始化函數(shù);-----標(biāo)題-----MOVDH,00HMOVDL,15HMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETTITMOVAH,09HINT21HCALLCLROPR;提示初始化;-----操作-----MOVDH,02HMOVDL,00HMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETOPERATIONMOVAH,09HINT21H;-----操作區(qū)提示-----MOVDH,03HMOVDL,00HMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETPROMPT1MOVAH,09HINT21HMOVDH,04HMOVDL,00HMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETPROMPT2MOVAH,09HINT21H;-----計(jì)時(shí)區(qū)-----CALLCLRTIM;計(jì)時(shí)區(qū)初始化MOVDH,06HMOVDL,05HMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETTIP1MOVAH,09HINT21H;-----計(jì)時(shí)圖形----DIS070EH,'*'DIS070FH,'*'DIS0710H,'*'DIS0711H,'*'DIS0814H,'*'DIS0916H,'*'DIS0A18H,'*'DIS0B1AH,'*'DIS0D1BH,'*'DIS0E1BH,'*'DIS101AH,'*'DIS1118H,'*'DIS1216H,'*'DIS1314H,'*'DIS1411H,'*'DIS1410H,'*'DIS140FH,'*'DIS140EH,'*'DIS130BH,'*'DIS1209H,'*'DIS1107H,'*'DIS1005H,'*'DIS0E04H,'*'DIS0D04H,'*'DIS0B05H,'*'DIS0A07H,'*'DIS0909H,'*'DIS080BH,'*';-----記憶區(qū)-----CALLCLRMEMMOVDH,06HMOVDL,2DHMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETTIP1MOVAH,09HINT21H;-----記憶區(qū)圖形-----DIS072EH,'*'DIS0731H,'*'DIS0733H,'*'DIS0735H,'*'DIS0737H,'*'DIS0739H,'*'DIS073BH,'*'DIS073EH,'*'DIS093EH,'*'DIS0B3EH,'*'DIS0D3EH,'*'DIS0F3EH,'*'DIS113EH,'*'DIS133EH,'*'DIS143EH,'*'DIS143BH,'*'DIS1439H,'*'DIS1437H,'*'DIS1435H,'*'DIS1433H,'*'DIS1431H,'*'DIS142EH,'*'DIS132EH,'*'DIS112EH,'*'DIS0F2EH,'*'DIS0D2EH,'*'DIS0B2EH,'*'DIS092EH,'*'DIS072EH,'*';-----名字-----CALLCLRNAMEMOVDH,16HMOVDL,3EHMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETNAMMOVAH,09HINT21HCALLLIGHTCALLSHOWALL;計(jì)時(shí)MAINENDP;;;;;;;;;;;;;子程序;;;;;;;;;;;;;-----顯示存儲(chǔ)數(shù)據(jù)程序-----WATCHPROCMOVDI,OFFSETMEM;把MEM的偏移地址送DIMOVDL,[DI];輸出第一個(gè)保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+1];輸出第一個(gè)保存數(shù)據(jù)MOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,[DI+2];輸出第一個(gè)保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+3];輸出第一個(gè)保存數(shù)據(jù)MOVAH,02HINT21HX:MOVAH,0BH;利用INT21H/0BH功能號(hào),檢測(cè)是否有鍵盤(pán)按下INT21HCMPAL,00HJZX;沒(méi)有鍵入,轉(zhuǎn)XMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測(cè)鍵入值INT21HJMPX5X0:CMPAL,'n';'n'判斷是否查看下一個(gè)數(shù)據(jù)JZX1;是,執(zhí)行X1,查看下一個(gè)數(shù)據(jù)JMPX2;否,執(zhí)行X2X1:;查看第一個(gè)數(shù)據(jù)INCDIINCDIINCDIINCDICALLDISMEMMOVDL,[DI]ADDDL,48MOVAH,02HINT21HMOVDL,[DI+1]MOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,[DI+2];輸出第一個(gè)保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+3];輸出第一個(gè)保存數(shù)據(jù)MOVAH,02HINT21HMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測(cè)鍵入值INT21HCMPAL,'d';'d'判斷是否清除JZX4;清除JMPX5;不清除繼續(xù)檢測(cè)X2:CMPAL,'u';'u'檢測(cè)是否查看上一個(gè)數(shù)據(jù)JZX3;是,查看上一個(gè)數(shù)據(jù)JMPX5;否,繼續(xù)檢測(cè)X3:;查看上一個(gè)數(shù)據(jù)DECDIDECDIDECDIDECDICALLDISMEMMOVDL,[DI]ADDDL,48MOVAH,02HINT21HMOVDL,[DI+1]MOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,[DI+2];輸出第一個(gè)保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+3];輸出第一個(gè)保存數(shù)據(jù)MOVAH,02HINT21HMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測(cè)鍵入值INT21HCMPAL,'d';'d'否清除JZX4JMPX5X4:CALLDISMEMMOVDL,00H;清除當(dāng)前數(shù)據(jù),00MOV[DI],DLADDDL,48MOVAH,02HINT21HMOV[DI+1],DLMOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,00H;清除當(dāng)前數(shù)據(jù),00MOV[DI+2],DLADDDL,48MOVAH,02HINT21HMOV[DI+3],DLMOVAH,02HINT21HMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測(cè)鍵入值INT21HX5:CMPAL,'b';'b'判斷是否返回主程序JNZX0;否,繼續(xù)檢測(cè)PUSHAXPUSHBXPUSHDXMOVDH,0EHMOVDL,34HMOVBH,00HMOVAH,02HINT10HPOPDXPOPBXPOPAXMOVDX,OFFSETSPACEMOVAH,09HINT21HRET;返回WATCHENDP;-----計(jì)時(shí)顯示光標(biāo)定位程序------LIGHTPROCNEARPUSHAXPUSHBXPUSHDXMOVDH,0DHMOVDL,0DHMOVBH,00HMOVAH,02HINT10HPOPDXPOPBXPOPAXRETLIGHTENDP;-----顯示存儲(chǔ)光標(biāo)定位程序DISMEMPROCPUSHAXPUSHBXPUSHDXMOVDH,0EHMOVDL,35HMOVBH,00HMOVAH,02HINT10HPOPDXPOPBXPOPAXRETDISMEMENDP;-----標(biāo)題初始化程序-----CLRTIPPROCMOVAL,1MOVCX,0000HMOVDX,0050HMOVBH,0CHMOVAH,06HINT10HRETCLRTIPENDP;-----提示初始化程序-----CLROPRPROCMOVAL,4MOVCX,0100HMOVDX,0450HMOVBH,05HMOVAH,06HINT10HRETCLROPRENDP;------計(jì)時(shí)區(qū)初始化程序-----CLRTIMPROCMOVAL,15MOVCX,0600HMOVDX,1420HMOVBH,0AHMOVAH,06HINT10HRETCLRTIMENDP;-----記憶區(qū)初始化程序-----CLRMEMPROCMOVAL,15MOVCX,0621HMOVDX,1450HMOVBH,0DHMOVAH,06HINT10HRETCLRMEMENDP;-----姓名初始化程序-----CLRNAMEPROCMOVAL,2MOVCX,1521HMOVDX,1750HMOVBH,0CHMOVAH,06HINT10HRETCLRNAMEENDPSHOWALL PROC CLIMOVAL,1CHMOVAH,35H INT21HMOVINIE,ESMOVINIB,BXSHOWINI: CALLLIGHTMOVDX,OFFSETWSTRMOVAH,09H INT21HKSCANW: MOVAH,0BH INT21HCMPAL,00H JEKSCANWMOVAH,08H INT21HCMPAL,'s' JETIME JMPKSCANW MOVAH,4CH INT21HTIME: MOVMIN,0MOVSEC,0MOVMSEC,0 CALLINITIRSHOWSTART: MOVSFLAG,1MOVFLAG,1 CALLLIGHT CALLTIMESHOWWSTOP: MOVAH,0BH INT21HCMPAL,00H JESHOWSTARTMOVAH,08H INT21HCMPAL,'e' JNERMOVSFLAG,0MOVFLAG,0 JMPJUDGER:CMPAL,'r';r,存儲(chǔ)計(jì)數(shù) JZMEMORY JMPSHOWSTARTMEMORY: ;存儲(chǔ)CMPSEC,9 JASECBIGMOVDL,00HMOV[DI],DLMOVDL,SECADDDL,48MOV[DI+1],DLINCDIINCDICMPMSEC,9 JAMSECBIGMOVDL,00HMOV[DI],DLMOVDL,MSECADDDL,48MOV[DI+1],DLINCDIINCDI JMPSHOWSTARTSECBIG:MOVCL,10MOVAL,SECMOVAH,0DIVCL ;AH存余數(shù),AL存商MOVDL,ALMOV[DI],DLMOVDH,AHMOVDL,DHADDDL,48MOV[DI+1],DLINCDIINCDIMSECBIG:MOVCL,10MOVAL,MSECMOVAH,0DIVCL ;AH存余數(shù),AL存商MOVDL,ALMOV[DI],DLMOVDH,AHMOVDL,DHADDDL,48MOV[DI+1],DLINCDIINCDI JMPSHOWSTARTJUDGE:MOVAH,0BH INT21HANDAL,AL JZJUDGEREJUDGE:MOVAH,08H INT21HCMPAL,'d';檢測(cè)是否輸入D,重新計(jì)數(shù) JZTIME ;是D,重新計(jì)時(shí)CMPAL,'c';檢測(cè)輸入是否為C,是否繼續(xù)計(jì)時(shí) JZSHOWSTART;是C,繼續(xù)計(jì)時(shí),否則繼續(xù)檢測(cè)CMPAL,'w';檢測(cè)是否輸入W,是否查看保存數(shù)據(jù) JNZREJUDGE ;否,繼續(xù)檢測(cè)DO6 CALLDISMEM CALLWATCH;查看保存數(shù)據(jù) JMPREJUDGE;繼續(xù)檢測(cè)MOVAH,4CH INT21H BACK:RET
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年學(xué)校開(kāi)展健康教育工作計(jì)劃(四篇)
- 2024年學(xué)校會(huì)議制度范文(三篇)
- 2024年小學(xué)體育老師工作計(jì)劃例文(四篇)
- 2024年安全隱患自查自糾制度范文(三篇)
- 2024年實(shí)習(xí)自我總結(jié)范文(三篇)
- 2024年學(xué)校教科研工作計(jì)劃范例(二篇)
- 2024年工程車(chē)輛租賃合同參考范本(三篇)
- 2024年安全生產(chǎn)報(bào)告制度范本(二篇)
- 2024年學(xué)校健康教育工作制度范文(二篇)
- 2024年學(xué)校行政方面安全管理制度范例(二篇)
- 2024年新人教版一年級(jí)數(shù)學(xué)上冊(cè)課件 第二單元 6~10的認(rèn)識(shí)和加、減法 1. 6~9的認(rèn)識(shí) 課時(shí)2 比大小、第幾練習(xí)課
- 服務(wù)行業(yè)感受心得體會(huì)(8篇)
- 滬科版九年級(jí)物理 15.1 電阻和變阻器(學(xué)習(xí)、上課課件)
- 2023年中國(guó)人壽保險(xiǎn)股份有限公司招聘筆試真題
- 2024年口服美容市場(chǎng)趨勢(shì)白皮書(shū)
- 滬教版2024九年級(jí)上冊(cè)化學(xué)各章節(jié)必背知識(shí)點(diǎn)復(fù)習(xí)提綱
- 加油加氣站 反恐防范重點(diǎn)目標(biāo)檔案 范例2024
- 第5課 推動(dòng)高質(zhì)量發(fā)展
- 數(shù)字孿生賦能智慧城市大腦建設(shè)方案相關(guān) 兩份資料
- 2024至2030年中國(guó)購(gòu)物中心市場(chǎng)深度分析及發(fā)展前景預(yù)測(cè)研究報(bào)告
- 基于項(xiàng)目式學(xué)習(xí)的初中數(shù)學(xué)“綜合與實(shí)踐”教學(xué)研究
評(píng)論
0/150
提交評(píng)論