版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
武漢理工大學(xué)《微機原理與接口技術(shù)》課程設(shè)計說明書目錄TOC\o"1-3"\h\u20364摘要 1238641總體設(shè)計 2143371.1總體設(shè)計思路 3308471.3程序流程圖 3201282程序設(shè)計與實現(xiàn) 5104772.1初始條件 5102162.2設(shè)置屏幕顯示方式 590312.3輸出文本信息 688082.4鍵盤處理子程序 76982.5繪制圖形 8297752.6繪制坐標系 894402.7清屏過程 1031792.8繪制波形曲線 1137112.9相位及幅值的改變 13125003程序調(diào)試及結(jié)果 1461624總結(jié)與體會 1824532參考文獻 196028附錄1 20摘要通過匯編語言設(shè)計一個運行于計算機的顯示波形的軟件,軟件應(yīng)實現(xiàn)根據(jù)定義的數(shù)組或從鍵盤輸入的數(shù)據(jù)串顯示波形。并通過鍵盤輸入改變波形類型,相位。運用基本程序設(shè)計方法、DOS和BIOS調(diào)用,宏匯編的基本概念和方法,通過上機操作和程序調(diào)試技術(shù),進行軟件設(shè)計。將計算機理論知識轉(zhuǎn)化為計算機應(yīng)用知識。設(shè)計波形中利用笛卡爾坐標和屏幕像素完成波形繪制,實驗中,利用插標法產(chǎn)生正弦波,繪制一張正弦數(shù)字量表。匯編語言中,可以通過調(diào)用DOC中斷,int21h處理輸入輸出信息,同時還通過BIOS中斷int10h設(shè)置輸出字符的起始位置。通過這些完成波形繪制和變換。關(guān)鍵詞:DOC,BIOS,宏匯編1總體設(shè)計1.1總體設(shè)計思路通過匯編語言產(chǎn)生方波和正弦波,并控制波形的幅值和相位。波形曲線可以看成一個函數(shù),屏幕是由一個個像素點組成,它可以看成一個笛卡爾坐標系,曲線的每一個點對應(yīng)著一個橫坐標,對應(yīng)著一個縱坐標(函數(shù)值),不同的曲線有不同的函數(shù),只要找到曲線上點的坐標(函數(shù)值)就可以繪制出不同的曲線,所以,問題的關(guān)鍵就在于如何獲得并顯示出不同波形曲線的函數(shù)值。本實驗中采用查表法產(chǎn)生正弦波,造一張正弦數(shù)字量表,即查函數(shù)表得到的值轉(zhuǎn)換成十六進制數(shù)填表。D/A轉(zhuǎn)換取值范圍為一個周期,采樣點越多,精度越高,本實驗中采樣點為128點/周期。正弦數(shù)字量表中的值為參考值,對于不同幅值的正弦波可以通過把表中的每個值乘以相同的倍數(shù)得到。方波,只需確定其極值,在第一時間段為正,在第二時間段為負,以此類推。1.2程序流程圖程序從初始化開始,首先讓指針指向提示信息一,即在屏幕上顯示:“1sin;2cos;3clear;E/eexit;right/leftchangephase;up/downchangeamplitude”; 當有鍵按下后,如果鍵是1,則轉(zhuǎn)向執(zhí)行產(chǎn)生正弦波的程序;如果鍵不是1,則看鍵是否為2。如果鍵是2,則轉(zhuǎn)向執(zhí)行產(chǎn)生方波的程序;如果鍵也不是2,則看是否為3。如果是3,則轉(zhuǎn)向執(zhí)行清屏的程序;如果也不是3,則看是否為e或者E。如果是e或者E,則轉(zhuǎn)向執(zhí)行結(jié)束程序。以正弦波為例,當程序判斷為按鍵1時,繼續(xù)判斷是否為“→”,“←”,“↑”,“↓”若為是則執(zhí)行右移,左移,幅度變大,幅度減小。其他波形同正弦波,這里不一一累述。結(jié)束結(jié)束開始‘1’按下?正弦波‘2’按下?方波‘3’按下?清屏左鍵按下?左移右鍵按下?右移E/e鍵按下?繪制坐標系設(shè)置屏幕顯示方式輸出提示信息2程序設(shè)計與實現(xiàn)2.1初始條件1.用于調(diào)試程序的IBM兼容PC機一臺;2.安裝DOS/WIN98操作系統(tǒng)或運行于DOS/WIN98兼容方式;3.EDIT等文本編輯器輸入80x86匯編程序,MASM5.0編譯及鏈接程序。2.2設(shè)置屏幕顯示方式IBM-PC的標準顯示適配器,一種是單色顯示,它只能顯示黑白字母、數(shù)字、符號和菱形等簡單的圖形字符,它是以文本方式工作的;另一種是彩色/圖形適配器EGA和VGA,它能以文本和圖形兩種方式工作。在彩色/圖形適配器中把屏幕分成M*N個點陣,每個坐標上的圖像元素就是一個像素。通過調(diào)用BIOS中斷int10h的0號功能可以設(shè)置屏幕的顯示方式。調(diào)用方式如下:入口參數(shù):AH=0(功能號),AL=設(shè)置方式。部分顯示設(shè)置方式調(diào)用參數(shù)如表2-1。出口參數(shù):無。表2-1部分顯示設(shè)置方式表調(diào)用參數(shù)AL顯示方式00H40*25黑白字符方式01H40*25彩色字符方式02H80*25黑白字符方式03H80*25彩色字符方式04H320*200彩色圖形方式11H640*480單色圖形12H640*48016色圖形本設(shè)計中選用04號功能,設(shè)置屏幕分辨率為320*200,彩色圖形方式,字符分辨率為80*25。其中屏幕的最左上角坐標為(0,0)。程序模塊如下:;設(shè)置屏幕顯示方式宏setscreenmacro movah,0 moval,04h int10hendm2.3輸出文本信息 為了擁有一個良好的人機交互界面,在程序設(shè)計中,文本提示信息的輸出有著非常重要的作用。匯編語言中,可以通過調(diào)用DOS中斷,int21h處理輸入和輸出信息,同時還可以通過BIOS中斷int10h設(shè)置輸出字符的起始位置。設(shè)置輸出字符的起始位置模塊如下:movah,2;用文本坐標下設(shè)置光標位置movdh, X ;第一個字符輸出的行坐標movdl,Y ;第一個字符輸出的列坐標int10H顯示字符串需要調(diào)用int21h中斷的09號功能。程序模塊如下:;設(shè)置輸出宏,帶參數(shù)outputmacromess ;mess為字符串變量名 movah,2movdh,22 movdl,1 int10H;設(shè)置字符輸出開始位置 movdx,offsetmess movah,9 int21hendm 宏執(zhí)行完成后,將在22行第一列開始輸出變量mess的字符串。2.4鍵盤處理子程序鍵盤處理使用BIOS或者DOS鍵盤中斷,BIOS中斷INT16H,本程序中使用DOS鍵盤中斷,調(diào)用如下: movah,0ch ;清除鍵盤緩沖區(qū) movah,7 ;等待從鍵盤輸入一個字符,不回顯 int21h ;返回參數(shù)AL=按下鍵的ASC碼2.5繪制圖形本設(shè)計選用的屏幕顯示方式為320*200彩色圖形方式,即橫坐標有320個點,縱坐標有200個點,默認左上角為坐標原點(0,0)。要畫出波形曲線,則要每個橫坐標都對應(yīng)著一個縱坐標的值。值不同繪制出的波形曲線也不同。把不同的曲線縱坐標的值儲存在表中,通過查表可以得到不同曲線。每種曲線每周期取128個點,然后在屏幕上繪制出這些點,從而顯示出相應(yīng)的波形曲線。屏幕上的圖形是由多個像素點組成,所以各種曲線也由多個點組成。在指定的坐標位置上寫像素點的方式如下:movah,0chmoval,color ;像素點的顏色(0~3)movcx,col ;列號movdx,row ;行號int10h2.6繪制坐標系由于屏幕默認的原點為左上角為(0,0),要在屏幕中間繪制曲線,所以在繪制前要進行坐標的變換,轉(zhuǎn)化為笛卡爾坐標系,該子程序如下:;繪制笛卡爾坐標系draw_zuobiaoprocnear movcx,0d_heng: ;繪制橫軸 movah,0ch moval,01h;像素的顏色 movdl,100 int10h inccx cmpcx,320 jned_heng movcx,0 movdl,0 2.7清屏過程清屏程序的設(shè)計原理,是用背景色的像素點重新在全屏進行繪制。 clear1: movah,0ch moval,00h;背景色重新刷屏 int10h inccx cmpcx,3202.8繪制波形曲線根據(jù)不同的按鍵值,繪制不同的波形曲線。如:draw_lineprocnear畫線過程,先繪制第一周期pushsi movax,col addbx,ax calld_line popsi calldraw_line12.9相位的改變相位的改變原理是當左/右方向鍵之一按下時,將曲線繪制的起始點向左/右平移10個像素點,然后重新繪制。幅值的改變原理是當上/下方向鍵之一按下時,改變si指針,指向另外一個幅值的函數(shù)表,重新繪制波形曲線。如:;改變相位,右方向鍵按下一次曲線右移10個像素點key_rightprocnear movcx,col addcx,10 movcol,cx cmptemp,1 jzright1 3程序調(diào)試及結(jié)果通過運行程序可實現(xiàn)正弦波,方波,以及兩種種波形的相位改變。調(diào)節(jié)時如重新回到初始頁面,按數(shù)字鍵“3”,即可完成清屏指令并返回最初界面。按e/E退出程序。以下位移及幅值改變以正弦波為例。按下數(shù)字‘1’,顯示兩個周期的正弦波形曲線3-13-1正弦波形按下方向鍵右,曲線向右移動,如圖3-23-2正弦波右移按下方向鍵左,曲線向左移動,如3-33-3正弦波左移按下數(shù)字‘2’,顯示兩個周期的方波形曲線,如圖3-43-4方波按下數(shù)字‘4’,實現(xiàn)清屏;如圖3-53-5清屏按下E/e鍵,程序成功退出4.總結(jié)與體會由于以前對信號發(fā)生器了解太少,剛拿到題目不知從何下手,上網(wǎng)查資料才得以了解信號發(fā)生器。程序運行時還出現(xiàn)很多問題,比如上圖中問題,查了資料才發(fā)現(xiàn)是JZ和JMP的范圍不一樣。BIOS中斷INT10H和DOC中斷INT21H的各種功能比較多,我上網(wǎng)下載了BIOS中斷大全和DOC中斷大全,幫助我理解。在如何可以用匯編語言畫出波形這一問題上,還是在網(wǎng)上查閱了很多資料,小組同學(xué)一起奮斗,最終才得以解決的。通過本次課程設(shè)計,學(xué)會了用匯編語言設(shè)計一個運行于計算機的顯示波形的軟件,軟件應(yīng)實現(xiàn)根據(jù)定義的數(shù)組或從鍵盤輸入的數(shù)據(jù)串顯示波形。掌握了基本程序設(shè)計方法、DOS和BIOS調(diào)用,掌握了宏匯編的基本概念和方法,熟悉上機操作和程序調(diào)試技術(shù),初步具備了軟件設(shè)計的能力。但在將計算機理論知識轉(zhuǎn)化為計算機應(yīng)用知識的同時,也發(fā)現(xiàn)了許多薄弱環(huán)節(jié),還不能熟練用匯編語言編程,對計算機領(lǐng)域各門學(xué)科的交叉應(yīng)用還有待加強與提高,更增加了小組同學(xué)的團隊協(xié)作能力。這次的課程設(shè)計讓我學(xué)到了書本上沒有的知識,鍛煉了動手能力。通過翻閱資料,在老師同學(xué)的幫助下我順利完成了這次課程設(shè)計。感謝老師同學(xué)的無私幫助。參考文獻[1]潘名蓮.微計算機原理.北京:電子工業(yè)出版社,2004.7[2]李志民.計算機原理與匯編語言程序設(shè)計.長沙:中南大學(xué)出版社,2001.8[3]許駿.微型計算機系統(tǒng)原理及應(yīng)用.廣州:華南理工大學(xué)出版社,1996.5[4]宮云戰(zhàn).微型計算機原理與應(yīng)用基礎(chǔ)教程.北京:機械工業(yè)出版社,1999.5[5]荀殿棟.微處理器應(yīng)用技術(shù)與實例.北京:電子工業(yè)出版社,1997.11附錄1程序;*********************宏設(shè)置 SETSCREENMACRO;設(shè)置屏幕顯示方式MOVAH,0MOVAL,04H;設(shè)置彩色4色,320*200,文本80*25INT10HENDMOUTPUTMACROMESS;輸出宏MOVAH,2MOVDH,22;行坐標0-25MOVDL,1;列坐標0-80INT10H;設(shè)置標題開始位置80*25MOVDX,OFFSETMESSMOVAH,9INT21HENDM;*********************堆棧段STACKYSEGMENTDB250DUP(?)STACKYENDS;*********************數(shù)據(jù)段DATASEGMENTMENUDB'1sin;2cos;3clear;E/eexit;right/leftchangephase;up/downchangeamplitude',0ah,0dh,'$';按鍵提示菜單;正弦表SINEDB100,98,96,94,92,90,88,86DB84,82,81,79,77,75,74,72DB71,69,68,66,65,64,63,62DB61,61,60,59,59,59,58,58DB58,58,58,59,59,59,60,61DB61,62,63,64,65,66,68,69DB71,72,74,75,77,79,81,82DB84,86,88,90,92,94,96,98DB100,102,104,106,108,110,112,114DB116,118,119,121,123,125,126,128DB129,131,132,134,135,136,137,138DB139,139,140,141,141,141,142,142DB142,142,142,141,141,141,140,139DB139,138,137,136,135,134,132,131DB129,128,126,125,123,121,119,118DB116,114,112,110,108,106,104,102;方波表COSINEDB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142TEMPDB?;輸出曲線類型1正弦2方波3三角曲線COLDW0;象素點行坐標ROWDB0;象素點列坐標COLOUR_TEMPDB0;象素點顏色變量DATAENDS;*********************代碼段 CODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKYSTART:MOVAX,DATAMOVDS,AXSETSCREEN;屏幕方式設(shè)置OUTPUTMENU;輸出提示信息CALLDRAW_ZUOBIAO;繪制坐標軸MOVCOLOUR_TEMP,02H;顏色紫色;檢測按鍵值 INKEY:MOVAH,0CH;清除鍵盤緩沖區(qū)MOVAH,7;等待從鍵盤輸入一個字符,不回顯INT21HMOVBX,128CMPAL,'1';若為1,畫正弦JZPAN1CMPAL,'2';若為2,畫方波JZPAN2CMPAL,'3';若為4,清屏JNZINKEY4BJMPCLEAR_SCREENJZINKEYINKEY4B:CMPAL,4BH;左鍵按下左移JNZINKEY4DJMPKEY_LEFTINKEY4D:CMPAL,4DH;右鍵按下右移JNZINKEYEJMPKEY_RIGHTINKEYE:CMPAL,'E';若為E或e,則退出JNZINKEYE2JMPQUITINKEYE2:CMPAL,'e'JNZINKEYJMPQUITJMPINKEY;不斷檢測鍵盤鍵值PAN1:;畫正弦LEASI,SINEMOVROW,0MOVCOL,0CALLDRAW_SINERETPAN2:;畫方波LEASI,COSINEMOVROW,0MOVCOL,0CALLDRAW_COSRETKEY_RIGHTPROCNEAR;改變相位,右移10個像素點MOVCX,COLADDCX,10MOVCOL,CXCMPTEMP,1JZRIGHT1CMPTEMP,2JZRIGHT2RETKEY_RIGHTENDPRIGHT1:;波形重繪LEASI,SINEJZDRAW_SINERETRIGHT2:LEASI,COSINEJZDRAW_COSRETKEY_LEFTPROCNEAR;改變相位,左移動10個像素點MOVCX,COLSBBCX,10MOVCOL,CXCMPTEMP,1JZLEFT1CMPTEMP,2JZLEFT2RETKEY_LEFTENDPLEFT1:LEASI,SINEJZDRAW_SINERETLEFT2:LEASI,COSINEJZDRAW_COSRET;********************************************************************DRAW_SINEPROCNEAR;畫正弦過程CALLCLEAR_SCREENMOVCX,COLMOVTEMP,1CALLDRAW_LINERETDRAW_SINEENDP;********************************************************************DRAW_COSPROCNEAR;畫方波過程CALLCLEAR_SCREENMOVCX,COLMOVTEMP,2CALLDRAW_LINERETDRAW_COSENDP;********************************************************************DRAW_LINEPROCNEAR;畫線過程,先繪制第一周期PUSHSIMOVAX,COLADDBX,AXCALLD_LINEPOPSICALLDRAW_LINE1D_LINE:MOVAH,0CHMOVAL,COLOUR_TEMP;像素的顏色MOVDL,[SI]INT10HINCSIINCCXCMPCX,BXJLD_LINERETDRAW_LINEENDPDRAW_LINE1PROCNEAR;繪制第二周期MOVCX,BXADDBX,128CALLD_LINE1CALLINKEYD_LINE1:MOVAH,0CHMOVAL,COLOUR_TEMP;像素的顏色MOVDL,[SI]INT10HINCSIINCCXCMPCX,BXJLD_LINERETDRAW_LINE1ENDP;********************************************************************DRAW_ZUOBIAOPROCNEAR;繪制笛卡爾坐標系MOVCX,0 D_HENG:MOVAH,0CHMOVAL,03H;像素的顏色MOVDL,100INT10HINCCXCMPCX,320JNED_HENGMOVCX,0MOVDL,0D_ZONG:MOVAH,0CHMOVAL,03H;像素的顏色INT10HINCDLCMPDL,200JNED_ZONGMOVCX,320MOVDL,100
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光學(xué)儀器在餐飲服務(wù)中的應(yīng)用案例考核試卷
- 拓展團隊邊界跨團隊協(xié)作的領(lǐng)導(dǎo)力考核試卷
- 廢棄資源綜合利用的建筑廢棄物處理與資源回收考核試卷
- 摩托車的冬季與寒冷區(qū)騎行考核試卷
- 學(xué)前教育中的幼兒音樂啟蒙與音樂教學(xué)技巧考核試卷
- 托兒所服務(wù)的人力資源和員工發(fā)展考核試卷
- 人事行政員工職業(yè)規(guī)劃培訓(xùn)考核試卷
- 醫(yī)藥制造業(yè)的工藝流程優(yōu)化考核試卷
- 校醫(yī)營養(yǎng)餐搭配合同
- 網(wǎng)站建設(shè)分期付款協(xié)議書
- 兒童福利機構(gòu)設(shè)備配置標準
- 智慧樹知到《配位化學(xué)本科生版》章節(jié)測試答案
- 造紙及紙制品行業(yè)企業(yè)風險分級管控體系實施指南(DB37T 3149—2018)
- 千字文(簡體、繁體、注音版)
- 最新實用培訓(xùn)技巧與方法課件PPT
- 羊頭崗村拆遷安置住宅—3#樓工程試驗方案
- 大同煤業(yè)股份有限公司會計信息披露存在的問題和對策研究論文設(shè)計
- 第十二講區(qū)域變質(zhì)巖的鑒定與描述(1)
- 利用Ansoft HFSS仿真軟件實現(xiàn)微帶-波導(dǎo)過渡的設(shè)計
- 施工機械應(yīng)用的不足與改進措施
- 工程施工材料、構(gòu)配件和設(shè)備管理制度
評論
0/150
提交評論