微機8253秒表課程設(shè)計報告_第1頁
微機8253秒表課程設(shè)計報告_第2頁
微機8253秒表課程設(shè)計報告_第3頁
微機8253秒表課程設(shè)計報告_第4頁
微機8253秒表課程設(shè)計報告_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

..秒表程序設(shè)計摘要:本課程設(shè)計旨在設(shè)計一個秒表計時并儲存計時的程序,可控制秒表的計時開始及結(jié)束,實現(xiàn)秒表的準(zhǔn)確計時,存儲計時數(shù)據(jù),翻閱計時數(shù)據(jù),清除計時數(shù)據(jù)等功能。本程序是基于8086微機系統(tǒng)設(shè)計,在MasmforWindows軟件下采用匯編語言編寫,通過選擇8253定時器0,工作方式3,輸出周期為10ms的方波,產(chǎn)生穩(wěn)定延時,調(diào)用各種中斷完成程序各邏輯模塊設(shè)計,通過鍵盤掃描得到輸入的值,執(zhí)行對應(yīng)功能。每10ms計時一次,每60秒一次循環(huán),存儲數(shù)據(jù)設(shè)定為最多20組,可隨時存入數(shù)據(jù),操作自由度極高,經(jīng)測試,60秒計時誤差不超過1.2%,可實現(xiàn)準(zhǔn)確計時及存儲功能。關(guān)鍵字:秒表、顯示計時、存儲計時、匯編設(shè)計任務(wù)分析與方案選擇本設(shè)計需實現(xiàn)秒表穩(wěn)定計時,并顯示,需要存儲計時數(shù)據(jù)時可立即將當(dāng)前計時數(shù)據(jù)存入緩沖區(qū),暫停計時時立即結(jié)束并可復(fù)位或者繼續(xù)計數(shù)或者查看存儲數(shù)據(jù),在查看數(shù)據(jù)時可前后翻閱存儲數(shù)據(jù),并可清除,當(dāng)退出查看數(shù)據(jù)后可使秒表繼續(xù)計數(shù)或復(fù)位。方案選擇系統(tǒng)硬件設(shè)計選擇本設(shè)計采用8253定時器0,工作方式3獲得周期為10ms的穩(wěn)定計時單位,使用8086CPU進(jìn)行譯碼,當(dāng)定時到1s的時候產(chǎn)生一個中斷信號,在中斷服務(wù)程序進(jìn)行秒的計數(shù),并送入相應(yīng)的存儲單元,8259芯片提供中斷,并用8255的A口接七段數(shù)碼管的段選信號,B口接七段數(shù)碼管的位選信號。系統(tǒng)軟件設(shè)計選擇在代碼實現(xiàn)上,對于按鍵的輸入上可以直接讀取或是先掃描鍵盤再讀取,本設(shè)計只存在各邏輯功能之間的轉(zhuǎn)換,因此選擇先掃描鍵盤再讀取的方法,可提高代碼的容錯率及可操作性;使用宏定義及光標(biāo)定位的方法,并配合各種中斷設(shè)計界面圖形及字體顏色,宏定義可以減少代碼的重復(fù)度,且便于修改功能,可任意調(diào)用,通過定位光標(biāo)可確定輸出位置,可實現(xiàn)同一位置的動態(tài)輸出;對于時間的掃描,可以選擇直接讀取系統(tǒng)當(dāng)前的時間或是讀取系統(tǒng)時鐘的計時單位,前者的讀取直接是BCD碼非常便于輸出顯示,后者需要不停的讀取計時單位讀取次數(shù)非常多,而且結(jié)果不是BCD碼,需要做判斷轉(zhuǎn)換輸出,此設(shè)計采用讀取系統(tǒng)時鐘的計時單位,雖然需要不停的讀取計時單位讀取次數(shù)非常多,而且結(jié)果不是BCD碼,需要做判斷轉(zhuǎn)換輸出,但是經(jīng)過與實際情況比較,后者的計時更為準(zhǔn)確,區(qū)分度更大。2詳細(xì)設(shè)計2.1理論分析與計算此設(shè)計需要實現(xiàn)單位為1秒的秒表穩(wěn)定計時,8253定時器0工作方式3,外部提供一個時鐘作為CLK信號,頻率f=1.1931816MHz,為得到周期為10ms的方波,應(yīng)對8253定時器設(shè)置計數(shù)初值為1.1932×10×10^-3=11932。因此,8259A每隔10ms向CPU申請一次中斷。可用10作為基本計時單位,此設(shè)計的毫秒每一個計時單位改變一次,要達(dá)到1秒的計時,需要的計時單位為:1000ms/10=100,則計數(shù)滿足100個計時單位時,即毫秒計時到100時,秒位加1,完成1秒穩(wěn)定計時。2.2算法設(shè)計本設(shè)計的算法包括鍵盤檢測及讀取、秒表計時及輸出,數(shù)據(jù)存儲、數(shù)據(jù)操作、界面及提示詞設(shè)計。2.2.1鍵盤檢測及讀取使用21H中斷的0BH中斷檢測是否有鍵盤按下,如果沒有鍵盤按下則繼續(xù)檢測,如果有鍵盤按下使用21H中斷的08H中斷判斷是否為所設(shè)定的值,如果不是,繼續(xù)檢測輸入,如果是便按邏輯進(jìn)行。2.2.2秒表計時及輸出使用8253定時器0,工作方式3獲得的周期為,10ms的方波作為計時單位,調(diào)用1CH中斷,讀取1CH原中斷向量,并設(shè)置中斷向量,取計時處理程序偏移地址及段地址,計時處理程序中毫秒加一直到100ms,秒位便加一,毫秒清零,繼續(xù)計時。定位光標(biāo),在光標(biāo)位置輸出計時,顯示格式為00:00:00,計時顯示采用高位低位分開顯示,將計時數(shù)值除以10,得到商和余數(shù),商作為高位,余數(shù)作為低位,當(dāng)計時單位滿1后,毫秒位加1毫秒,毫秒計時到100,秒位加1并動態(tài)顯示。2.2.3數(shù)據(jù)存儲在數(shù)據(jù)段中定義一個大小為40字的全為0的緩沖區(qū)用于存儲計時數(shù)值,在代碼段中合適位置取緩沖區(qū)的偏移地址給寄存器,存儲方式采用高位低位分開存儲的方式,將秒數(shù)值除以10,商存前一個字節(jié),余數(shù)存后一個字節(jié),存完高位后寄存器指向下一個字節(jié)存低位,低位存完之后寄存器再指向下一字節(jié),用于存儲毫秒計時的高位。2.2.4數(shù)據(jù)操作定義光標(biāo),取緩沖區(qū)的偏移地址給寄存器,在合適位置從第一次存儲的數(shù)據(jù)開始顯示,此時寄存器指向第一個字節(jié),調(diào)用21H的0BH檢測鍵盤輸入,如有鍵盤輸入,調(diào)用21H的08H檢測鍵入值,當(dāng)接收操作為查看下一個存儲數(shù)據(jù)時,寄存器加2,指向下一組數(shù)據(jù)的高位,并調(diào)用21H的09H中斷顯示當(dāng)前數(shù)值,寄存器加一,調(diào)用21H的09H中斷顯示當(dāng)前所指數(shù)據(jù);當(dāng)接收操作為查看上一個存儲數(shù)據(jù)時,寄存器減二,指向上一組數(shù)據(jù)的高位,并調(diào)用21H的09H中斷顯示當(dāng)前數(shù)值,寄存器加一,調(diào)用21H的09H中斷顯示當(dāng)前所指數(shù)據(jù);當(dāng)接收操作為清除當(dāng)前數(shù)據(jù)時,將0存入當(dāng)前寄存器所指字節(jié)及下一字節(jié),并調(diào)用21H的09H中斷顯示當(dāng)前數(shù)值:00:00;當(dāng)接收操作為返回計時時,判斷鍵入,跳轉(zhuǎn)到相應(yīng)操作。2.2.5界面及提示詞設(shè)計在數(shù)據(jù)段定義提示語句字符串,使用10H的02H中斷定位光標(biāo),在代碼段中相應(yīng)位置取代碼段的偏移地址,使用21H的09H中斷顯示字符串,使用宏定義,擁有兩個參數(shù),一個是光標(biāo)位置,所在行數(shù)和列數(shù),調(diào)用10H的02H中斷置光標(biāo),調(diào)用21H的09H顯示字符,可實現(xiàn)在任意位置顯示任意字符,用此宏定義繪制計時區(qū)及記憶區(qū)圖形,搭配10H的06H中斷可在任一區(qū)域進(jìn)行顯示,為使各區(qū)域鮮明區(qū)分,改變10H的06H中斷中出口參數(shù)BH的值,設(shè)置各字符串為不同顏色,實現(xiàn)彩色輸出,增強觀賞性。2.3硬件電路設(shè)計11.193MHZ圖1,硬件電路設(shè)計在整個電子鐘的設(shè)計中。我們使用8253用于定時功能,由于8259的中斷只能是電平與電緣觸發(fā),所以我們選擇電緣觸發(fā)。由于我們選擇一次寫入計數(shù)初值后的能循環(huán)進(jìn)行,所以我們選擇工作方式0在每次的計數(shù)初值的N-1是產(chǎn)生一個脈沖。在CLK0引腳接入1.1932MHZ的時鐘周期,而將計數(shù)初值寫為11932,繼而在OUT0會在每1ms產(chǎn)生脈沖,在控制字的時候采用二進(jìn)制計數(shù),所以其控制字為00110110B,所以8253能產(chǎn)生準(zhǔn)確的計時功能。8255A芯片,將8255A的A,B口均工作在工作方式0的下,且為輸出控制LED的位選與片選,而C口用于修改時間用,同樣工作于方式0低四位輸出。所以其控制字為81H。8259A芯片用于產(chǎn)生中斷信號去自動修改秒針。所以只需將8259的IR0產(chǎn)生中斷,其他未屏蔽,單片8259,上升沿中斷,要寫ICW4,中斷號為20H,工作在8086方式。2.4軟件設(shè)計在軟件實現(xiàn)上,對于按鍵的輸入上采用DOS系統(tǒng)功能,通過功能號0BH對應(yīng)功能掃描鍵盤判斷是否有按鍵被按下,如果有則通過功能號08H對應(yīng)功能讀取鍵盤緩沖區(qū)得到按鍵輸入信息。1S定時采用8253定時器0,工作方式3獲得10ms穩(wěn)定計時單位,設(shè)置1CH中斷向量,程序進(jìn)行時,不斷讀取1CH中斷服務(wù)程序是否計數(shù)到1個計時單位。計時儲存采用高位低位分開存儲到DW類型的緩沖區(qū)中方法,讀取存儲也采用高低位分別讀取的方法。界面設(shè)計采用定義宏定義的方法,參數(shù)包括光標(biāo)定位位置及需要輸出的字符串,調(diào)用INT10H的06H中斷設(shè)置每個區(qū)域的顯示及字符串的顏色。軟件代碼流程圖:圖2:設(shè)計流程圖圖2為設(shè)計流程圖,程序運行時會等待輸入,當(dāng)輸入為S,便開始計時,開始計時時可輸入E或者R,輸入R,存儲當(dāng)前計時;輸入E,暫停計數(shù),程序在此等待輸入,當(dāng)輸入為C,繼續(xù)計數(shù);當(dāng)輸入為D,重新計數(shù);當(dāng)輸入為W,查看存儲區(qū)所存儲數(shù)據(jù),存儲區(qū)顯示第一次存儲的數(shù)據(jù),等待輸入,當(dāng)輸入為N,查看下一組存儲數(shù)據(jù);當(dāng)輸入U,查看上一組存儲數(shù)據(jù);當(dāng)輸入D,清除當(dāng)前組數(shù)據(jù);當(dāng)輸入B,返回計時區(qū),等待輸入。3系統(tǒng)調(diào)試與效果分析運行效果圖:圖3為程序開始界面,按下S開始計時圖3:程序開始界面圖4為程序開始計時界面,按下R存儲當(dāng)前計時,按下E暫停計時圖4:程序運行界面圖5為存儲區(qū)顯示界面,按下N,查詢下一組存儲數(shù)據(jù),按下U查看上一組存儲數(shù)據(jù),按下D清除當(dāng)前組數(shù)據(jù),按下B返回計時區(qū)重新等待操作。圖5:存儲區(qū)顯示界面圖6,為當(dāng)前存儲清零,按下U,顯示上一組,按下N,顯示下一組,按下B,返回計時。圖6:清除當(dāng)前存儲區(qū)4問題解決4.1計時精度初版設(shè)計采用1AH的00H中斷讀取系統(tǒng)時鐘進(jìn)行直接計時判斷,在程序開始的地方判斷是否滿足18個計時單位,滿足則加1秒,此程序是在所有后面判斷鍵盤輸入、存儲數(shù)據(jù)等操作之后才清零計時單位,重新計數(shù)判斷,在循環(huán)設(shè)計中,由于每行指令的執(zhí)行都會消耗一定的時間,這就造成了在執(zhí)行其他代碼時計時單位沒有繼續(xù)計數(shù),使本來計時周期為1秒變?yōu)椴恢挂幻?經(jīng)測試,60秒計時產(chǎn)生誤差超過25%,完全達(dá)不到秒表計時標(biāo)準(zhǔn),未解決計時單位計數(shù)與代碼執(zhí)行的同步問題,為解決此問題采用了更改中斷向量1CH的辦法,使用8253定時器0,工作方式3,設(shè)置計數(shù)初值為11932,并在任意代碼執(zhí)行的同時讀取計時單位計數(shù)數(shù)值,這就避免了其他代碼執(zhí)行時計數(shù)并不進(jìn)行的問題,經(jīng)測試,60秒計時產(chǎn)生誤差不超過1.2%,達(dá)到秒表計時標(biāo)準(zhǔn)。4.2各邏輯之間的相互跳轉(zhuǎn)在對鍵入值進(jìn)行判斷后會有各邏輯之間的跳轉(zhuǎn),使用JZ,JNZ等條件轉(zhuǎn)移指令時會出現(xiàn)錯誤,導(dǎo)致程序跳轉(zhuǎn)到非理想位置,由于這個設(shè)計主要是各邏輯之間的跳轉(zhuǎn),因此我將各邏輯轉(zhuǎn)移繪制成流程圖,并標(biāo)明所需的跳轉(zhuǎn)轉(zhuǎn)移指令,解決各邏輯之間錯誤轉(zhuǎn)移的問題。使用條件轉(zhuǎn)移指令跳轉(zhuǎn)時可能會發(fā)生跳轉(zhuǎn)指令錯誤,是因為這些跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍是有限的,當(dāng)跳轉(zhuǎn)范圍在128B之內(nèi)時才能使用這些指令,超過了需要使用長跳轉(zhuǎn)指令。4.3對數(shù)據(jù)的存儲數(shù)據(jù)存儲的緩沖區(qū)的類型為DW,有兩個字節(jié),在存儲時采用的是高低位分開存儲的方式,存儲低位時使用的是MOV[DI+1],DL,這個指令可實現(xiàn)將DL中的值存入DI+1這個字節(jié),存下一組數(shù)據(jù)時只INCDI了一次,造成存儲錯誤,后來經(jīng)查閱資料發(fā)現(xiàn)即便執(zhí)行了MOV[DI+1],DL,DI實際指向的單位仍然是高位字節(jié),因此在程序結(jié)束后應(yīng)INCDI四次才能指向下一組數(shù)據(jù)的高位。參考文獻(xiàn)[1]黃玉清,劉雙虎,楊勝波,微機原理與接口技術(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;-----計時區(qū)-----CALLCLRTIM;計時區(qū)初始化MOVDH,06HMOVDL,05HMOVBH,00HMOVAH,02HINT10HMOVDX,OFFSETTIP1MOVAH,09HINT21H;-----計時圖形----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;計時MAINENDP;;;;;;;;;;;;;子程序;;;;;;;;;;;;;-----顯示存儲數(shù)據(jù)程序-----WATCHPROCMOVDI,OFFSETMEM;把MEM的偏移地址送DIMOVDL,[DI];輸出第一個保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+1];輸出第一個保存數(shù)據(jù)MOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,[DI+2];輸出第一個保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+3];輸出第一個保存數(shù)據(jù)MOVAH,02HINT21HX:MOVAH,0BH;利用INT21H/0BH功能號,檢測是否有鍵盤按下INT21HCMPAL,00HJZX;沒有鍵入,轉(zhuǎn)XMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測鍵入值INT21HJMPX5X0:CMPAL,'n';'n'判斷是否查看下一個數(shù)據(jù)JZX1;是,執(zhí)行X1,查看下一個數(shù)據(jù)JMPX2;否,執(zhí)行X2X1:;查看第一個數(shù)據(jù)INCDIINCDIINCDIINCDICALLDISMEMMOVDL,[DI]ADDDL,48MOVAH,02HINT21HMOVDL,[DI+1]MOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,[DI+2];輸出第一個保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+3];輸出第一個保存數(shù)據(jù)MOVAH,02HINT21HMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測鍵入值INT21HCMPAL,'d';'d'判斷是否清除JZX4;清除JMPX5;不清除繼續(xù)檢測X2:CMPAL,'u';'u'檢測是否查看上一個數(shù)據(jù)JZX3;是,查看上一個數(shù)據(jù)JMPX5;否,繼續(xù)檢測X3:;查看上一個數(shù)據(jù)DECDIDECDIDECDIDECDICALLDISMEMMOVDL,[DI]ADDDL,48MOVAH,02HINT21HMOVDL,[DI+1]MOVAH,02HINT21HMOVDL,':'MOVAH,02HINT21HMOVDL,[DI+2];輸出第一個保存數(shù)據(jù)ADDDL,48MOVAH,02HINT21HADDDL,48MOVDL,[DI+3];輸出第一個保存數(shù)據(jù)MOVAH,02HINT21HMOVAH,08H;有鍵入,調(diào)用INT21H/08H,檢測鍵入值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,檢測鍵入值INT21HX5:CMPAL,'b';'b'判斷是否返回主程序JNZX0;否,繼續(xù)檢測PUSHAXPUSHBXPUSHDXMOVDH,0EHMOVDL,34HMOVBH,00HMOVAH,02HINT10HPOPDXPOPBXPOPAXMOVDX,OFFSETSPACEMOVAH,09HINT21HRET;返回WATCHENDP;-----計時顯示光標(biāo)定位程序------LIGHTPROCNEARPUSHAXPUSHBXPUSHDXMOVDH,0DHMOVDL,0DHMOVBH,00HMOVAH,02HINT10HPOPDXPOPBXPOPAXRETLIGHTENDP;-----顯示存儲光標(biāo)定位程序DISMEMPROCPUSHAXPUSHBXPUSHDXMOVDH,0EHMOVDL,35HMOVBH,00HMOVAH,02HINT10HPOPDXPOPBXPOPAXRETDISMEMENDP;-----標(biāo)題初始化程序-----CLRTIPPROCMOVAL,1MOVCX,0000HMOVDX,0050HMOVBH,0CHMOVAH,06HINT10HRETCLRTIPENDP;-----提示初始化程序-----CLROPRPROCMOVAL,4MOVCX,0100HMOVDX,0450HMOVBH,05HMOVAH,06HINT10HRETCLROPRENDP;------計時區(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,存儲計數(shù) JZMEMORY JMPSHOWSTARTMEMORY: ;存儲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';檢測是否輸入D,重新計數(shù) JZTIME ;是D,重新計時CMPAL,'c';檢測輸入是否為C,是否繼續(xù)計時 JZSHOWSTART;是C,繼續(xù)計時,否則繼續(xù)檢測CMPAL,'w';檢測是否輸入W,是否查看保存數(shù)據(jù) JNZREJUDGE ;否,繼續(xù)檢測DO6 CALLDISMEM CALLWATCH;查看保存數(shù)據(jù) JMPREJUDGE;繼續(xù)檢測MOVAH,4CH INT21H BACK:RET

溫馨提示

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

最新文檔

評論

0/150

提交評論