匯編語(yǔ)言顯示系統(tǒng)時(shí)間和日期_第1頁(yè)
匯編語(yǔ)言顯示系統(tǒng)時(shí)間和日期_第2頁(yè)
匯編語(yǔ)言顯示系統(tǒng)時(shí)間和日期_第3頁(yè)
匯編語(yǔ)言顯示系統(tǒng)時(shí)間和日期_第4頁(yè)
匯編語(yǔ)言顯示系統(tǒng)時(shí)間和日期_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語(yǔ)言 顯示系統(tǒng)時(shí)間和日期 匯編課程設(shè)計(jì):顯示系統(tǒng)當(dāng)前日期和時(shí)間2011年03月19日 ? 課程設(shè)計(jì) ? 評(píng)論數(shù) 1 ? 被圍觀 149 views+ 概述 1一課程設(shè)計(jì)目的 1二課程設(shè)計(jì)要求 1三課程設(shè)計(jì)題目 1四課題分析 2五程序流程圖 3六程序源代碼 4七結(jié)果顯示 7八關(guān)鍵代碼段分析 9九感想、收獲及體會(huì) 12九參考文獻(xiàn) 12 用匯編語(yǔ)言實(shí)現(xiàn)顯示系統(tǒng)時(shí)間的程序概述此軟件,有著簡(jiǎn)單、明了的提示界面,用戶從鍵盤輸入的這個(gè)字符跟大寫字母T,D,Q分別比較,如果和哪個(gè)字母的ASCII碼相等,就調(diào)用與此字母對(duì)應(yīng)的顯示系統(tǒng)時(shí)間子程序跟顯示系統(tǒng)日期子程序,然后轉(zhuǎn)換為數(shù)字字符ASCII碼將對(duì)應(yīng)的時(shí)間或

2、日期輸出或直接退出。課程設(shè)計(jì)目的對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書面及口頭表達(dá)能力進(jìn)行考核。進(jìn)行程序設(shè)計(jì)方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計(jì)的基本知識(shí)和基本方法,通過(guò)實(shí)際動(dòng)手能力的培養(yǎng),進(jìn)一步熟悉匯編語(yǔ)言的結(jié)構(gòu)和使用方法,達(dá)到能獨(dú)立閱讀,編制和調(diào)試一定規(guī)模的匯編語(yǔ)言程序的水平。二、課程設(shè)計(jì)要求要求編寫并調(diào)試通過(guò)一個(gè)小型軟件,實(shí)現(xiàn)對(duì)軟件或硬件的操作。遵循模塊化,結(jié)構(gòu)化的程序設(shè)計(jì)方法。要求程序必須正確。程序簡(jiǎn)明易懂,多運(yùn)用輸入輸出提示,出錯(cuò)信息及必要的注釋。要求程序結(jié)構(gòu)合理,語(yǔ)句使用得當(dāng)。要求準(zhǔn)求編程技巧和程序運(yùn)行效率。三、課程設(shè)計(jì)題目:題目

3、:顯示系統(tǒng)當(dāng)前日期和時(shí)間要求設(shè)計(jì)界面提示信息為:“Please input the char :”,從鍵盤輸入“D”,可顯示系統(tǒng)日期。從鍵盤輸入“T”,可顯示系統(tǒng)時(shí)間。從鍵盤輸入“Q”,退出程序。利用Dos的系統(tǒng)功能調(diào)用的2AH和2CH功能調(diào)用,讀取系統(tǒng)日期和時(shí)間。將日期和時(shí)間轉(zhuǎn)換為相應(yīng)的ASCII碼字符,顯示在屏幕上。課題分析1、這個(gè)題目是顯示系統(tǒng)當(dāng)前日期和時(shí)間,這就需要用Dos的的2A號(hào)功能取系統(tǒng)日期和2C號(hào)功能取系統(tǒng)時(shí)間,以及BIOS的06號(hào)功能清屏或上卷,02號(hào)功能之光標(biāo)位置。此題目主要是將時(shí)間,日期轉(zhuǎn)換為相應(yīng) 的ASCII碼,并顯示出來(lái)。程序要求能多次執(zhí)行以上顯示系統(tǒng)時(shí)間和日期兩種操

4、作并有退出選項(xiàng)。則可以設(shè)計(jì)三個(gè)選項(xiàng)以供用戶選擇:D-date、T-time、Q-退出程序。三個(gè)選項(xiàng)分別可以用三個(gè)過(guò)程實(shí)現(xiàn)其功能。用戶在出現(xiàn)的提示信息中輸入大寫字母D,馬上顯示當(dāng)前系統(tǒng)日期;輸入大寫字母T,馬上顯示系統(tǒng)當(dāng)前時(shí)間;輸入大寫字母Q,則退出程序。2、程序設(shè)計(jì)思想(1)在dos環(huán)境下完成,先利用bios功能調(diào)用中顯示器驅(qū)動(dòng)程序的00H類型調(diào)用,設(shè)置顯示器的顯示模式為80*25彩色。(2)在屏幕中顯示提示信息(提示用戶輸入D或T或Q)。(3)然后對(duì)用戶輸入的字母進(jìn)行判斷,利用分支程序分別調(diào)用不同的子程序。兩個(gè)子程序的功能分別是顯示當(dāng)前日期(用2AH的dos功能調(diào)用來(lái)取日期),顯示當(dāng)前時(shí)間(

5、用2CH的dos功能調(diào)用來(lái)取時(shí)間)。必須用到的dos功能調(diào)用:取當(dāng)前系統(tǒng)如期:功能號(hào)為2AH,返回值送入AX,DX寄存器中。取當(dāng)前系統(tǒng)時(shí)間:功能號(hào)為2CH,返回值送入AX寄存器中。例如:2010年12月14日運(yùn)行的程序中,使用2AH的dos功能調(diào)用后,得到AX07D9H,DX0C1DH其中,AX中的數(shù)據(jù)為2010D,即年份。DX 中的數(shù)據(jù)分析得:DH= 0CH=12D,即月份DL=1DH=29D,即日期號(hào)最后應(yīng)將數(shù)據(jù)轉(zhuǎn)換為其字符對(duì)應(yīng)的ASCII碼,再顯示在屏幕上。即顯示出: 12-29-2010五、流程圖:NYYNNY六、程序源代碼clear_screen macro op1,op2,op3,

6、op4 ;1 宏定義,設(shè)置七個(gè)參數(shù)mov ah,06h ;2 ah=06 屏幕初始化或上卷指定的行mov al,00h ;3 清屏mov bh,79h ;4 卷入行屬性mov ch,op1 ;5 左上角行號(hào)mov cl,op2 ;6 左上角列號(hào)mov dh,op3 ; 7 右上角行號(hào)mov dl,op4 ;8 右上角列號(hào)int 10h ;9 調(diào)用bios功能【見43行】mov ah,02h ;10制定光標(biāo)位置mov bh,00h ;11 第0頁(yè)mov dh,00h ;12 第0行mov dl,00h ;13 第0列int 10hendmstack segment ;16 定義堆棧段db 200

7、 dup(0)stack endsdata segment ;19 定義數(shù)據(jù)段welcome db welcome you to here!,$inf01 db 0dh,0ah,this is a display program!,$ ;20 提示界面inf02 db 0dh,0ah,D:display system date;,$inf03 db 0dh,0ah,T:display system time;,$inf04 db 0dh,0ah,Q:quit,0dh,0ah,$inf05 db 0dh,0ah,please input the char:$inputer db 0dh,0ah,

8、input error!,0ah,0dh,$datedis db 00 - 00 - 0000 ,0ah,$ ;27 顯示系統(tǒng)日期timedis db 00 ,3ah, 00 ,3ah, 00 ,0ah,$ ;28 顯示系統(tǒng)時(shí)間(3a冒號(hào)0a換行 0d回車)data endscode segment ;30 定義代碼段assume cs:code,ds:data,ss:stackstart:main proc farmov ah,00h ;34 ah=0設(shè)置顯示模式mov al,03h ;35 設(shè)置80*25圖形顯示int 10hclear_screen 00h,00h,19h,50h ;37

9、 調(diào)用宏定義mov ax,datamov ds,ax mov ax,stackmov ss,axshow macro b ;42-46 顯示宏定義lea dx,b ;43mov ah,9 ;44 顯示字符串int 21h ;45endm ;46show welcome ;47-52 調(diào)用宏定義,顯示字符串的內(nèi)容show inf01 ;48show inf02 ;49show inf03 ;50show inf04 ;51show inf05 ;52S1:mov ah,01 ;53 鍵盤輸入并回顯int 21hcmp al,44h ;55 與D比較jne L1 ;56 不相等轉(zhuǎn)L1call da

10、tedisplay ;57 相等調(diào)用日期顯示子程序jmp exit1 ;58 繼續(xù)輸入字母L1:cmp al,54h ;59 與T比較jne L2 ;60 不相等轉(zhuǎn)L2call timedisplay ;61相等調(diào)用時(shí)間顯示子程序jmp exit1 ;62 繼續(xù)輸入字母L2:cmp al,51h ;63 與Q比較je exit ;64 相等轉(zhuǎn)exitshow inputer ;65 顯示輸入錯(cuò)誤show inf05 ;66 顯示輸入提示jmp S1exit1:show inf05 ;68 顯示輸入提示jmp S1 ;exit:mov ah,4ch ;70 結(jié)束int 21hmain endpd

11、atedisplay proc near ;73 日期顯示子程序mov ah,2ah ;74 取當(dāng)前系統(tǒng)日期int 21hmov ax,cx ;76 送年份入ax作為被除數(shù)【年份存在cx中】mov bx,10 ;77 (bx=10)lea si,datedis+14 ;78 使si 指向年的最后一位【從0開始數(shù)】mov cx,4 ;79 (cx)=4 為年的位數(shù),循環(huán)4次push dx ;80 dx入棧,保存月日tab:xor dx,dx ;81 dx清零div bx ;82 (dx,ax)/bx,商送ax,余數(shù)送dxadd dl,30h ;83 余數(shù)與30h相加變?yōu)樽址牡腁SCII碼mov

12、 si,dl ;84 余數(shù)送入si所指向的字節(jié)區(qū)dec si ;85 si減一loop tab ;86 循環(huán)四次pop dx ;87 dx還原mov al,dl ;88 日送給alxor ah,ah ;89 ah清零div bl ;90 ax/bl,商送al,余數(shù)送ahadd ax,3030h ;91 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼sub si,4 ;92 使si指向日的第一位mov si,ax ;93 (ax)送si所指向的字節(jié)區(qū)mov al,dh ;94 月送al【月存在dh中】xor ah,ah ;95 ah清零div bl ;96 ax/bl,商送al,余數(shù)送ahadd ax,3030h

13、 ;97 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼sub si,5 ;98 使si 指向月的第一位mov si,ax ;99 (ax)送si所指向的字節(jié)區(qū)show datedis ;100 顯示日期ret ;101 調(diào)用后返回datedisplay endptimedisplay proc near ;102 時(shí)間顯示子程序mov ah,2chint 21hmov bx,10lea di,timedismov al,ch ;107 ch存時(shí)xor ah,ahdiv bladd ax,3030hmov di+1,axmov al,cl ;112cl存分xor ah,ahdiv bladd ax,3030hm

14、ov di+6,axmov al,dh ;117dh存秒xor ah,ahdiv bladd ax,3030hmov di+11,axshow timedis ;122 顯示時(shí)間ret ;123 時(shí)間調(diào)用返回timedisplay endpcode endsend start結(jié)果顯示關(guān)鍵代碼段分析(一)日期顯示子程序代碼分析:datedisplay proc near ;73 日期顯示子程序mov ah,2ah ;74 取當(dāng)前系統(tǒng)日期int 21hmov ax,cx ;76 送年份入ax作為被除數(shù)【年份存在cx中】mov bx,10 ;77 (bx=10)lea si,datedis+14 ;

15、78 使si 指向年的 最后一位【從0開始數(shù)】mov cx,4 ;79 (cx)=4 為年的位數(shù),循環(huán)4次push dx ;80 dx入棧,保存月日tab:xor dx,dx ;81 dx清零div bx ;82 (dx,ax)/bx,商送ax,余數(shù)送dxadd dl,30h ;83 余數(shù)與30h相加變?yōu)樽址牡腁SCII碼mov si,dl ;84 余數(shù)送入si所指向的字節(jié)區(qū)dec si ;85 si減一loop tab ;86 循環(huán)四次pop dx ;87 dx還原mov al,dl ;88 日送給alxor ah,ah ;89 ah清零div bl ;90 ax/bl,商送al,余數(shù)送a

16、hadd ax,3030h ;91 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼sub si,4 ;92 使si指向日的第一位mov si,ax ;93 (ax)送si所指向的字節(jié)區(qū)mov al,dh ;94 月送al【月存在dh中】xor ah,ah ;95 ah清零div bl ;96 ax/bl,商送al,余數(shù)送ahadd ax,3030h ;97 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼sub si,5 ;98 使si 指向月的第一位mov si,ax ;99 (ax)送si所指向的字節(jié)區(qū)show datedis ;100 顯示日期ret ;101 調(diào)用后返回datedisplay endp流程圖分析如下:(二)

17、時(shí)間顯示子程序代碼分析:timedisplay proc near ;102 時(shí)間顯示子程序mov ah,2ch ;103 取當(dāng)前系統(tǒng)時(shí)間int 21hmov bx,10lea di,timedis ;106 使di指向時(shí)間的第一位mov al,ch ;107 ch存時(shí)xor ah,ah ;108 ah清零div bl ;109 ax/bl,商送al,余數(shù)送ahadd ax,3030h ;110 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼mov di+1,ax ;111(ax)送給時(shí)的第一位mov al,cl ;112 cl存分xor ah,ah ;113 ah清零div bl ;114 ax/bl,商送a

18、l,余數(shù)送ahadd ax,3030h ;115 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼mov di+6,ax ;116(ax)送給分的第一位mov al,dh ;117dh存秒xor ah,ah ;118 ah清零div bl ;119 ax/bl,商送al,余數(shù)送ahadd ax,3030h ;120 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼mov di+11,ax ;121(ax)送給秒的第一位show timedis ;122 顯示時(shí)間ret ;123 時(shí)間調(diào)用返回timedisplay endp流程圖分析如下:感想、收獲及體會(huì)剛開始準(zhǔn)備這個(gè)程序的時(shí)候,首先想到的應(yīng)該是從鍵盤輸入的這個(gè)字符跟大寫字母T,D,

19、Q分別比較,如果和哪個(gè)字母的ASCII碼相等,就調(diào)用與此字母對(duì)應(yīng)的子程序,顯示日期,時(shí)間或直接退出。在程序的開始,就已經(jīng)先定義了清屏上卷宏定義,制訂了光標(biāo)位置,考慮到程序中多次要顯示字符串,所以將顯示字符串也作為一個(gè)宏定義,避免了代碼冗長(zhǎng)的麻煩。而在整個(gè)程序中,只有兩個(gè)子程序,日期顯示子程序和時(shí)間顯示子程序。在編寫日期顯示子程序時(shí),先取CX中存的系統(tǒng)當(dāng)前日期,存在AX中,作為被除數(shù),除以10,給各位加上30H,變?yōu)樗腁SCII碼。使存日月的DX入棧,以保護(hù)日月。指針指向datedis字符串的最后一位,即年的最后一位,循環(huán)4次,將年的ASCII碼依次放入字符串datedis00-00-0000的0000位,隨后DX出棧還原。取DL中存的日,放入AL中,將高位AH清 零,AX作為被除數(shù),重復(fù)轉(zhuǎn)換ASCII碼的步驟,指針減4,指向字符串datedis00-

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論