畫脈沖波形圖課程設計報告_第1頁
畫脈沖波形圖課程設計報告_第2頁
畫脈沖波形圖課程設計報告_第3頁
畫脈沖波形圖課程設計報告_第4頁
畫脈沖波形圖課程設計報告_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設 計 報 告課程名稱 匯編語言程序設計 課題名稱 畫脈沖波圖形 專 業(yè) 通信工程 班 級 學 號 姓 名 指導教師 廖 智 201x年 06 月 22 日湖南工程學院課 程 設 計 任 務 書課程名稱 匯編語言程序設計 課 題 畫脈沖波圖形 專業(yè)班級 學生姓名 學 號 指導老師 廖 智 審 批 任務書下達日期 201x年 5 月 28日任務完成日期 201x年 6 月 22日一、設計內(nèi)容與設計要求1.課程設計目的:匯編語言程序設計是計算機專業(yè)的重要的專業(yè)基礎課,通過本課程設計使學生進一步鞏固課堂所學,全面熟悉、掌握8088宏匯編語言程序設計的基本方法和技巧,進一步提高編寫程序、閱讀分

2、析程序及上機操作、調(diào)試程序的能力。2.課題題目1)編寫一個時鐘程序2)畫網(wǎng)格線3)畫脈沖波圖形4)用“*”畫菱形框5)計算比賽成績6)文件加密程序3設計要求:1)在一周內(nèi)學生須上機16小時以上,程序調(diào)試完后,須由指導老師在機器上檢查運行結(jié)果,經(jīng)教師認可后的源程序可通過打印機輸出。2)分組及安排A.每組同學必須完成所指定的題目,每個同學須自己完成設計,應有不同的思路。B.按學號分組,第一組為1、7、13、19、25號同學,第二組為2、8、14、20、26號,第三組為3、9、15、21、27號,依次類推,其中第一組做第一題,第二組做第二題,依次類推。3)按規(guī)定格式完成課程設計報告,將其打印稿(A4

3、紙)上交給老師存檔。4)不得抄襲他人程序、課程設計報告,每個人應體現(xiàn)自己的個性設計,成績的考核按上機表現(xiàn)、答辯成績及課程設計說明書來綜合評定。成績分為優(yōu)、良、中、及格、不及格五級分評定。二、進度安排第 17 周 星期 一 14 時:00分 18 時:00分 星期二 14 時:00分 18時:00分 星期五 14時:00分 18時:00分目 錄1. 畫脈沖波圖形12. 程序總體設計方案、思路13. 程序設計框圖14. 源程序清單25. 程序調(diào)試結(jié)果及分析96. 設計總結(jié)1010 / 15文檔可自由編輯打印1. 畫脈沖波圖形要求:用戶以十進制數(shù)形式從鍵盤輸入脈沖高度、脈沖寬度和顏色參數(shù)(格式同上)

4、后,以屏幕中間行為脈沖中間行,從左到右、滿屏畫出相應的脈沖波圖形。參數(shù)以十進制數(shù)形式輸入,格式如下:Please enter heigth:* Please enter width:* Please enter color:*2. 程序總體設計方案、思路設計方案:程序由輸入、輸出、圖形顯示構(gòu)成。代碼段、數(shù)據(jù)段、堆棧段都放在同一個段內(nèi),以便調(diào)用圖形顯示。在顯示屏幕中間顯示一根線,以便確認中間線,調(diào)用INT 10H的寫像素功能以循環(huán)畫脈沖波形圖。思路.:首先寫好需要調(diào)用的函數(shù),接著給出提示輸入?yún)?shù),高度,寬度以及顏色,然后將輸入的十進制數(shù)據(jù)轉(zhuǎn)化為二進制數(shù)據(jù)。設置一個640X320的1 6色文本顯示

5、方式,將鍵盤讀取的數(shù)據(jù)帶入圖形顯示文本,顯示脈沖波形圖。開始給出輸入提示輸入?yún)?shù),高度,寬度和顏色將輸入的十進制數(shù)轉(zhuǎn)換成二進制設置圖形顯示方式畫脈沖波形圖結(jié)束3. 程序設計框圖圖3.1總體流程圖4. 源程序清單Code Segment Assume CS:Code,DS:CodeCR EQU 000DHLF EQU 000AHKBBack EQU 0008H; ; 功能:顯示指定地址(Str_Addr)的字符串; 入口:; Str_Addr字符串地址(要求在數(shù)據(jù)段); 用法: Output Str_Addr; 用法舉例:Output PromptStrOutput MACRO Str_Addr

6、 lea dx,Str_Addr mov ah,9 int 21h EndM; ; 功能:輸出回車換行Enter_CTLF proc Near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax retEnter_CTLF endp ; ; 功能:取光標位置; 入口:無; 出口:DH=行號,DL=列號GetCursor Proc Near PUSH AX PUSH BX PUSH CX XOR BX,BX MOV AH,3 INT 10H MOV Cursor_Row,DH MOV Cur

7、sor_Col,DL POP CX POP BX POP AX RETCursor_Row DB ?Cursor_Col DB ?GetCursor EndP; ; 功能:置光標位置; 入口:Cursor_Row=行坐標; Cursor_Col: 列坐標)SetCursor Proc Near PUSH CX PUSH BX PUSH AX MOV DH,Cursor_Row MOV DL,Cursor_Col XOR BX,BX MOV AH,2 INT 10H POP AX POP BX POP CX RETSetCursor EndP; 功能:鍵盤輸入一個N位的十進制數(shù)字,將其轉(zhuǎn)換成二進

8、制數(shù)并保存在指定的內(nèi)存單元。; 入口:N=數(shù)字位數(shù);di=保存輸入的數(shù)字首地址; 出口:轉(zhuǎn)換后的二進制數(shù)保存在di所指的單元Input_Digit Proc Near push dx push cx push bx push di lea di,Save_Tmp push di cld mov cx,N push cxInput: call GetCursor ;取光標位置 mov ah,1 ;從鍵盤接受一個字符 int 21h cmp al,CR ;若鍵入的是回車,已經(jīng)鍵入的數(shù)字不足N位 jz ASC_Dec ;轉(zhuǎn)去處理已經(jīng)鍵入的數(shù)字 cmp al,KBBack jz KB_Back ;若是

9、回空鍵,重新輸入 cmp al,'0' jb KBBack ;若低于數(shù)字'0',重新輸入 cmp al,'9' ja KBBack ;若低于數(shù)字'9',重新輸入 jmp Save_DigKB_Back: dec Cursor_Col inc cx dec diKBBack: call SetCursor ;置光標位置 jmp InputSave_Dig: and al,0fh ;轉(zhuǎn)換成二進制數(shù) stosb ;保存 loop Input ;接受下一個數(shù)字ASC_Dec: mov ax,cx pop cx pop si sub cx,

10、ax ;實際輸入的數(shù)字位數(shù) xor bp,bp xor dx,dx xor ax,ax jcxz Save_Ret ;若直接回車,沒有輸入任何數(shù)字,按輸入'0'處理 dec cx ;實際輸入的數(shù)字位數(shù)減1,準備把輸入的這一串數(shù)字轉(zhuǎn)換成二進制數(shù) jcxz One_Digit ;若輸入的數(shù)字只有一位,轉(zhuǎn)去直接保存這個二進制數(shù) mov bx,10Mul_Ten: lodsb cbw add ax,bp mul bx mov bp,ax loop Mul_TenOne_Digit:lodsb cbw add ax,bpSave_Ret: pop di stosw pop bx pop

11、cx pop dx retSave_Tmp db 16 dup(?)Input_Digit EndP; Prompt_Str1 db 'Please input pulse hight: $' ;提示輸入脈沖高度Prompt_Str2 db 'Please input pulse width: $' ;提示輸入脈沖寬度Prompt_Str3 db 'Please input line colour: $' ;提示輸入波線顏色N equ 3 ;輸入十進制數(shù)值位數(shù)Hight_Pulse dw ? ;脈沖高度Width_Pulse dw ? ;脈沖寬度

12、Colou_Pulse dw ? ;波線顏色Start: push cs pop ds push cs pop es ;使數(shù)據(jù)段、附加段與代碼段同段 Output Prompt_Str1 ;提示輸入脈沖高度 lea di,Hight_Pulse ;脈沖高度 call Input_Digit ;鍵盤輸入一個3位的十進制數(shù)字,將其轉(zhuǎn)換成二進制數(shù)并保存在指定的內(nèi)存單元 call Enter_CTLF ;輸出一個回車、換行 Output Prompt_Str2 ;提示輸入脈沖寬度 lea di,Width_Pulse ;脈沖寬度 call Input_Digit call Enter_CTLF ;輸出

13、一個回車、換行 Output Prompt_Str3 ;提示輸入波線顏色 lea di,Colou_Pulse ;波線顏色 call Input_Digit mov ax,12h ;設置640x480,16色圖形顯示方式 int 10h; 以屏幕中間行為脈沖中間行,畫一條橫線 mov bp,640 ;橫向點數(shù) xor bh,bh xor cx,cx ;橫向起始點 mov dx,480 ;圖形顯示方式,一列480點 shr dx,1 ;縱向起始點 mov ah,0ch mov al,byte ptr Colou_Pulse ;取像素顏色L0: int 10h ;寫一個指定顏色的像素 inc cx

14、 ;橫向向右增值 dec bp test bp,bp jnz L0; 從左到右、滿屏畫出相應的脈沖波圖形。 mov bp,Hight_Pulse ;取脈沖高度 xor cx,cx ;橫向起始點 mov dx,480 ;圖形顯示方式,一列480點 shr dx,1 ;縱向起始點L1: int 10h ;寫一個指定顏色的像素 dec dx ;縱向向上減值 dec bp test bp,bp jnz L1Pulse_Wave: mov bp,Width_Pulse ;取脈沖寬度,一個脈沖周期L2: int 10h ;寫一個指定顏色的像素 inc cx ;橫向向右增值 cmp cx,639 ja Pa

15、use ;若到達屏幕最右邊,跳出循環(huán),等待用戶按鍵,結(jié)束程序 dec bp test bp,bp jnz L2 mov bp,Hight_Pulse ;取脈沖高度 shl bp,1L3: int 10h ;寫一個指定顏色的像素 inc dx ;縱向向下增值 dec bp test bp,bp jnz L3 mov bp,Width_Pulse ;取脈沖間斷寬度L4: int 10h ;寫一個指定顏色的像素 inc cx ;橫向向右增值 cmp cx,639 ja Pause ;若到達屏幕最右邊,跳出循環(huán),等待用戶按鍵,結(jié)束程序 dec bp test bp,bp jnz L4 mov bp,H

16、ight_Pulse ;取脈沖高度 shl bp,1L5: int 10h ;寫一個指定顏色的像素 dec dx ;縱向向上減值 dec bp test bp,bp jnz L5 jmp Pulse_Wave ;一個脈沖周期結(jié)束,進行下一個脈沖周期Pause: mov ah,1 ;暫停,按任意鍵結(jié)束程序 int 21h mov ah,3 ;設置80x25,16色文本顯示方式 int 10hExit_Proc: mov ah,4ch ;結(jié)束程序 int 21hCode ENDS END Start ;編譯到此結(jié)束5. 程序調(diào)試結(jié)果及分析a. 設置高度為100,寬度為100,以藍色顯示的脈沖圖案。圖5.1 參數(shù)設置b. 以640x480,16色的顯示當輸入的參數(shù)的脈沖波形圖。當輸入的參數(shù)過大,屏幕無法準確的顯示,這時只要把參數(shù)適當?shù)恼{(diào)下,就可以看到完整的圖案。圖5.2 脈沖波形圖6. 設計總結(jié)通過此次的課程設計,對80x86匯編語言程序設計有了更深入的了解。將課堂上所學的知識運用到實踐當中,了解了實踐的重要性,加強了自己的動手能力,也知道自己對學到的相關知識沒有很好的掌握。在做課設中遇到了很多問題,通過詢問老師,網(wǎng)上查閱資料以及同學的幫助下,問題得以解決。這次課程設計使我學到了很多東西,受益匪淺??偟膩碚f,此次的課程設計算是順利完成,匯編語言

溫馨提示

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

評論

0/150

提交評論