版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 學生課程設計(論文)</p><p> 題 目: 七段碼電子表顯示程序 </p><p> 學生姓名: 學 號: </p><p> 所在院(系): 計算機學院 </p><p> 專 業(yè): 計算機科
2、學與技術 </p><p> 班 級: 2組 </p><p> 2011年12 31 日</p><p><b> 課程設計任務書</b></p><p> 注:任務書由指導教師填寫。</p><p><b&
3、gt; 目錄</b></p><p><b> 摘要- 4 -</b></p><p> 1 課程設計題目描述和要求- 5 -</p><p> 1.1 問題提出及功能要求- 5 -</p><p> 1.1.1 問題- 5 -</p><p> 1.1.2 功能
4、要求- 5 -</p><p> 1.2 運行環(huán)境- 5 -</p><p> 1.3 本課題涉及的知識點- 5 -</p><p> 1.3.1 數(shù)據(jù)段- 5 -</p><p> 1.3.2 宏定義- 6 -</p><p> 2 算法設計- 7 -</p><p>
5、 2.1 設計思路- 7 -</p><p> 2.2 主要流程圖- 8 -</p><p> 3 代碼設計- 10 -</p><p> 4 調試與運行- 19 -</p><p> 4.1 實驗步驟- 19 -</p><p> 4.2 程序調試及運行- 19 -</p>
6、<p> 4.3 調試中出現(xiàn)的問題- 21 -</p><p> 5 總結- 23 -</p><p> 6 參考文獻- 24 -</p><p><b> 摘要</b></p><p> 用七段碼電子表顯示程序系統(tǒng)時間,此程序設計的關鍵是隨系統(tǒng)時間的變化,用字符組成圖形數(shù)字如何進行相應的變
7、化。根據(jù)七段碼電子表顯示程序設計的要求,寫出七段碼電子表顯示程序的源代碼,畫出程序運行的流程圖,輸入計算機進行運行,發(fā)現(xiàn)并找出其中的錯誤并加以修改,反復調試程序,直到得出正確結論為止。通過對七段碼電子表顯示程序的設計,初步掌握匯編語言程序設計的方法,最后在總結此次設計程序的心得與體會。</p><p> 關鍵詞: 源代碼,函數(shù),BCD碼,寄存</p><p> 1 課程設計題目描述
8、和要求</p><p> 1.1 問題提出及功能要求</p><p><b> 1.1.1 問題</b></p><p> 如何用電子表的形式顯示系統(tǒng)時間 ?</p><p> 1.1.2 功能要求</p><p> 1)七段碼電子表顯示程序</p><p>
9、2)菜單選擇:設置時,分,秒,開始,推出等</p><p> 3)模擬七段碼顯示管顯示時,分,秒</p><p><b> 4)要求界面美</b></p><p><b> 1.2 運行環(huán)境 </b></p><p> 微型計算機(系統(tǒng)為Windows98/2000/XP)</p>
10、;<p> 1.3 本課題涉及的知識點</p><p><b> 1.3.1 數(shù)據(jù)段</b></p><p> 1) Disptime,Showtime顯示時鐘</p><p> 2)定義0—9十個圖形數(shù)字,以便模擬七段碼顯示時鐘</p><p><b> 1.3.2 宏定義</b
11、></p><p> 1)Clear定義清屏宏</p><p> 2)rowcol定義光標定位宏</p><p> 3)crlf回車換行宏</p><p> 4)display顯示字符串宏</p><p> 5)change計算時間宏</p><p><b> 1.3
12、.3 函數(shù)</b></p><p><b> 1)main主函數(shù)</b></p><p> 2)paly主要完成顯示七段碼電子表顯示</p><p> 3)prog0到prog10完成七段碼到一半顯示的轉換</p><p> 4)moveshape顯示七段碼電子表</p><p&g
13、t; 5)delay延遲函數(shù)</p><p> 6)exit返回DOS函數(shù)</p><p><b> 2 算法設計</b></p><p><b> 2.1 設計思路</b></p><p> 數(shù)字0~9中的每一個數(shù)字用“|”和“—”字符組成的“七段”碼圖形表示,時與分、分與秒之間的兩點
14、用“▼”字符表示。這些字符預先定義在數(shù)據(jù)段的字符圖形里,利用BIOS INT 1AH的2號系統(tǒng)功能調用,讀出計算機系統(tǒng)的時間(為BCD碼),置換成字符圖形標中的圖形字符顯示。</p><p> 本程序設計的關鍵是隨著系統(tǒng)時間的變化,用字符組成的圖形數(shù)字如何進行相應的變化。方法是:不停地讀取系統(tǒng)時間并保存在寄存器中,將每次取出的時間顯示并與前一次比較,先比較“秒”值,在不同的情況下(系統(tǒng)時間發(fā)生了增1的變化),則
15、調用相應的圖形字符顯示,在不超過60秒的情況下,重復比較秒,然后再比較和顯示“分”值與“小時”值。程序流程圖如圖所示。</p><p><b> 2.2 主要流程圖</b></p><p> 2.1 主程序流程圖</p><p> 2.2 dzbiao流程圖</p><p><b> 3 代碼設計
16、</b></p><p> data segment</p><p> ;*****定義please等提示信息*****</p><p><b> str db 20</b></p><p> db 50h,7,0,0</p><p> db 6ch,7,0,1</p&
17、gt;<p> db 65h,7,0,1</p><p> db 61h,7,0,1</p><p> db 73h,7,0,1</p><p> db 65h, 7,0,1</p><p> db 70h,7,1,-10</p><p> db 72h,7,0,1</p>&l
18、t;p> db 65h,7,0,1 </p><p> db 73h,7,0,1 </p><p> db 73h,7,0,1</p><p> db 53h,7,0,2 </p><p> db 6bh,7,0,2</p><p> db 65h,7,0,1</p><p>
19、; db 79h,7,0,1</p><p> db 65h,7,0,2</p><p> db 78h,7,0,1</p><p> db 69h,7,0,1 </p><p> db 74h,7,0,1 </p><p> db 21h,7,0,1</p><p> ;****
20、*定義0-9十個圖形數(shù)字*****</p><p><b> s0 db 6</b></p><p> db 5fh,7,0,0</p><p> db 7ch,7,1,-1</p><p> db 7ch,7,1,0</p><p> db 5fh,7,0,1</p>&
21、lt;p> db 7ch,7,0,1</p><p> db 7ch,7,-1,0</p><p><b> sy db 2</b></p><p> db 7ch,7,1,0</p><p> db 7ch,7,1,0</p><p><b> s2 db 5<
22、/b></p><p> db 5fh,7,0,0</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p> db 7ch,7,1,-1</p><p> db 5fh,7,0,1</p><p><b> s3 db
23、 5</b></p><p> db 5fh,7,0,0</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p><b>
24、 s4 db 4</b></p><p> db 7ch,7,1,0</p><p> db 5fh,7,0,1</p><p> db 7ch,7,1,1</p><p> db 7ch,7,-1,0</p><p><b> s5 db 5</b></p>
25、<p> db 5fh,7,0,0</p><p> db 7ch,7,1,-1</p><p> db 5fh,7,0,1</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p><b> s6 db 6</b></p
26、><p> db 5fh,7,0,0</p><p> db 7ch,7,1,-1</p><p> db 5fh,7,0,1</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p> db 7ch,7,0,-1</p>&
27、lt;p><b> s7 db 3</b></p><p> db 5fh,7,0,0</p><p> db 7ch,7,1,1</p><p> db 7ch,7,1,0</p><p><b> s8 db 7</b></p><p> db 7ch,
28、7,1,0</p><p> db 5fh,7,-1,1</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p> db 7ch,7,0,-1&
29、lt;/p><p><b> s9 db 6</b></p><p> db 7ch,7,1,0</p><p> db 5fh,7,-1,1</p><p> db 7ch,7,1,1</p><p> db 5fh,7,0,-1</p><p> db 7ch,
30、7,1,1</p><p> db 5fh,7,0,-1</p><p><b> s11 db 2</b></p><p> db 03h,7,1,0</p><p> db 03h,7,1,0</p><p><b> data ends</b></p&g
31、t;<p> stack segment </p><p> db 200 dup (0)</p><p> stack ends</p><p> code segment</p><p> assume cs:code,ss:stack,ds:data</p><p><b>
32、start:</b></p><p> mov ax,data</p><p><b> mov ds,ax</b></p><p> mov ah,0 ;設置顯示方式</p><p><b> mov al,4</b></p><p>&
33、lt;b> int 10h</b></p><p> mov ah,0bh ;置彩色調板</p><p><b> mov bh,0</b></p><p><b> mov bl,1</b></p><p><b> int 10h</b&
34、gt;</p><p> mov ah,0bh ;置彩色調板</p><p><b> mov bh,1</b></p><p><b> mov bl,4</b></p><p><b> int 10h</b></p><p>
35、 mov ah,2 ;取系統(tǒng)時間</p><p><b> int 1ah</b></p><p><b> mov ax,0</b></p><p><b> mov bx,0</b></p><p> mov ah,ch ;取
36、系統(tǒng)時間</p><p> mov al,cl ;保存分鐘</p><p> mov bh,dh ;保存秒</p><p> mov bl,dl ;保存百分之一秒</p><p><b> tt: </b></p><p><b
37、> push ax</b></p><p><b> push bx</b></p><p><b> mov ah,0</b></p><p><b> mov al,4</b></p><p><b> int 10h</b>
38、;</p><p> mov ah,0bh</p><p><b> mov bh,0</b></p><p><b> mov bl,1</b></p><p><b> int 10h</b></p><p> mov ah,0bh<
39、/p><p><b> mov bh,1</b></p><p><b> mov bl,4</b></p><p><b> int 10h</b></p><p> MOV AH,1 ;讀鍵盤緩沖區(qū)字符</p><p
40、> INT 16h</p><p> JZ ww</p><p> MOV AH,8 ;從鍵盤輸入字符</p><p> INT 21h</p><p> CMP AL,'s' ;輸入s,結束程序</p>
41、;<p> JE tu</p><p> ww: pop bx</p><p><b> pop ax</b></p><p> call xian ;調用顯示子程序</p><p><b> push ax</b>
42、</p><p> qu: mov ah,2 ;取系統(tǒng)時間</p><p><b> int 1ah</b></p><p><b> cmp bh,dh</b></p><p><b> je qu</b></p>
43、<p><b> pop ax</b></p><p> inc bh ;對時間進行加1</p><p> cmp bh,100</p><p><b> jl tt</b></p><p><b> mov bh,0</
44、b></p><p><b> inc al</b></p><p><b> call beep</b></p><p> cmp al,100</p><p><b> jl tt</b></p><p><b> mov
45、al,0</b></p><p><b> inc ah</b></p><p><b> cmp ah,24</b></p><p><b> jl tt</b></p><p><b> mov ah,0</b></p>
46、<p><b> jmp tt</b></p><p> tu: mov ah,4ch</p><p><b> int 21h</b></p><p><b> ret</b></p><p> xian proc
47、 ;對時間值進行處理并顯示的子程序</p><p><b> push si</b></p><p><b> push di</b></p><p><b> push dx</b></p><p><b> push cx</b>&l
48、t;/p><p><b> push bx</b></p><p><b> push ax</b></p><p><b> pop ax</b></p><p><b> push ax</b></p><p><b&
49、gt; mov bx,ax</b></p><p><b> mov ax,0</b></p><p><b> mov al,bh</b></p><p><b> mov cl,4</b></p><p><b> shr al,cl<
50、/b></p><p> mov bl,al </p><p><b> mov dh,10</b></p><p><b> mov dl,2</b></p><p><b> call ff</b></p><p><b&
51、gt; pop ax</b></p><p><b> push ax</b></p><p><b> mov bx,ax</b></p><p><b> mov ax,0</b></p><p> mov al, bh</p><
52、p> and al,0fh</p><p><b> mov bl,al</b></p><p> mov dh,10 </p><p><b> mov dl,6</b></p><p><b> call ff</b></p><p>
53、;<b> mov dh,10</b></p><p><b> mov dl,10</b></p><p> mov bl,10 </p><p><b> call ff</b></p><p><b> pop ax</b></p&g
54、t;<p><b> push ax</b></p><p><b> mov cl,4</b></p><p><b> shr al,cl</b></p><p><b> mov bl,al</b></p><p> mov
55、dh,10 </p><p><b> mov dl,14</b></p><p><b> call ff</b></p><p><b> pop ax</b></p><p><b> push ax</b></p><p
56、> and al ,0fh</p><p><b> mov bl,al</b></p><p> mov dh,10 </p><p><b> mov dl,18</b></p><p><b> call ff</b></p><p&g
57、t;<b> mov dh,10</b></p><p><b> mov dl,22</b></p><p><b> mov bl,10</b></p><p><b> call ff</b></p><p><b> pop a
58、x</b></p><p><b> pop bx</b></p><p><b> push bx</b></p><p><b> push ax</b></p><p><b> mov ax,0</b></p>&
59、lt;p><b> mov al,bh</b></p><p><b> mov cl,4</b></p><p><b> shr al,cl</b></p><p><b> mov bl,al</b></p><p><b>
60、 mov dh,10</b></p><p><b> mov dl,26</b></p><p><b> call ff</b></p><p><b> pop ax</b></p><p><b> pop bx</b><
61、;/p><p><b> push bx</b></p><p><b> push ax</b></p><p><b> mov al,bh</b></p><p> and al,0fh </p><p><b> mov bl,
62、al</b></p><p> mov dh,10 </p><p><b> mov dl,30</b></p><p><b> call ff</b></p><p><b> mov dh,0</b></p><p><
63、b> mov dl,15</b></p><p><b> mov bl,22</b></p><p><b> call ff</b></p><p><b> pop ax</b></p><p><b> pop bx</b&g
64、t;</p><p><b> pop cx</b></p><p><b> pop dx</b></p><p><b> pop di</b></p><p><b> pop si</b></p><p><b
65、> ret</b></p><p><b> xian endp</b></p><p> ff proc ;顯示具體數(shù)值</p><p><b> push ax</b></p><p><b> push bx</b></p>&l
66、t;p><b> push cx</b></p><p><b> push dx</b></p><p><b> cmp bl,0</b></p><p><b> je l0</b></p><p><b> cmp bl,
67、1</b></p><p><b> je l1</b></p><p><b> cmp bl,2</b></p><p><b> je l2</b></p><p><b> cmp bl,3</b></p><
68、;p><b> je l3</b></p><p><b> cmp bl,4</b></p><p><b> je l4</b></p><p><b> cmp bl,5</b></p><p><b> je l5<
69、/b></p><p><b> cmp bl,6</b></p><p><b> je l6</b></p><p><b> cmp bl,7</b></p><p><b> je l7</b></p><p>
70、;<b> cmp bl,8</b></p><p><b> je l8</b></p><p><b> cmp bl,9</b></p><p><b> je l9</b></p><p><b> cmp bl,10</
71、b></p><p><b> je l10</b></p><p><b> cmp bl,22</b></p><p><b> je ld</b></p><p> l0: lea di,s0</p><p><b>
72、 jmp ty</b></p><p> l1 : lea di,sy</p><p><b> jmp ty</b></p><p> l2: lea di,s2</p><p><b> jmp ty</b></p><p> l3: le
73、a di,s3</p><p><b> jmp ty</b></p><p> l4: lea di,s4</p><p><b> jmp ty</b></p><p> l5: lea di,s5</p><p><b> jmp ty<
74、;/b></p><p> l6: lea di,s6</p><p><b> jmp ty</b></p><p> l7: lea di,s7</p><p><b> jmp ty</b></p><p> l8: lea di,s8<
75、;/p><p><b> jmp ty</b></p><p> l9: lea di,s9</p><p><b> jmp ty</b></p><p> l10: lea di,s11</p><p><b> jmp ty</b>&l
76、t;/p><p> ld : lea di,str</p><p> ty: mov ah,0fh ;顯示方式</p><p><b> int 10h</b></p><p><b> sub cx,cx</b></p><p> mov cl,
77、[di]</p><p><b> inc di</b></p><p> plot_next: add dh,[di+2]</p><p> add dl,[di+3]</p><p><b> mov ah,2</b></p><p><b> i
78、nt 10h</b></p><p> mov al,[di]</p><p> mov bl,[di+1]</p><p><b> push cx</b></p><p><b> mov cx,1</b></p><p><b> mov
79、 ah,09</b></p><p><b> int 10h</b></p><p><b> pop cx</b></p><p><b> add di,4</b></p><p> loop plot_next</p><p>
80、;<b> pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p><p><b> pop ax</b></p><p> mov cx,100</p><
81、;p> gg: dec cx</p><p><b> loop gg</b></p><p><b> ret</b></p><p><b> ff endp</b></p><p> clear proc </p><p><
82、;b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p><b> mov ah,6</b&g
83、t;</p><p><b> mov al,0</b></p><p><b> mov bh,1</b></p><p><b> int 10h</b></p><p><b> pop dx</b></p><p>
84、<b> pop cx</b></p><p><b> pop bx</b></p><p><b> pop ax</b></p><p><b> ret</b></p><p> clear endp</p><p&g
85、t;<b> beep proc</b></p><p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx&l
86、t;/b></p><p> mov al ,10110110b</p><p> out 43h,al</p><p> mov ax,533h</p><p> out 42h,al</p><p><b> mov al,ah</b></p><p>
87、 out 42h,al</p><p><b> in al,61h</b></p><p><b> mov ah,al</b></p><p><b> or al,03</b></p><p> out 61h,al</p><p>&l
88、t;b> sub cx,cx</b></p><p> mov bl,28h</p><p> g7: loop g7</p><p><b> dec bl</b></p><p><b> jnz g7</b></p><p><b>
89、; mov al,ah</b></p><p> out 61h,al</p><p><b> pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p><p>
90、<b> pop ax</b></p><p><b> ret</b></p><p><b> beep endp</b></p><p><b> code ends</b></p><p><b> end start</
91、b></p><p><b> 4 調試與運行</b></p><p><b> 4.1 實驗步驟</b></p><p> 1.打開windows命令窗口</p><p> 2.進入masm程序的安裝目錄,如圖</p><p><b> 圖 4
92、.1</b></p><p> 3連接程序,并查看生成可執(zhí)行文件huibian.exe</p><p><b> 圖 4.2</b></p><p> 4關閉對話框,打開可執(zhí)行文件開始運行程序</p><p> 4.2 程序調試及運行</p><p> 運行程序結果從0到9
93、,如下列截圖4.1到4.10所示</p><p><b> 圖 4.3</b></p><p><b> 圖 4.4</b></p><p><b> 圖 4.5</b></p><p><b> 圖 4.6</b></p>
94、<p><b> 圖 4.7</b></p><p><b> 圖 4.8</b></p><p><b> 圖 4.9</b></p><p><b> 圖 4.10</b></p><p><b> 圖 4.11
95、</b></p><p><b> 圖 4.12</b></p><p> 程序運行的任何時候按q或Q退出</p><p> 4.3 調試中出現(xiàn)的問題</p><p> 沒有注意到要操作的目標數(shù)據(jù)(內存中的數(shù)據(jù))的大小和使用操作容器(寄存器)的大小沒有一致。另外,對于數(shù)據(jù)處理的ds:[bx]方式,如
96、mov ds:[bx],dx add bx,2在循環(huán)中應該注意bx的遞增或遞減大小,如處理字節(jié),比如用dl,循環(huán)中就應該加或者減1;如果處理字,比如用dx,就應該加或者減2。在以后應該留意這個一致性。</p><p> 在8086上,ss和sp都是16位的,棧所處理數(shù)據(jù)的最小單位也是16位的,即最小是一個字,棧一次讀和一次寫,都至少是一個字那么大。</p><p><b>
97、5 總結</b></p><p> 學習了匯編語言這門課程,對它有了基本的了解和認識。認為自己可以解決一些簡單的匯編語言程序設計問題,但是拿到題目還是感覺有些無從下手。幸好得到了同學和老師的幫助,才從無從下手開始,一步步完成程序設計,一直到最后完成。當我運行自己所編寫的程序的時候,一種無以言表的喜悅充滿了我的內心。非常感謝幫助我的同學和老師,如果沒有他們的幫助,我的課程設計時不可能按時完成的。&l
98、t;/p><p> 對于我所學習的軟件工程這個專業(yè)來說,編寫程序是最基本,也是最重要的技能,這次帶著有些僥幸的完成,我感到有些慚愧。但是,我相信,在以后的學習和實踐中,我一定會汲取這次設計程序的經(jīng)驗和教訓,爭取把這門專業(yè)學的更好</p><p><b> 6 參考文獻</b></p><p> [1]《匯編語言程序設計》,吳向軍等,高等教育
99、出版社,2002</p><p> [2]《IBM-PC匯編語言及程序設計》(第2版), 沈美明等,清華大學出版社,2001</p><p> [3]《IBM-PC匯編語言及程序設計實驗教程》,沈美明等,清華大學出版社 ,2001</p><p> [4]《匯編語言程序設計》, 錢曉捷等,電子工業(yè)出版社,2000</p><p> [
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子表顯示單片機課程設計
- 可調電子表 課程設計
- plc課程設計---七段數(shù)碼管數(shù)字顯示
- 電子表課程設計單片機
- 微機接口電子表數(shù)字鐘課程設計
- 綜合設計課程設計報告---多功能數(shù)字電子表設計報告
- 電子表設計(微機原理與接口技術課程設計)
- 課程設計---電子表微控器設計及fpga功能驗證
- 七段共陰數(shù)碼管電子鐘plc程序設計原理
- 七段數(shù)碼管顯示數(shù)字電路
- 電子表技藝
- 備課電子表
- 電子表考試
- 電子表55614
- 紅外遙控器控制電子表單片機課程設計
- 設計、創(chuàng)建電子表格
- 智能儀器課程設計---基于spce061a單片機的六位七段led數(shù)碼管顯示設計
- 電子表格
- 備課本電子表
- 不妨收藏電子表
評論
0/150
提交評論