教務(wù)管理數(shù)據(jù)庫系統(tǒng)及畫脈沖波形圖課程設(shè)計報告_第1頁
教務(wù)管理數(shù)據(jù)庫系統(tǒng)及畫脈沖波形圖課程設(shè)計報告_第2頁
教務(wù)管理數(shù)據(jù)庫系統(tǒng)及畫脈沖波形圖課程設(shè)計報告_第3頁
教務(wù)管理數(shù)據(jù)庫系統(tǒng)及畫脈沖波形圖課程設(shè)計報告_第4頁
教務(wù)管理數(shù)據(jù)庫系統(tǒng)及畫脈沖波形圖課程設(shè)計報告_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

畫脈沖波圖形要求:用戶以十進(jìn)制數(shù)形式從鍵盤輸入脈沖高度、脈沖寬度和顏色參數(shù)(格式同上)后,以屏幕中間行為脈沖中間行,從左到右、滿屏畫出相應(yīng)的脈沖波圖形。參數(shù)以十進(jìn)制數(shù)形式輸入,格式如下:Pleaseenterheigth:**Pleaseenterwidth:**Pleaseentercolor:**程序總體設(shè)計方案、思路設(shè)計方案:程序由輸入、輸出、圖形顯示構(gòu)成。代碼段、數(shù)據(jù)段、堆棧段都放在同一個段內(nèi),以便調(diào)用圖形顯示。在顯示屏幕中間顯示一根線,以便確認(rèn)中間線,調(diào)用INT10H的寫像素功能以循環(huán)畫脈沖波形圖。思路.:首先寫好需要調(diào)用的函數(shù),接著給出提示輸入?yún)?shù),高度,寬度以及顏色,然后將輸入的十進(jìn)制數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)。設(shè)置一個640X320的16色文本顯示方式,將鍵盤讀取的數(shù)據(jù)帶入圖形顯示文本,顯示脈沖波形圖。開始給出輸入提示輸入?yún)?shù),高度,寬度和顏色將輸入的十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制開始給出輸入提示輸入?yún)?shù),高度,寬度和顏色將輸入的十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制設(shè)置圖形顯示方式畫脈沖波形圖結(jié)束圖3.1總體流程圖

源程序清單CodeSegmentAssumeCS:Code,DS:CodeCREQU000DHLFEQU000AHKBBackEQU0008H;-------------------------------------;功能:顯示指定地址(Str_Addr)的字符串;入口:;Str_Addr=字符串地址(要求在數(shù)據(jù)段);用法:OutputStr_Addr;用法舉例:OutputPromptStrOutputMACROStr_Addrleadx,Str_Addrmovah,9int21hEndM;-------------------------------------;功能:輸出回車換行Enter_CTLFprocNearpushaxpushdxmovah,02hmovdl,0dhint21hmovdl,0ahint21hpopdxpopaxretEnter_CTLFendp;-------------------------------------;功能:取光標(biāo)位置;入口:無;出口:DH=行號,DL=列號GetCursorProcNearPUSHAXPUSHBXPUSHCXXORBX,BXMOVAH,3INT10HMOVCursor_Row,DHMOVCursor_Col,DLPOPCXPOPBXPOPAXRETCursor_RowDB?Cursor_ColDB?GetCursorEndP;-------------------------------------;功能:置光標(biāo)位置;入口:Cursor_Row=行坐標(biāo);Cursor_Col:列坐標(biāo))SetCursorProcNearPUSHCXPUSHBXPUSHAXMOVDH,Cursor_RowMOVDL,Cursor_ColXORBX,BXMOVAH,2INT10HPOPAXPOPBXPOPCXRETSetCursorEndP;-------------------------------------;功能:鍵盤輸入一個N位的十進(jìn)制數(shù)字,將其轉(zhuǎn)換成二進(jìn)制數(shù)并保存在指定的內(nèi)存單元。;入口:N=數(shù)字位數(shù);di=保存輸入的數(shù)字首地址;出口:轉(zhuǎn)換后的二進(jìn)制數(shù)保存在di所指的單元Input_DigitProcNearpushdxpushcxpushbxpushdileadi,@@Save_Tmppushdicldmovcx,Npushcx@@Input:callGetCursor;取光標(biāo)位置movah,1;從鍵盤接受一個字符int21hcmpal,CR;若鍵入的是回車,已經(jīng)鍵入的數(shù)字不足N位jz@@ASC_Dec;轉(zhuǎn)去處理已經(jīng)鍵入的數(shù)字cmpal,KBBackjz@@KB_Back;若是回空鍵,重新輸入cmpal,'0'jb@@KBBack;若低于數(shù)字'0',重新輸入cmpal,'9'ja@@KBBack;若低于數(shù)字'9',重新輸入jmp@@Save_Dig@@KB_Back:decCursor_Colinccxdecdi@@KBBack:callSetCursor;置光標(biāo)位置jmp@@Input@@Save_Dig:andal,0fh;轉(zhuǎn)換成二進(jìn)制數(shù)stosb;保存loop@@Input;接受下一個數(shù)字@@ASC_Dec:movax,cxpopcxpopsisubcx,ax;實際輸入的數(shù)字位數(shù)xorbp,bpxordx,dxxorax,axjcxz@@Save_Ret;若直接回車,沒有輸入任何數(shù)字,按輸入'0'處理deccx;實際輸入的數(shù)字位數(shù)減1,準(zhǔn)備把輸入的這一串?dāng)?shù)字轉(zhuǎn)換成二進(jìn)制數(shù)jcxz@@One_Digit;若輸入的數(shù)字只有一位,轉(zhuǎn)去直接保存這個二進(jìn)制數(shù)movbx,10@@Mul_Ten:lodsbcbwaddax,bpmulbxmovbp,axloop@@Mul_Ten@@One_Digit:lodsbcbwaddax,bp@@Save_Ret:popdistoswpopbxpopcxpopdxret@@Save_Tmpdb16dup(?)Input_DigitEndP;-------------------------------------Prompt_Str1db'Pleaseinputpulsehight:$';提示輸入脈沖高度Prompt_Str2db'Pleaseinputpulsewidth:$';提示輸入脈沖寬度Prompt_Str3db'Pleaseinputlinecolour:$';提示輸入波線顏色Nequ3;輸入十進(jìn)制數(shù)值位數(shù)Hight_Pulsedw?;脈沖高度Width_Pulsedw?;脈沖寬度Colou_Pulsedw?;波線顏色Start:pushcspopdspushcspopes;使數(shù)據(jù)段、附加段與代碼段同段OutputPrompt_Str1;提示輸入脈沖高度leadi,Hight_Pulse;脈沖高度callInput_Digit;鍵盤輸入一個3位的十進(jìn)制數(shù)字,將其轉(zhuǎn)換成二進(jìn)制數(shù)并保存在指定的內(nèi)存單元callEnter_CTLF;輸出一個回車、換行OutputPrompt_Str2;提示輸入脈沖寬度leadi,Width_Pulse;脈沖寬度callInput_DigitcallEnter_CTLF;輸出一個回車、換行OutputPrompt_Str3;提示輸入波線顏色leadi,Colou_Pulse;波線顏色callInput_Digitmovax,12h;設(shè)置640x480,16色圖形顯示方式int10h;以屏幕中間行為脈沖中間行,畫一條橫線movbp,640;橫向點(diǎn)數(shù)xorbh,bhxorcx,cx;橫向起始點(diǎn)movdx,480;圖形顯示方式,一列480點(diǎn)shrdx,1;縱向起始點(diǎn)movah,0chmoval,byteptrColou_Pulse;取像素顏色L0:int10h;寫一個指定顏色的像素inccx;橫向向右增值decbptestbp,bpjnzL0;從左到右、滿屏畫出相應(yīng)的脈沖波圖形。movbp,Hight_Pulse;取脈沖高度xorcx,cx;橫向起始點(diǎn)movdx,480;圖形顯示方式,一列480點(diǎn)shrdx,1;縱向起始點(diǎn)L1:int10h;寫一個指定顏色的像素decdx;縱向向上減值decbptestbp,bpjnzL1Pulse_Wave:movbp,Width_Pulse;取脈沖寬度,一個脈沖周期L2:int10h;寫一個指定顏色的像素inccx;橫向向右增值cmpcx,639jaPause;若到達(dá)屏幕最右邊,跳出循環(huán),等待用戶按鍵,結(jié)束程序decbptestbp,bpjnzL2movbp,Hight_Pulse;取脈沖高度shlbp,1L3:int10h;寫一個指定顏色的像素incdx;縱向向下增值decbptestbp,bpjnzL3movbp,Width_Pulse;取脈沖間斷寬度L4:int10h;寫一個指定顏色的像素inccx;橫向向右增值cmpcx,639jaPause;若到達(dá)屏幕最右邊,跳出循環(huán),等待用戶按鍵,結(jié)束程序decbptestbp,bpjnzL4movbp,Hight_Pulse;取脈沖高度shlbp,1L5:int10h;寫一個指定顏色的像素decdx;縱向向上減值decbptestbp,bpjnzL5jmpPulse_Wave;一個脈沖周期結(jié)束,進(jìn)行下一個脈沖周期Pause:movah,1;暫停,按任意鍵結(jié)束程序int21hmovah,3;設(shè)置80x25,16色文本顯示方式int10hExit_Proc:movah,4ch;結(jié)束程序int21hCodeENDSENDStart;編譯到此結(jié)束程序調(diào)試結(jié)果及分析設(shè)置高度為100,寬度為100,以藍(lán)色顯示的脈沖圖案。圖5.1參數(shù)設(shè)置以640x480,16色的顯示當(dāng)輸入的參數(shù)的脈沖波形圖。當(dāng)輸入的參數(shù)過大,屏幕無法準(zhǔn)確的顯示,這時只要把參數(shù)適當(dāng)?shù)恼{(diào)下,就可以看到完整的圖案。圖5.2脈沖波形圖

設(shè)計總結(jié)通過此次的課程設(shè)計,對80x86匯編語言程序設(shè)計有了更深入的了解。將課堂上所學(xué)的知識運(yùn)用到實踐當(dāng)中,了解了實踐的重要性,加強(qiáng)了自己的動手能力,也知道自己對學(xué)到的相關(guān)知識沒有很好的掌握。在做課設(shè)中遇到了很多問題,通過詢問老師,網(wǎng)上查閱資料以及同學(xué)的幫助下,問題得以解決。這次課程設(shè)計使我學(xué)到了很多東西,受益匪淺。總的來說,此次的課程設(shè)計算是順利完成,匯編語言是面向機(jī)器的程序設(shè)計語言,當(dāng)今計算機(jī)應(yīng)用在生活中可以說是無處不在,因此掌握一些編程語言對我們來說是基本的要求,相對于高級語言難學(xué),難用,適用范圍小,雖然簡單,但是過于靈活,學(xué)習(xí)過高級語言的人去學(xué)習(xí)匯編比一開始學(xué)匯編的人難得多,但是學(xué)過匯編的人學(xué)習(xí)高級語言卻很容易

溫馨提示

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

評論

0/150

提交評論