版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計 報 告</p><p> 課程名稱 匯編語言程序設計 </p><p> 課題名稱 畫脈沖波圖形 </p><p> 專 業(yè) 通信工程 </p><p> 班 級
2、 </p><p> 學 號 </p><p> 姓 名 </p><p> 指導教師 </p><p> 201x年 06
3、 月 22 日</p><p> 一、設計內容與設計要求</p><p><b> 1.課程設計目的:</b></p><p> 《匯編語言程序設計》是計算機專業(yè)的重要的專業(yè)基礎課,通過本課程設計使學生進一步鞏固課堂所學,全面熟悉、掌握8088宏匯編語言程序設計的基本方法和技巧,進一步提高編寫程序、閱讀分析程序及上機操作、調試程序的能
4、力。</p><p><b> 2.課題題目</b></p><p> 1)編寫一個時鐘程序</p><p><b> 2)畫網格線</b></p><p><b> 3)畫脈沖波圖形</b></p><p> 4)用“*”畫菱形框</p
5、><p><b> 5)計算比賽成績</b></p><p><b> 6)文件加密程序</b></p><p><b> 3.設計要求:</b></p><p> 1)在一周內學生須上機16小時以上,程序調試完后,須由指導老師在機器上檢查運行結果,經教師認可后的源程序可通
6、過打印機輸出。</p><p><b> 2)分組及安排</b></p><p> A.每組同學必須完成所指定的題目,每個同學須自己完成設計,應有不同的思路。</p><p> B.按學號分組,第一組為1、7、13、19、25號同學,第二組為2、8、14、20、26號,第三組為3、9、15、21、27號,依次類推,其中第一組做第一題,第二
7、組做第二題,依次類推。</p><p> 3)按規(guī)定格式完成課程設計報告,將其打印稿(A4紙)上交給老師存檔。</p><p> 4)不得抄襲他人程序、課程設計報告,每個人應體現(xiàn)自己的個性設計,成績的考核按上機表現(xiàn)、答辯成績及課程設計說明書來綜合評定。成績分為優(yōu)、良、中、及格、不及格五級分評定。</p><p><b> 二、進度安排</b&g
8、t;</p><p> 第 17 周 星期 一 14 時:00分—— 18 時:00分</p><p> 星期二 14 時:00分—— 18時:00分</p><p> 星期五 14時:00分—— 18時:00分</p><p><b> 目 錄</b></p>
9、<p> 1. 畫脈沖波圖形1</p><p> 2. 程序總體設計方案、思路1</p><p> 3. 程序設計框圖1</p><p> 4. 源程序清單2</p><p> 5. 程序調試結果及分析9</p><p> 6. 設計總結10</p><p>&
10、lt;b> 畫脈沖波圖形</b></p><p> 要求:用戶以十進制數形式從鍵盤輸入脈沖高度、脈沖寬度和顏色參數(格式同上)后,以屏幕中間行為脈沖中間行,從左到右、滿屏畫出相應的脈沖波圖形。參數以十進制數形式輸入,格式如下:</p><p> Please enter heigth:** </p><p> Please enter w
11、idth:** </p><p> Please enter color:**</p><p> 程序總體設計方案、思路</p><p> 設計方案:程序由輸入、輸出、圖形顯示構成。代碼段、數據段、堆棧段都放在同一個段內,以便調用圖形顯示。在顯示屏幕中間顯示一根線,以便確認中間線,調用INT 10H的寫像素功能以循環(huán)畫脈沖波形圖。</p><
12、;p> 思路.:首先寫好需要調用的函數,接著給出提示輸入參數,高度,寬度以及顏色,然后將輸入的十進制數據轉化為二進制數據。設置一個640X320的1 6色文本顯示方式,將鍵盤讀取的數據帶入圖形顯示文本,顯示脈沖波形圖。</p><p><b> 程序設計框圖</b></p><p><b> 圖3.1總體流程圖</b></p&g
13、t;<p><b> 源程序清單</b></p><p> Code Segment</p><p> Assume CS:Code,DS:Code</p><p> CR EQU 000DH</p><p> LF EQU 000AH</p>
14、<p> KBBack EQU 0008H</p><p> ; -------------------------------------</p><p> ; 功能:顯示指定地址(Str_Addr)的字符串</p><p><b> ; 入口:</b></p><p> ; Str
15、_Addr=字符串地址(要求在數據段)</p><p> ; 用法: Output Str_Addr</p><p> ; 用法舉例:Output PromptStr</p><p> Output MACRO Str_Addr</p><p> lea dx,Str_Addr</p><p><b&
16、gt; mov ah,9</b></p><p><b> int 21h</b></p><p><b> EndM</b></p><p> ; ------------------------------------- </p><p> ; 功能:輸出回車換行<
17、;/p><p> Enter_CTLF proc Near</p><p><b> push ax </b></p><p><b> push dx</b></p><p> mov ah,02h</p><p> mov dl,0dh </p>
18、<p><b> int 21h</b></p><p> mov dl,0ah</p><p><b> int 21h </b></p><p><b> pop dx</b></p><p><b> pop ax</b&
19、gt;</p><p><b> ret</b></p><p> Enter_CTLF endp </p><p> ; -------------------------------------</p><p> ; 功能:取光標位置</p><p><b> ; 入口:無
20、</b></p><p> ; 出口:DH=行號,DL=列號</p><p> GetCursor Proc Near</p><p><b> PUSH AX</b></p><p><b> PUSH BX</b></p><p><b&g
21、t; PUSH CX</b></p><p> XOR BX,BX</p><p> MOV AH,3</p><p><b> INT 10H</b></p><p> MOV Cursor_Row,DH</p><p> MOV Cursor_Col,D
22、L</p><p><b> POP CX</b></p><p><b> POP BX</b></p><p><b> POP AX</b></p><p><b> RET</b></p><p> Cu
23、rsor_Row DB ?</p><p> Cursor_Col DB ?</p><p> GetCursor EndP</p><p> ; -------------------------------------</p><p> ; 功能:置光標位置</p><p> ; 入口:Cursor
24、_Row=行坐標; Cursor_Col: 列坐標)</p><p> SetCursor Proc Near</p><p><b> PUSH CX</b></p><p><b> PUSH BX</b></p><p><b> PUSH AX</b>&
25、lt;/p><p> MOV DH,Cursor_Row</p><p> MOV DL,Cursor_Col</p><p> XOR BX,BX</p><p> MOV AH,2</p><p><b> INT 10H</b></p><p&g
26、t;<b> POP AX</b></p><p><b> POP BX</b></p><p><b> POP CX</b></p><p><b> RET</b></p><p> SetCursor EndP</p&
27、gt;<p> ;-------------------------------------</p><p> ; 功能:鍵盤輸入一個N位的十進制數字,將其轉換成二進制數并保存在指定的內存單元。</p><p> ; 入口:N=數字位數;di=保存輸入的數字首地址</p><p> ; 出口:轉換后的二進制數保存在di所指的單元</p&g
28、t;<p> Input_Digit Proc Near</p><p><b> push dx</b></p><p><b> push cx</b></p><p><b> push bx</b></p><p><b> push
29、di</b></p><p> lea di,@@Save_Tmp</p><p><b> push di</b></p><p><b> cld</b></p><p><b> mov cx,N</b></p><p>&
30、lt;b> push cx</b></p><p> @@Input: call GetCursor ;取光標位置</p><p> mov ah,1 ;從鍵盤接受一個字符</p><p><b> int 21h</b></p><p> cmp al,CR ;若鍵入的是回車,已經鍵入
31、的數字不足N位</p><p> jz @@ASC_Dec ;轉去處理已經鍵入的數字</p><p> cmp al,KBBack</p><p> jz @@KB_Back ;若是回空鍵,重新輸入</p><p> cmp al,'0'</p><p> jb @@KBBack ;
32、若低于數字'0',重新輸入</p><p> cmp al,'9'</p><p> ja @@KBBack ;若低于數字'9',重新輸入</p><p> jmp @@Save_Dig</p><p> @@KB_Back: dec Cursor_Col</p>
33、<p><b> inc cx</b></p><p><b> dec di</b></p><p> @@KBBack: call SetCursor ;置光標位置</p><p> jmp @@Input</p><p> @@Save_Dig: and al,0f
34、h ;轉換成二進制數</p><p><b> stosb ;保存</b></p><p> loop @@Input ;接受下一個數字</p><p> @@ASC_Dec: mov ax,cx</p><p><b> pop cx</b></p><p>&
35、lt;b> pop si</b></p><p> sub cx,ax ;實際輸入的數字位數</p><p> xor bp,bp</p><p> xor dx,dx</p><p> xor ax,ax</p><p> jcxz @@Save_Ret ;若直接回車,沒有輸入
36、任何數字,按輸入'0'處理</p><p> dec cx ;實際輸入的數字位數減1,準備把輸入的這一串數字轉換成二進制數</p><p> jcxz @@One_Digit ;若輸入的數字只有一位,轉去直接保存這個二進制數</p><p> mov bx,10</p><p> @@Mul_Ten: lodsb&
37、lt;/p><p><b> cbw</b></p><p> add ax,bp</p><p><b> mul bx</b></p><p> mov bp,ax</p><p> loop @@Mul_Ten</p><p> @
38、@One_Digit:lodsb</p><p><b> cbw</b></p><p> add ax,bp</p><p> @@Save_Ret: pop di</p><p><b> stosw</b></p><p><b> pop
39、bx</b></p><p><b> pop cx</b></p><p><b> pop dx</b></p><p><b> ret</b></p><p> @@Save_Tmp db 16 dup(?)</p><p&
40、gt; Input_Digit EndP</p><p> ; -------------------------------------</p><p> Prompt_Str1 db 'Please input pulse hight: $' ;提示輸入脈沖高度</p><p> Prompt_Str2 db 'Please
41、input pulse width: $' ;提示輸入脈沖寬度</p><p> Prompt_Str3 db 'Please input line colour: $' ;提示輸入波線顏色</p><p> N equ 3 ;輸入十進制數值位數</p><p> Hight_Pulse dw ? ;脈沖高度</p>
42、;<p> Width_Pulse dw ? ;脈沖寬度</p><p> Colou_Pulse dw ? ;波線顏色</p><p> Start: push cs</p><p><b> pop ds</b></p><p><b> push cs</b>
43、</p><p> pop es ;使數據段、附加段與代碼段同段</p><p> Output Prompt_Str1 ;提示輸入脈沖高度</p><p> lea di,Hight_Pulse ;脈沖高度</p><p> call Input_Digit ;鍵盤輸入一個3位的十進制數字,將其轉換成二進制數并保存在指定的內存單
44、元</p><p> call Enter_CTLF ;輸出一個回車、換行</p><p> Output Prompt_Str2 ;提示輸入脈沖寬度</p><p> lea di,Width_Pulse ;脈沖寬度</p><p> call Input_Digit</p><p> call Ente
45、r_CTLF ;輸出一個回車、換行</p><p> Output Prompt_Str3 ;提示輸入波線顏色</p><p> lea di,Colou_Pulse ;波線顏色</p><p> call Input_Digit</p><p> mov ax,12h ;設置640x480,16色圖形顯示方式</p>
46、<p><b> int 10h</b></p><p> ; 以屏幕中間行為脈沖中間行,畫一條橫線</p><p> mov bp,640 ;橫向點數</p><p> xor bh,bh</p><p> xor cx,cx ;橫向起始點</p><p> m
47、ov dx,480 ;圖形顯示方式,一列480點</p><p> shr dx,1 ;縱向起始點</p><p> mov ah,0ch</p><p> mov al,byte ptr Colou_Pulse ;取像素顏色</p><p> L0: int 10h ;寫一個指定顏色的像素</p><
48、;p> inc cx ;橫向向右增值</p><p><b> dec bp</b></p><p> test bp,bp</p><p><b> jnz L0</b></p><p> ; 從左到右、滿屏畫出相應的脈沖波圖形。</p><p>
49、mov bp,Hight_Pulse ;取脈沖高度</p><p> xor cx,cx ;橫向起始點</p><p> mov dx,480 ;圖形顯示方式,一列480點</p><p> shr dx,1 ;縱向起始點</p><p> L1: int 10h ;寫一個指定顏色的像素</p><p
50、> dec dx ;縱向向上減值</p><p><b> dec bp</b></p><p> test bp,bp</p><p><b> jnz L1</b></p><p> Pulse_Wave: mov bp,Width_Pulse ;取脈沖寬度,一個脈沖周期
51、</p><p> L2: int 10h ;寫一個指定顏色的像素</p><p> inc cx ;橫向向右增值</p><p> cmp cx,639</p><p> ja Pause ;若到達屏幕最右邊,跳出循環(huán),等待用戶按鍵,結束程序</p><p><b> dec bp&
52、lt;/b></p><p> test bp,bp</p><p><b> jnz L2</b></p><p> mov bp,Hight_Pulse ;取脈沖高度</p><p><b> shl bp,1</b></p><p> L3:
53、int 10h ;寫一個指定顏色的像素</p><p> inc dx ;縱向向下增值</p><p><b> dec bp</b></p><p> test bp,bp</p><p><b> jnz L3</b></p><p> mov bp,
54、Width_Pulse ;取脈沖間斷寬度</p><p> L4: int 10h ;寫一個指定顏色的像素</p><p> inc cx ;橫向向右增值</p><p> cmp cx,639</p><p> ja Pause ;若到達屏幕最右邊,跳出循環(huán),等待用戶按鍵,結束程序</p><p>
55、;<b> dec bp</b></p><p> test bp,bp</p><p><b> jnz L4</b></p><p> mov bp,Hight_Pulse ;取脈沖高度</p><p><b> shl bp,1</b></p>
56、;<p> L5: int 10h ;寫一個指定顏色的像素</p><p> dec dx ;縱向向上減值</p><p><b> dec bp</b></p><p> test bp,bp</p><p><b> jnz L5</b></p>
57、<p> jmp Pulse_Wave ;一個脈沖周期結束,進行下一個脈沖周期</p><p> Pause: mov ah,1 ;暫停,按任意鍵結束程序</p><p><b> int 21h</b></p><p> mov ah,3 ;設置80x25,16色文本顯示方式</p><p&g
58、t;<b> int 10h</b></p><p> Exit_Proc: mov ah,4ch ;結束程序</p><p><b> int 21h</b></p><p> Code ENDS</p><p> END Start ;編譯到此結束</p>&
59、lt;p><b> 程序調試結果及分析</b></p><p> 設置高度為100,寬度為100,以藍色顯示的脈沖圖案。</p><p><b> 圖5.1 參數設置</b></p><p> 以640x480,16色的顯示當輸入的參數的脈沖波形圖。當輸入的參數過大,屏幕無法準確的顯示,這時只要把參數適當的調
60、下,就可以看到完整的圖案。</p><p> 圖5.2 脈沖波形圖</p><p><b> 設計總結</b></p><p> 通過此次的課程設計,對80x86匯編語言程序設計有了更深入的了解。將課堂上所學的知識運用到實踐當中,了解了實踐的重要性,加強了自己的動手能力,也知道自己對學到的相關知識沒有很好的掌握。在做課設中遇到了很多問題,
61、通過詢問老師,網上查閱資料以及同學的幫助下,問題得以解決。這次課程設計使我學到了很多東西,受益匪淺。</p><p> 總的來說,此次的課程設計算是順利完成,匯編語言是面向機器的程序設計語言,當今計算機應用在生活中可以說是無處不在,因此掌握一些編程語言對我們來說是基本的要求,相對于高級語言難學,難用,適用范圍小,雖然簡單,但是過于靈活,學習過高級語言的人去學習匯編比一開始學匯編的人難得多,但是學過匯編的人學習高
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda實驗程序及仿真波形圖
- 軌檢車波形圖基本應用
- 波形發(fā)生器課程設計報告
- 波形發(fā)生器課程設計報告
- 波形發(fā)生器課程設計報告
- 微機課程設計報告-波形發(fā)生器
- 模電課程設計報告---波形發(fā)生電路
- 模電課程設計報告--波形發(fā)生電路
- 簡易波形發(fā)生器課程設計報告
- eda課程設計--任意波形產生器報告
- 波形發(fā)生器課程設計
- 單片機課程設計報告--波形發(fā)生器
- 課程設計——波形發(fā)生器
- 單片機課程設計報告--- 波形生器的設計
- 單片機波形發(fā)生器課程設計報告
- 課程設計--波形發(fā)生器設計
- 波形發(fā)生器課程設計
- 課程設計——波形發(fā)生器
- 課程設計-波形發(fā)生器
- 波形發(fā)生器課程設計
評論
0/150
提交評論