微機(jī)原理課程設(shè)計圖形變換程序_第1頁
微機(jī)原理課程設(shè)計圖形變換程序_第2頁
微機(jī)原理課程設(shè)計圖形變換程序_第3頁
微機(jī)原理課程設(shè)計圖形變換程序_第4頁
微機(jī)原理課程設(shè)計圖形變換程序_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、南昌航空大學(xué)科技學(xué)院課程設(shè)計目 錄一、摘要1二、設(shè)計的題目1圖形轉(zhuǎn)換1三、設(shè)計目的1四、設(shè)計內(nèi)容14.1程序的內(nèi)容與要求14.2程序運(yùn)行條件24.3輸入/輸出描述2五、設(shè)計思路3六、程序結(jié)構(gòu)36.1段定義說明36.2子程序功能說明46.3算法描述4(1)各模塊功能實(shí)現(xiàn)4(2)典型指令的應(yīng)用4七、程序流程圖5八、文件的編輯、連接和運(yùn)行結(jié)果68.1.匯編源程序文件(asm,masm)68.2.連接目標(biāo)文件(link)78.3.運(yùn)行可執(zhí)行文件7九、程序的調(diào)試89.1程序結(jié)構(gòu)設(shè)計特點(diǎn)89.2調(diào)試程序心得8十、小結(jié)與體會8十一、附錄9源程序代碼(簡單注釋)9參考文獻(xiàn)18組員分工18- 18 -微機(jī)原理

2、課程設(shè)計任務(wù)書20102011學(xué)年 第二學(xué)期第19周19周 題目圖形變換程序內(nèi)容及要求結(jié)合微機(jī)原理知識,查閱有關(guān)資料,完成一個圖形變換的程序編寫,系統(tǒng)具有4種可選擇的功能,按字母“y”畫一個由點(diǎn)組成的園;按字母“s”畫一個由不同顏色填充的三角形;按字母“z”畫一個由不同顏色填充的矩形;按字母“q”退出。 進(jìn)度安排1、查找資料,提出總體方案 1天2、分析、設(shè)計、調(diào)試、實(shí)現(xiàn) 3天3、檢查、整理、寫設(shè)計報告、小結(jié) 1天學(xué)生姓名:指導(dǎo)時間:2011-6-27至2011-7-1指導(dǎo)地點(diǎn):f 樓 312 室任務(wù)下達(dá)2011年6月27日任務(wù)完成2011年7月1日考核方式1.評閱 2.答辯 3.實(shí)際操作 4.

3、其它指導(dǎo)教師系(部)主任一、摘要:微機(jī)原理與接口技術(shù)課程是電氣信息類專業(yè)學(xué)生的一門重要基礎(chǔ)課程,同時也是一門實(shí)踐性和應(yīng)用性很強(qiáng)的課程。本課程主要講授微型計算機(jī)的基本工作原理、系統(tǒng)組成及接口技術(shù)和基本的匯編語言程序設(shè)計知識,通過學(xué)習(xí)從而為學(xué)生今后分析和設(shè)計微機(jī)應(yīng)用系統(tǒng)打好基礎(chǔ)。在理論教學(xué)的同時,如果忽視實(shí)踐教學(xué),學(xué)生對理論知識不能夠很好的掌握,學(xué)習(xí)效果就會受到很大的影響。 本次課程設(shè)計主要是通過應(yīng)用微機(jī)原理中匯編的幾個步驟編輯、匯編、連接、運(yùn)行或調(diào)試運(yùn)行,使得在doc界面完成圖形變換。關(guān)鍵詞:微型計算機(jī)原理 接口技術(shù) 匯編語言 實(shí)踐教學(xué) doc 二、設(shè)計的題目: 圖形變換程序三、設(shè)計目的:1.鞏

4、固和加深課堂所學(xué)知識。2.將課本上的理論知識和實(shí)際應(yīng)用有機(jī)的結(jié)合起來,培養(yǎng)同學(xué)們分析和解決實(shí)際問題的能力。 3.通過對匯編語言程序代碼的閱讀、修改、設(shè)計,理解和掌握復(fù)雜的匯編語言應(yīng)用程序的編程,提高實(shí)踐編程能力。本程序要求按不同的鍵顯示不同的圖形,按“q”鍵退出。實(shí)質(zhì)上通過做這道題目可以檢查學(xué)生對匯編語言這門課程的基本知識的掌握程度。能用匯編語言熟練地運(yùn)用順序、選擇、循環(huán)三大結(jié)構(gòu),進(jìn)一步掌握各個指令的功能,特別是轉(zhuǎn)向指令,讓同學(xué)熟悉并掌握dos系統(tǒng)功能調(diào)方法用及bios系統(tǒng)功能調(diào)用方法;同時在程序設(shè)計過程中熟悉并掌握各種指令的應(yīng)用,知道編程的具體流程,以及掌握debug的一系列的功能執(zhí)行命令,

5、及用它進(jìn)行調(diào)試,運(yùn)行功能。只有掌握匯編語言基本編程方法,掌握程序各部分功能及其相互聯(lián)系、相互作用,才能把程序?qū)懗鰜?,才能把程序?qū)懞?。四、設(shè)計內(nèi)容:4.1程序的內(nèi)容與要求: 結(jié)合微機(jī)原理知識,查閱有關(guān)資料,完成一個圖形變換的程序編寫,系統(tǒng)具有4種可選擇的功能,按字母“y”畫一個由點(diǎn)組成的園;按字母“s”畫一個由不同顏色填充的三角形;按字母“z”畫一個由不同顏色填充的矩形;按字母“q”退出。4.2程序運(yùn)行條件本程序可在windows 98,windows 2000,windows xp上運(yùn)行。所需要工具軟件為masm2.0及以上版本。4.3輸入/輸出描述輸入y輸入s輸入z輸入q返回到dos界面。五

6、、設(shè)計思路:bios調(diào)用中并沒有現(xiàn)成的顯示圓、三角形和矩形的功能,故編寫了三個子程序,采用段內(nèi)調(diào)用子程序的方法來實(shí)現(xiàn).其中圓用在屏幕上顯示12個小圓點(diǎn)以圍成一個圓來實(shí)現(xiàn),12個小圓點(diǎn)的行列坐標(biāo)事先定義在一個變量中.三角形和矩形的實(shí)現(xiàn)原理是采用控制寫點(diǎn)的方式,行、列、塊的顏色不是采用變量表示,此處的三角形用寄存器表示,使用了堆棧技術(shù);矩形使用的也是寄存器,但沒有使用堆棧.整個程序的結(jié)構(gòu)如圖所示。六、程序結(jié)構(gòu):6.1段定義說明分為數(shù)據(jù)段dseg、堆棧段sseg和代碼段cseg。堆棧段是為一些字符串和圖形的光標(biāo)位置及其他一些數(shù)據(jù)分配空間;數(shù)據(jù)段是記錄程序運(yùn)行過程中所需的信息,包括字符信息,圖形光標(biāo)等

7、;代碼段則是程序算法部分,通過對各子程序的調(diào)用,實(shí)現(xiàn)圖形轉(zhuǎn)換功能。6.2子程序功能說明子程序包括三個:函數(shù)名為yuan,san和zheng,分別具有畫圓、畫三角形和畫矩形的功能。調(diào)用關(guān)系:根據(jù)指令sa: call sanjmp inputzhen:call zheng jmp inputyua: call yuan jmp input當(dāng)轉(zhuǎn)移到各標(biāo)號時,調(diào)用不同的子程序,從而實(shí)現(xiàn)繪制圖形。過程返回指令ret定義在子程序中,當(dāng)執(zhí)行完子程序后,跳轉(zhuǎn)到input。參數(shù)傳送方式:程序中用到利用寄存器傳遞參數(shù)和利用約定存儲單元的方法傳遞參數(shù)。即把參數(shù)存放在寄存器或是存儲單元中來實(shí)現(xiàn)主程序和子程序間的參數(shù)傳

8、遞。6.3算法描述(1)各模塊功能實(shí)現(xiàn):a. main模塊功能:這是個主過程,是負(fù)責(zé)進(jìn)入和退出圖形轉(zhuǎn)換程序的入口。利用指令:mov ah,08 ;不帶回顯鍵盤輸入,出口參數(shù)alint 21h來實(shí)現(xiàn)字符的輸入,從而進(jìn)入相應(yīng)的子程序。b. yuan模塊功能:實(shí)現(xiàn)畫圓的功能。圓用在屏幕上顯示12個小圓點(diǎn)以圍成一個圓來實(shí)現(xiàn),12個小圓點(diǎn)的行列坐標(biāo)事先定義在一個變量中。利用call指令直接實(shí)現(xiàn)從主函數(shù)調(diào)用。c. san模塊功能:實(shí)現(xiàn)畫三角形功能。利用call指令直接實(shí)現(xiàn)從主函數(shù)調(diào)用。d zheng模塊功能:實(shí)現(xiàn)畫矩形的功能。通過向四個方向滾屏,來實(shí)現(xiàn)繪制四個邊。利用call指令直接實(shí)現(xiàn)從主函數(shù)調(diào)用。(2

9、)典型指令的應(yīng)用:程序中運(yùn)用了大量的數(shù)據(jù)定義語句、數(shù)據(jù)傳送指令及轉(zhuǎn)移指令,并用到doc功能調(diào)用和基本輸入輸出系統(tǒng)bios中的中斷處理程序。典型的有jz跳轉(zhuǎn)指令,中斷指令int 10h,int 21h,如指令:mov al,2 mov ah,9 mov bl,0e0h int 10h其中al存放字符代碼,al=字符代碼,ah=9表示將字符和屬性寫到光標(biāo)位置處,bl=屬性。而指令mov ah,4ch/int 21h,表示返回到doc操作界面。七、程序流程圖:程序開始運(yùn)行后,先提示:please choose the letter y,s,z:,input q to quit然后操作者選擇一個字母,

10、程序根據(jù)比較 :cmp al,s jz sa cmp al,z jz zhen cmp al,y jz yua cmp al,q jz exit mov dx,offset info2 mov ah,09 int 21h若為s,則轉(zhuǎn)到標(biāo)號sa,進(jìn)一步調(diào)用子程序san來畫出三角形;若為z,則轉(zhuǎn)到標(biāo)號zhen,進(jìn)一步調(diào)用子程序zheng來畫出矩形;若為y,則轉(zhuǎn)到標(biāo)號yua,進(jìn)一步調(diào)用子程序yuan來畫出圓。若為q,則轉(zhuǎn)到exit,轉(zhuǎn)到doc操作頁面。若不是以上的字符,則提示輸入錯誤,顯示choose error!程序流程圖如下所示:開始顯示提示信息接收鍵盤輸入是“y”?是“s”?是“z”?call

11、 yuancall san是“q”?call zheng顯示出錯信息退出yyynnnny程序流程圖八、文件的編輯、連接和運(yùn)行結(jié)果8.1.匯編源程序文件(asm,masm)由編輯程序所建立的asm文件只是個文本文件,計算機(jī)無法執(zhí)行。需要經(jīng)過匯編程序的匯編,使其轉(zhuǎn)為目標(biāo)代碼文件。它是通過調(diào)用宏匯編masm(或匯編程序asm)程序完成這一匯編操作的。匯編程序還將對源文件進(jìn)行語法檢查,如發(fā)現(xiàn)有錯,將給出錯誤原因。程序設(shè)計者可根據(jù)它分析和修改源程序,并再經(jīng)過匯編,直到無錯時為止,此時得到的是一個目標(biāo)文件(obj文件)。8.2.連接目標(biāo)文件(link)目標(biāo)文件為浮動的相對地址,是不可直接執(zhí)行的。必須經(jīng)過連

12、接,把有關(guān)模塊連接在一起,構(gòu)成統(tǒng)一的編址,從而為運(yùn)行提供條件。在運(yùn)行時,裝填到內(nèi)存中的具體位置由段地址來確定。連接過程是由link連接程序?qū)崿F(xiàn)的,止時得到的是一個可可執(zhí)行文件(exe文件)。8.3.運(yùn)行可執(zhí)行文件得到可執(zhí)行文件后就可以直接調(diào)用可執(zhí)行文件名,從盤上調(diào)到內(nèi)存中運(yùn)行。在出現(xiàn)的提示信息中,按y鍵畫圓;按s鍵畫三角形;按z鍵畫正方形;按q鍵退出. 九、程序的調(diào)試:9.1程序結(jié)構(gòu)設(shè)計特點(diǎn)通過設(shè)計三個子程序,分別實(shí)現(xiàn)畫圓、畫三角形和畫矩形的功能,然后通過比較輸入的字符,調(diào)用相應(yīng)的子程序,完成不同的繪圖。主程序和子程序間通過寄存器和約定內(nèi)存單元的方法實(shí)現(xiàn)參數(shù)傳遞。9.2調(diào)試程序心得在調(diào)試中發(fā)現(xiàn)

13、很多錯誤都是有于沒注意到一些小細(xì)節(jié)而出錯,(例如:注釋說明時忘了加“;”號,segment和ends、proc和endp不匹配等),因此在寫程序時所有的細(xì)節(jié)都要考慮到。 9.3程序不足在選擇按鍵時候有一定的時間間隔,要等到出現(xiàn)提示后(即程序轉(zhuǎn)入到input處時)才能再次按鍵,否則就會轉(zhuǎn)入循環(huán)狀態(tài)。十、小結(jié)與體會:在整個設(shè)計程中,我分模塊分別設(shè)計和調(diào)試,完成了最后的總設(shè)計。在設(shè)計過程中,經(jīng)常會遇到這樣那樣的情況,就是心里想老著這樣的編程可以行得通,但實(shí)際運(yùn)行后,總是實(shí)現(xiàn)不了,因此耗費(fèi)在這上面的時間用去很多。做課程設(shè)計同時也是對課本知識的鞏固和加強(qiáng),由于課本上的知識太多,平時課間的學(xué)習(xí)并不能很好的

14、理解,而且考試內(nèi)容有限,所以在這次課程設(shè)計過程中,我從根本上理解了很多很多知識點(diǎn),并且對于它們在實(shí)際中的應(yīng)用有了更多的認(rèn)識。平時看課本時,有時問題老是弄不懂,做完課程設(shè)計,那些問題就迎刃而解了。而且還可以記住很多東西。平時看課本,這次看了,下次就忘了,認(rèn)識來源于實(shí)踐,實(shí)踐是認(rèn)識的動力和最終目的,實(shí)踐是檢驗真理的唯一標(biāo)準(zhǔn)。所以這個期末測試之后的課程設(shè)計對我的作用是非常大的。 經(jīng)過一個星期的設(shè)計,過程曲折可謂一語難盡。在此期間我也失落過,也曾一度熱情高漲。從開始時滿富盛激情到最后汗水背后的復(fù)雜心情,點(diǎn)點(diǎn)滴滴無不令我回味無長。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題

15、。通過課程設(shè)計的編程和對編程過程中遇到的問題的思考,有效的提高了我對匯編的認(rèn)識和理解,切實(shí)的提高了我的編程能力,補(bǔ)全了我的不足。同時我也鞏固所了學(xué)過的知識,能用匯編語言熟練地運(yùn)用順序、選擇、循環(huán)三大結(jié)構(gòu),進(jìn)一步掌握了各個指令的功能,特別是轉(zhuǎn)向指令,掌握了子程序的定義及調(diào)用,以及正確地運(yùn)用debug指令。在整個程序的編寫中,調(diào)試占了很大部分的時間,要想寫好匯編語言的程序,必須認(rèn)真對待代碼的每一個細(xì)節(jié),還必須熟練的掌握debug命令,這對程序的調(diào)試是非常重要的。通過這次實(shí)際動手能力的培養(yǎng),我進(jìn)一步熟悉了匯編語言的結(jié)構(gòu)和使用方法,基本達(dá)到了能獨(dú)立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平,也提高了

16、我獨(dú)立思考和解決問題的能力。在如今單一的理論學(xué)習(xí)中,很少有機(jī)會能有實(shí)踐的機(jī)會,而且是一個團(tuán)隊的任務(wù)。大家在一起的工作可以讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,大學(xué)里一年的相處還趕不上這十來天的合作,我感覺我和同學(xué)們之間的距離更加近了。同時我認(rèn)為我們的工作是一個團(tuán)隊的工作,團(tuán)隊需要個人,個人也離不開團(tuán)隊,必須發(fā)揚(yáng)團(tuán)結(jié)協(xié)作的精神。某個人的離群都可能導(dǎo)致導(dǎo)致整項工作的失敗。實(shí)習(xí)中只有一個人知道原理是遠(yuǎn)遠(yuǎn)不夠的,必須讓每個人都知道,否則一個人的錯誤,就有可能導(dǎo)致整個工作失敗。團(tuán)結(jié)協(xié)作是我們實(shí)習(xí)成功的一項非常重要的保證。而這次實(shí)習(xí)也正好鍛煉我們這一點(diǎn),這也是非常寶貴的。對我們而言,

17、知識上的收獲重要,精神上的豐收更加可喜。挫折是一份財富,經(jīng)歷是一份擁有。這次實(shí)習(xí)必將成為我人生旅途上一個非常美好的回憶! 通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多專業(yè)知識問題,最后在老師的辛勤指導(dǎo)下,終于迎刃而解

18、。同時,在老師的身上我們學(xué)也到很多實(shí)用的知識,在次我們表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!此次課程設(shè)計,學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯的隨機(jī)應(yīng)變,和與人合作共同提高,都受益非淺,今后的制作應(yīng)該更輕松,自己也都能扛的起并高質(zhì)量的完成項目。 在此,感謝彭老師的細(xì)心指導(dǎo),也同樣謝謝其他各組同學(xué)的無私幫助!十一、附錄:(1)源程序代碼(簡單注釋)dseg segmentinfo1 db 0dh,0ah,please choose the letter y,s,z: db 0dh,0ah,input q to quit,$info2 db

19、0dh,0ah,choose error!,$d3 dw 0total db 12dotyx db 50,160 db 60,135 db 60,185db 75,115db 75,205db 95,110db 95,210db 110,114db 110,210db 130,135db 130,195db 145,165dseg endssseg segment stackdb 200 dup(0)sseg endscseg segment assume cs:cseg, ds:dseg, ss:ssegstart: main proc far mov ax,dseg mov ds,ax m

20、ov ah,0 ;設(shè)置顯示模式mov al,4 ;顯示模式代號int 10h ;10h號中斷,顯示i/o程序input: lea dx,into1 ;要輸出字符串首地址mov ah,9 ;在標(biāo)準(zhǔn)輸出上顯示一個字符串 int 21h mov ah,08 ;不帶回顯鍵盤輸入,出口參數(shù)al int 21h cmp al,s jz sa cmp al,z jz zhen cmp al,y jz yua cmp al,q jz exit mov dx,offset info2 mov ah,09 int 21hsa: call sanjmp inputzhen: call zheng jmp input

21、yua: call yuan jmp inputexit: mov ah,4ch int 21hretmain endpsan proc near push ax push bx push cx push dx mov ah,0 mov al,12h int 10h ;顯示i/o程序 mov al,1a0: mov dx,1 mov d3,1 mov cx,320a1: push cx push d3a2: mov ah,12 push ax int 10h ;顯示i/o程序 pop ax inc cx sub d3,1 jnz a2 pop d3 add d3,2 pop cx inc dx

22、 dec cx jne a1 inc a1 cmp al,5 jne a0 pop dx pop cx pop bx pop axretsan nedpzheng proc near push ax push bx push cx push dx mov ah,0fh ;取當(dāng)前顯示模式 int 10h mov ah,0 mov al,3 int 10h mov cx,1 ; 字符數(shù)量 mov ah,2 ;置光標(biāo)位置 mov dh,5 ; 5行開始 mov dl,25 ;25列開始 int 10h ;*光標(biāo)向下動*line: mov ah,2 int 10h mov al,2 ;字符代碼 mov

23、 ah,9 ;將字符和屬性寫到光標(biāo)位置處 mov bl,0e0h ; 字符黃色 int 10h inc dh ; 行增加 cmp dh,20 ; 20行 jne line jmp line1;*光標(biāo)向右動*line1: mov ah,2 int 10h mov al,2 mov ah,9 mov bl,0e0h ;字符為黃色 int 10h inc dl ;列增加 cmp dl,55 ;55列 jne line1 jmp line2;*光標(biāo)向上動*line2: mov ah,2 int 10h mov al,2 mov ah,9 mov bl,0e0h ; 字符黃色 int 10h dec d

24、h ;行減少 cmp dh,5 ;5行 jne line2 jmp line3;*光標(biāo)向左動*line3: mov ah,2 int 10h mov al,2 mov ah,9 mov bl,0e0h ;字符為黃色 int 10h dec dl ;列減少 cmp dl,25 ;25列 jne line3l00: mov ah,7 ;向下滾屏 mov al,14 ;下滾行數(shù) mov bh,20h ;綠色,填空白行的屬性 mov ch,6 ;窗口左上角行號 mov cl,26 ;窗口左上角列號 mov dh,19 ;窗口右下角行號 mov dl,54 ;窗口右下角列號 int 10h;*時間控制*

25、l01: mov ah,0 int 1ah ;時鐘管理 cmp dl,10 jnz l01l1: mov ah,6 ;向上滾屏 mov al,14 mov bh,0f0h; ;白色 mov ch,6 mov cl,26 mov dh,19 mov dl,54 int 10hl2: mov ah,0 int 1ah ;時鐘管理 cmp dl,15 jnz l2l3: mov ah,7 ;向下滾屏 mov al,14 mov bh,40h ;紅色 mov ch,6 mov cl,26 mov dh,19 mov dl,54 int 10hl4: mov ah,0 int 1ah cmp dl,30 jnz l4l5: mov ah,6 ;向上滾屏 mov al,14 mov bh,0d0h ; 品紅 mov ch,6 mov cl,26 mov dh,19 mov dl,54 int 10

溫馨提示

  • 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

提交評論