




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計說明書 No.24課 程 設 計 任 務 書專 業計算機科學與技術班 級姓 名設 計 起 止 日 期設計題目: 電子時鐘設計任務(主要技術參數):1硬件環境:CPU:1.6GH以上 內存:4GB以上2軟件環境:操作系統: Windows 8運行環境:masm.Exe3設計任務:要求有顯示位置:屏幕中央;日期顯示格式"時:分:秒";12/24時制可調;在顯示屏上顯示提示語“CURRENT TIME IS:”和當前時間;整點和半點報時功能。指導教師評語:成績: 簽字:年 月 日電子時鐘 1.課程設計目的 匯編語言是面向機器的程序設計語言。在匯編語言中,用助記符代替操作碼
2、,用地址符號或標號代替地址碼。這樣用符號代替機器語言的二進制代碼,就把機器語言變成了匯編語言。匯編語言能夠最大限度的發揮硬件的性能。 本次課程設計我做的是計算機時鐘模擬顯示程序的設計,要求有顯示位置:屏幕中央;日期顯示格式"時:分:秒";12/24時制可調;在顯示屏上顯示提示語“CURRENT TIME IS:”和當前時間。在這次課程設計中我加入了整點和半點報時功能。使得程序更加完善。2.設計思路2.1設計任務及要求(1)使用匯編語言設計一個運行于計算機的時鐘模擬顯示軟件,軟件應實現模擬顯示時鐘。(2)根據任務書的要求,可知需要設計的計算機時鐘模擬顯示程序是基于匯編語言的應
3、用程序設計,程序運行成功后,頁面出現數字式的時鐘。具體過程如下首先界面中間出現“TIME SYSTEM IS:”提示輸入12/24時制。輸入以后會出現“CURRENT TIME IS:”提示輸入初值時間其格式為:時(XX):分(XX):秒(XX)。接著就會在界面出現所設的初值開始計時其輸出格式為XX:XX:XX。并且到半點或整點會報時。此模擬時鐘外觀簡潔明了,功能和實際運用到的時鐘的基本功能一樣,用起來非常方便、快捷。2.2設計原理1. 12/24時制的設置調用DOS操作系統模塊1,輸入12/24時制的第一位即高位,再調用DOS操作系統模塊1輸入12/24時制的第二位即低位。然后將輸入的兩個A
4、SCII碼值轉換為壓縮BCD碼存入定義的變量X中,用于與12H比較并跳轉到相應進制顯示的程序中。2.時鐘起始時間的設置先調用設置光標子程序和清除屏幕子程序,調用DOS操作系統模塊9,在顯示屏上顯示提示符“CURRENT TIME :”,再調用DOS操作系統模塊10,提示要輸入時鐘的起始時間,輸入時間的格式是“時(XX):分(XX):秒(XX)”。輸入的時間以字符串形式放在已定義的存儲器緩沖區,繼而調用TRAN1和MUL10子程序,將存放在存儲器緩沖區的ASCII字符轉換成壓縮BCD碼,并將時、分、秒的值放置在寄存器CH、DH、DL中。3.延時程序調用TIME延時1S子程序(并未精確計算),累加
5、到存放秒值的寄存器DL中,并進行十進制調整。在累加的過程中,不斷地對時、分、秒進行比較,秒不能等于60,分不能等于60,時不能等于12或24.秒等于限值時,則使秒值為0并且分值加1;時等于限值時,先置零然后就轉顯示屏輸出。4.時間顯示調用DOS操作系統模塊9,可用來顯示存儲器內字符串。由于顯示的字符串必須為ASCII編碼,因為要調用TRAN2轉換子程序將寄存器CH、DH、DL內壓縮BCD碼字符串轉換成ASCII碼字符串,字符串最后以字符“$”結束,并按時、分、秒的順序送存儲器緩沖區內。調用DOS操作系統模塊9時,(DS:DX)應指向字符串首址。程序一旦進入運行,就將不間斷地在顯示屏顯示時間,要
6、想使程序停止運行,可同時在鍵盤按下Ctrl和Break二鍵。5.半點、整點報時 當分達到30時,轉到報時程序;當分到0時,轉到報時程序;其余的情況都不用跳到報時程序而是正常執行輸出。2.3 程序流程圖根據以上程序流程相應的說明,在程序編寫前,我們應先畫出程序流程圖本程序的流程圖如圖1所示。開始顯示提示語鍵盤輸入時制顯示提示語鍵盤輸入初始時間時間數據轉換為BCD數BCD數轉換為壓縮BCD數時CH,分DH,秒DL延時1秒12進制顯示24進制顯示DH=30H?DH=0H?報時字符顯示報時S=12H?NYNYNY圖1 程序流程圖2.4程序設計2.4.1 12/24時制程序設計 很明顯要想實現此功能必須
7、使用分支結構程序,調用DOS操作系統模塊1,輸入12/24時制的第一位即高位,再調用DOS操作系統模塊1輸入12/24時制的第二位即低位。然后將輸入的兩個ASCII碼值轉換為壓縮BCD碼存入定義的變量X中,用于與12H比較并跳轉到相應進制顯示的程序中。其程序片段如下:MOV AH,1 ;DOS功能模塊,從鍵盤輸入字符 INT 21HMOV BL,AL ;將輸入的數據12,24轉換為壓縮BCD碼存放在變量S中AND BL,0FHSHL BL,1SHL BL,1SHL BL,1SHL BL,1MOV AH,1INT 21HMOV CL,ALAND C
8、L,0FHOR CL,BLMOV S,CLMOV AH,1 ;輸入最后一個回車字符INT 21HCMP S,12HJNZ AGAIN1 ;24進制則跳轉到AGAIN1執行24進制顯示的程序2.4.2時鐘起始時間的設置先調用設置光標子程序和清除屏幕子程序,調用DOS操作系統模塊9,在顯示屏上顯示提示符“CURRENT TIME :”,再調用DOS操作系統模塊10,提示要輸入時鐘的起始時間,輸入時間的格式是“時(XX):分(XX):秒(XX)”。輸入的時間以字符串形式放在已定義的存儲器緩沖區,繼而調用TRAN1和MUL10子程序,將存放在存儲器緩沖區的ASCII字符轉換成壓縮BCD碼,并將時、分、
9、秒的值放置在寄存器CH、DH、DL中。其程序片段如下:MOV DX,OFFSET CT ;DOS功能模塊,顯示字符串,提示從鍵盤輸入 MOV AH,9 INT 21H MOV DX,OFFSET BUFFER MOV AH,10 ;DOS功能模塊,從鍵盤輸入字符串到緩沖區 INT 21HMOV BX,OFFS
10、ET BUFFER+2 CALL TRAN1 ;時轉換為BCD數 INC BX INC BX CALL TRAN1 ;分轉換為BCD數 INC BX INC BX CALL TRAN1 ;秒轉換為BCD數 MOV BX,OFFSET BUFFER+2 ;原輸入緩沖區的BCD數轉換壓縮BCD MOV AL,BX ;數的同時將輸入緩沖區的數據傳給 CALL MUL10 ;時-CH,分-DH,秒-DL2.4.3延時程序設計調用TIME延時1S子程序(并未精確計算,因機器的主頻不同會有差異),累加到存放秒值的寄存器DL中,并進行十進制調整。在累加的過程中,不斷地對時、分、秒進行比較,秒不能等于60,分
11、不能等于60,時不能等于12或24.秒等于限值時,則使秒值為0并且分值加1;時等于限值時,先置零然后就轉顯示屏輸出。其程序片段如下:TIME PROC PUSH CXPUSH AXMOV AX,25000 ;嵌套循環AX為外循環,CX為內循環 WAITED: MOV CX,24000 GOON: LOOP GOONDEC AXJNZ WAITEDPOP AXPOP CXRET TIME ENDP2.4.4時間顯示程序設計調用DOS操作系統模塊9,可用來顯示存儲器內字符串。由于顯示的字符串必須為ASCII編碼,因為要調用TRAN2轉換子程序將寄存器CH、DH、DL內壓縮BCD碼字符串轉換成ASC
12、II碼字符串,字符串最后以字符“$”結束,并按時、分、秒的順序送存儲器緩沖區內。調用DOS操作系統模塊9時,(DS:DX)應指向字符串首址。其程序片段如下:DISPLAY: MOV BX,OFFSET BUFFER INC BX INC BXCALL IOCLRCALL IOSETMOV AL,CH ;將小時的壓縮BCD數轉化為ASCII碼在存儲器中進行修改CALL TRAN2 INC BXMOV AL,':' ;在中間添加一個:MOV BX,ALINC BXMOV AL,DH CALL TRAN2 INC BXMOV AL,':'MOV BX,ALINC BX
13、MOV AL,DL CALL TRAN2CMP DH,30H ;到了30分鐘不跳轉,其余都跳到NEXT2 JNZ NEXT22.4.5半點、整點報時 當分達到30時,轉到報時程序;當分到0時,轉到報時程序;其余的情況都不用跳到報時程序而是正常執行輸出。報時時會在時間后面接著顯示“* :)”并發出嘀的一聲。其半點、整點報時程序片段如下:INC BXMOV AL,'*' ;在輸入緩沖區后面增加字符“* :)”用于顯示MOV BX,ALINC BXMOV AL,':'MOV BX,ALINC BXMOV AL,')'MOV BX,ALINC BXMOV
14、 AL,07H ;在輸入緩沖區后面加入07H=bel,報時MOV BX,ALJMP NEXT32.5開發環境2.5.1軟、硬件環境軟件環境:操作系統:Windows 8.1 64位(DirectX 11)、 BIOS系統 DOS系統硬件環境:處理器:英特爾 第五代酷睿 i5-5200U 2.40GHz 雙核 內存:4GB(戴爾 DDR3 1333MHz) 主硬盤:希捷 ST500LM012 HN-M500MBB (500GB/5400轉/分) 顯示器:戴爾Inspiron(15.6英寸)2.5.2 MASM開發環境Masm是匯編編譯器,是微軟公司開發的匯編開發環境,擁有可視化的開發界面,使開發
15、人員不必再使用DOS環境進行匯編的開發的優點,支持偽指令和宏匯編,最后編譯生成obj文件,通過link工具連接成可執行文件exe。使用步驟為:a使用編輯軟件TE.EXE進行源程序的編寫。 b使用匯編軟件MASM.EXE對源程序匯編。 c使用連接軟件LINK.EXE對目標文件進行連接。 d使用調試軟件DEBUG.EXE對可執行程序進行調試。3.調試過程和運行結果分析3.1調試過程(1)編寫源程序,并命名為dianzizhong.asm,并保存于默認文件夾中。(2)打開文件dianzizhong.asm,編譯使之生成目標文件,檢查源程序中的錯誤改正,直到編譯無錯誤出現為止。(3)點擊菜單欄中運行里
16、的連接,再點擊運行,輸入相應的字符就會顯示相應的結果。(4)首先屏幕上顯示提示語“TIME SYSTEM IS:”用戶輸入12或者24即可實現12或24進制的轉換。(5)屏幕上顯示“CURRENT TIME IS:”提示語,用戶輸入當前時間其輸入格式為時(XX):分(XX):秒(XX)。(6)屏幕上顯示從我們設定的時間開始計時。3.2運行結果顯示(1)當進入顯示界面是屏幕上會出現提示語“TIME SYSTEM IS:”,在此窗口我們輸入12或者24進制。其顯示結果如圖2所示。圖2 12/24進制選擇界面(2)當我們輸入12或24進制時的窗口界面如圖3和圖4所示。圖3 輸入12進制界面圖4 輸入
17、24進制的界面(3)當輸入進制信息以后,現在的提示語為“CURRENT TIME IS:”,現在再輸入時間,其窗口界面如圖5所示。圖5 提示輸入時間的界面(4)當輸入了時間后的顯示結果如圖6所示。圖6 完成輸入時間的界面(5) 最后,會顯示設置的初始時間并開始計時。其結果如圖7所示。圖7 計時的界面(6)到了半點和整點時報時的顯示結果如圖8和圖9所示。圖8 半點報時圖9 整點報時3.3所遇到的問題與解決1、對延時時間的設置:當計算機執行命令時,雖然快,但還是需要一定的時間。此時間與計算機的主頻有關系,我們采用循環的方式來進行延時。但我們所使用的計算機的CPU主頻比8086高,故需要內外兩個循環
18、來實現,內循環為24000,外循環為25000,這樣延時約為1S。程序如下:TIME PROC PUSH CX PUSH AX MOV AX,25000 ;嵌套循環AX為外循環,CX為內循環 WAITED: MOV CX,24000 GOON: LOOP GOON DEC AX JNZ WAITED POP AX POP CX RET TIME ENDP2、開始光標不在屏幕中央,原因是IOSET子程序中的光標設計的位置不對,重新改變DX后,光標到達屏幕中央。IOSET子程序如下:IOSET PROC ;設置光標位置 PUSH AX PUSH BX PUSH DX MOV DX,0C20H ;D
19、H=光標所在行號,DL=光標所在列號 MOV BH,00 ;BH=光標所在頁號 MOV AH,02 INT 10H POP DX POP BX POP AX RETIOSET ENDP 3、檢查錯誤過程中,系統提示“out of memory”1)、原因:在某些程序段存在只有現場保護沒有現場恢復2)、解決辦法:通過系統運行,發現錯誤的行數,找到相應的位置,添加現場恢復語句。4、剛開始選擇進制的功能的時候,只設置了兩次DOS字符輸入功能的調用因此只能輸入兩個字符,而當輸入第二個字符以后提示語立即不見,根本看不到。因此為了在輸入進制的兩個字符以后,添加一個回車以完成輸入則必須設置三次DOS字符輸入
20、功能調用。其程序如下:MOV AH,1 ;DOS功能模塊,從鍵盤輸入字符 INT 21H ;第一次調用MOV BL,AL ;將輸入的數據12,24轉換為壓縮BCD碼存放在變量S中AND BL,0FHSHL BL,1SHL BL,1SHL BL,1SHL BL,1MOV AH,1INT 21H ;第二次調用MOV CL,ALAND CL,0FHOR CL,BLMOV S,CLMOV AH,1 ;輸入最后一個回車字符INT 21H ;第三次調用5.在輸入了進制信息以后并沒有調用函數IOCLR因此在顯示窗口中顯示了多個信息,并不
21、美觀,后來我在輸入了進制信息以后加了CALL IOCLR、CALL IOSET的調用程序。對屏幕進行清屏,并且設置光標位置。程序片段如下:MOV AH,1 ;輸入最后一個回車字符INT 21HCALL IOCLRCALL IOSET MOV DX,OFFSET CT ;DOS功能模塊,顯示字符串,提示從鍵盤輸入 MOV AH,9 INT 21H 3.4結果分析經驗證,在第一個提示窗口“TIME SYSTEM IS:”中輸入進制為12或則24,
22、會實現12/24進制的轉換。在第二提示窗口“CURRENT TIME IS:”中輸入初始時間能正確的設置初試時間。并且我們在窗口中顯示了“CURRENT TIME IS:”,滿足任務的要求。設置的時間程序能夠正常的運行,達到了設計目的。并且時間在屏幕的正中央顯示。在半點以及整點的時候在時間末尾處顯示“*:)”的提示符號,并且發出報警聲。實現了半點,整點報時的功能。總的來說,此程序基本上完成了設計要求。4.心得體會經過以上步驟,課程設計所要求設計的電子鐘顯示設計軟件便成功完成了,它能顯示數字式的時鐘,并且能設置初值和時鐘進制。整個頁面簡潔清晰,方便用戶讀取,且操作簡捷,符合課程設計中的各項要求。
23、通過這次課程設計,我們對日常生活中司空見慣的時鐘的工作原理有了一個比較深入的了解,將書本中的知識更好地與實際生活中的應用結合在了一起。通過這次微機原理課程設計學到了很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。而且我第一次感受到在寫一個程序的時候,一定要事先把程序原理方框圖畫出來的重要性。在課程設計中碰到的那些需要很多代碼才能完成的任務,畫程序方框圖是很有必要的。因為通過程序方框圖,在做設計的過程中,我們每一步要做什么,每一步要完成什么任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。本次課程設計的過程中遇到了很多問題,比如時間走得
24、太快、光標的位置無法定位等等。對每個問題的解決都是一種對知識的重新整理和考察。我更加感到愉悅的,此次的課程設計鍛煉了我的編程能力。到此為止,我們接近一周的課程設計也告一段落。通過這次課程設計,使我認識到理論與實際相結合的重要性,對課本上的只是在實際生活中的運用也有了進一步的了解,同時基本上能夠掌握匯編語言編程中編程的步驟,可以說是從中受益匪淺。通過本次課設我也學到很多課堂上學不到的調試知識。很感謝學校給我們提供了這么好的學習機會,感謝老師的指導,從老師的身上學到了對知識真正嚴謹細致的態度,讓我受益匪淺。5.參考文獻1 楊文顯,宓雙,胡建人.新編匯編語言程序設計M,北京:清華大學出版社,2010
25、:20-582 朱玉龍,任文覽等.匯編語言程序設計M,北京:清華大學出版社,2003:67-893 沈美明等.IBM-PC匯編語言及程序設計實驗教程M,北京:清華大學出版社 ,2001:45-674 錢曉捷等.匯編語言程序設計M, 北京:電子工業出版社,2000:1-245 李珍香等.匯編語言程序設計案例精編M,北京:中國水利水電出版社,2004:5-166 白小明.匯編語言程序設計M,北京:中國鐵道出版社,2009:56-766.附錄:源程序 DAT SEGMENT BUFFER DB 20 DB ? DB 20 DUP(?) TS DB 'TIME SYSTEM IS:$'
26、CT DB 'CURRENT TIME IS:$'S DB ? DAT ENDSSTA SEGMENT PARA STACK 'STACK' STAPN DB 100 DUP(?) TOP EQU LENGTH STAPNSTA ENDSCOD SEGMENT START PROC FAR ASSUME CS:COD,DS:DAT,SS:STAMOV AX,DATMOV DS,AXMOV AX,STAMOV SS,AXMOV AX,TOPMOV SP,AXCALL IOCLRCALL IOSETMOV DX,OFFSET TS ;DOS功能模塊,顯示字符串TIM
27、E SYSTEM IS: MOV AH,9 INT 21H MOV AH,1 ;DOS功能模塊,從鍵盤輸入字符 INT 21HMOV BL,AL ;將輸入的數據12,24轉換為壓縮BCD碼存放在變量S中AND BL,0FHSHL BL,1SHL BL,1SHL BL,1SHL BL,1MOV AH,1INT 21HMOV CL,ALAND CL,0FHOR CL,BLMOV S,CLMOV AH,1 ;輸入最后一個回車字符INT 21HCALL IOCLRCALL IOSET MOV DX,OFFSET CT ;DOS功能模塊,顯示字符串,提示從鍵盤輸入 MOV AH,9 INT 21H MO
28、V DX,OFFSET BUFFER MOV AH,10 ;DOS功能模塊,從鍵盤輸入字符串到緩沖區 INT 21HMOV BX,OFFSET BUFFER+2 CALL TRAN1 ;轉換小時為BCD數 INC BX INC BX CALL TRAN1 ;轉換分鐘BCD數 INC BX INC BX CALL TRAN1 ;轉換秒BCD數 MOV BX,OFFSET BUFFER+2 ;原輸入緩沖區的BCD數轉換壓縮BCD MOV AL,BX ;數的同時將輸入緩沖區的數據傳給 CALL MUL10 ;CH,DH,DL MOV CH,AL INC BX INC BX MOV AL,BX CAL
29、L MUL10 MOV DH,AL INC BX INC BX MOV AL,BX CALL MUL10 MOV DL,AL AGAIN: CALL TIME CMP S,12H JNZ AGAIN1 ;24進制跳轉到AGAIN1 MOV AL,DL ADD AL,1 DAA MOV DL,AL CMP AL,60H JNE DISPLAY MOV DL,0 MOV AL,DH ADD AL,1 DAA MOV DH,AL CMP AL,60H JNE DISPLAY MOV DH,0 MOV AL,CH ADD AL,1 DAA MOV CH,AL CMP AL,12H JNE DISPLA
30、Y MOV CH,0 JMP DISPLAYAGAIN1: MOV AL,DL ADD AL,1 DAA MOV DL,AL CMP AL,60H JNE DISPLAY MOV DL,0 MOV AL,DH ADD AL,1 DAA MOV DH,AL CMP AL,60H JNE DISPLAY MOV DH,0 MOV AL,CH ADD AL,1 DAA MOV CH,AL CMP AL,24H JNE DISPLAY MOV CH,0DISPLAY: MOV BX,OFFSET BUFFER INC BX INC BX CALL IOCLR CALL IOSET MOV AL,CH
31、;將小時的壓縮BCD數轉化為 CALL TRAN2 ;ASCII碼在存儲器中進行修改 INC BX MOV AL,':' ;在中間加一個字符: MOV BX,AL INC BX MOV AL,DH CALL TRAN2 INC BX MOV AL,':' MOV BX,AL INC BX MOV AL,DL CALL TRAN2 CMP DH,30H ;到了30分鐘不跳轉,其余都跳到NEXT2 JNZ NEXT2 NEXT1: CMP DL,0 ;秒為0不跳其余跳到NEXT3 JNZ NEXT3 INC BX MOV AL,'*' MOV BX,AL INC BX MOV AL,':' MOV BX,AL INC BX MOV AL,')' MOV BX,AL INC BX MOV AL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 叉車資產轉讓與維護保養合同
- 成都金融服務外包企業股權收購與業務拓展合同
- 財產保全擔保合同(知識產權許可糾紛執行擔保)
- 傳統制茶工藝傳承與人才培養合同
- 租賃鏟車合同(4篇)
- 浙江中醫藥大學金華研究院招聘考試真題2024
- 聯合促銷活動方案(27篇)
- 加油站操作員中級工復習試題
- 氣瓶復習試題含答案
- 大學生出納頂崗實習總結(4篇)
- 底線思維課件教學課件
- CAN協議教程(中文版)
- 2024秋期國家開放大學本科《會計實務專題》一平臺在線形考(形考作業一至四)試題及答案
- 機房設備搬遷服務合同
- 2024年中考英語試題分類匯編:短文填空之選詞填空(解析版)
- JC∕T 2533-2019 預拌混凝土企業安全生產規范
- 大數據與人工智能營銷智慧樹知到期末考試答案章節答案2024年南昌大學
- 工程建設平移合同范本
- 架空輸電線路環境影響評估與治理
- 免拆底模鋼筋桁架樓承板圖集
- 橈動脈閉塞的護理查房
評論
0/150
提交評論