版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《微型計算機原理及應(yīng)用》課程設(shè)計</p><p> 圖形畫法</p><p> 姓名</p><p> 院系信息學(xué)院自動化系</p><p> 班級</p><p> 學(xué)號</p><p> 指導(dǎo)教師</p><p> 時間2010年 12月
2、 29日</p><p><b> 目 錄</b></p><p><b> 摘要 I</b></p><p> introductionII</p><p><b> 1引言1</b></p><p> 1.1課程設(shè)計的目
3、的1</p><p> 1.2課程設(shè)計的內(nèi)容1</p><p> 1.3設(shè)計要求1</p><p><b> 2設(shè)計過程2</b></p><p> 2.1設(shè)計規(guī)劃2</p><p> 2.2程序流程圖2</p><p> 2.3程序及注
4、釋3</p><p><b> 3仿真及調(diào)試6</b></p><p><b> 4結(jié)束語7</b></p><p> 4.1實驗總結(jié)7</p><p><b> 4.2展望7</b></p><p><b> 參考
5、文獻(xiàn)8</b></p><p><b> 摘要</b></p><p> 微型計算機原理與應(yīng)用是通過學(xué)習(xí)8086處理器,理解并熟悉微型計算機的結(jié)構(gòu),組成,最終能通過搭建電路和編寫程序來實現(xiàn)控制和計算等操作。本設(shè)計通過學(xué)習(xí)用匯編語言編寫一個屏幕繪圖程序,在屏幕上繪制一個標(biāo)準(zhǔn)的圓。通過使用系統(tǒng)功能調(diào)用INT 10H繪圖指令來實現(xiàn)坐標(biāo)畫圖。通過一定的算法,
6、計算出圓的點所在的位置,然后在對應(yīng)坐標(biāo)下用INT 10H來打點。程序在EMU8086仿真軟件上編寫和仿真。</p><p> 關(guān)鍵詞:微型計算機;8086處理器;匯編語言;畫圓;INT 10</p><p><b> 圖形畫法</b></p><p> 電氣1081,200811631114,霍兆權(quán)</p><p>
7、;<b> 指導(dǎo)教師:張瑛</b></p><p><b> 引言</b></p><p> 微型計算機簡稱“微型機”、“微機”,由于其具備人腦的某些功能,所以也稱其為“微電腦”。是由大規(guī)模集成電路組成的、體積較小的電子計算機。它是以微處理器為基礎(chǔ),配以內(nèi)存儲器及輸入輸出(I/0)接口電路和相應(yīng)的輔助電路而構(gòu)成的裸機。把微型計算機集成在一個
8、芯片上即構(gòu)成單片微型計算機(Single Chip Microcomputer)。</p><p> 匯編語言(AssemblyLanguage)是面向機器的程序設(shè)計語言。在匯編語合中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替地址碼。這樣用符號代替機器語言的二進(jìn)制碼,就把機器語言變成了匯編語言。于是匯編語言亦稱為符號語言。使用匯編語言編寫的程序,機器不能直接識別,要
9、由一種程序?qū)R編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。匯編程序把匯編語言翻譯成機器語言的過程稱為匯編。</p><p> 本設(shè)計用的INT 10H指令,是由 BIOS 對屏幕及顯示器所提供的服務(wù)程序,而后倚天公司針對倚天中文提供了許多服務(wù)程序,這些服務(wù)程序也加掛在 INT 10H 內(nèi)。使用 INT 10H 中斷服務(wù)程序時,先指定 AH 寄存器編號,該編號表示欲
10、調(diào)用的功用,當(dāng)一切設(shè)定好之后再調(diào)用 INT 10H。</p><p><b> 課程設(shè)計的目的</b></p><p> 通過自己完成一個匯編程序設(shè)計,熟悉并掌握微型計算機的編程控制方法和設(shè)計流程,學(xué)習(xí)如何通過微型計算機完成一項工作。通過熟悉匯編指令,可以加深對微型計算機面向機器的特點。</p><p><b> 課程設(shè)計的內(nèi)容
11、</b></p><p> 圖形畫法,通過畫一個圓,掌握使用INT 10H系統(tǒng)功能指令顯示的方法;通過學(xué)習(xí)圓的點的位置計算,熟悉用匯編編寫計算程序的方法。</p><p><b> 設(shè)計要求</b></p><p> 在顯示器上畫出規(guī)則的圖形(圓形)</p><p><b> 設(shè)計過程<
12、;/b></p><p><b> 設(shè)計規(guī)劃</b></p><p> 本設(shè)計采用INT 10H功能號為12的繪圖功能,該功能簡介如下:</p><p> AH=0Ch/INT 10H 是在繪圖模式中顯示一點 ( 也就是寫入點像,write graphics pixel ),而 AH=0DH/INT 10H 則是讀取點像 ( rea
13、d graphics pixel )。</p><p> 寫入時,要寫入位置 X 座標(biāo)存于 CX 寄存器,Y 座標(biāo)存于 DX 寄存器,顏色存于 AL 寄存器。和文字模式相同,螢光幕上的 Y 座標(biāo)是最上面一列為零,越下面越大,X 座標(biāo)則和數(shù)學(xué)的定義相同。</p><p> 那么,可以采用坐標(biāo)打點的方法,先把圓要畫的點先計算出來,然后按點來作圖。應(yīng)為圓的四象限對稱關(guān)系,通過計算一個象限的坐
14、標(biāo),然后用坐標(biāo)對稱法來把其余象限也畫出來。</p><p> 由于該功能的坐標(biāo)為屏幕上方為y軸起始值,x軸位于屏幕中線。所以,得到的圓的點的坐標(biāo)值還要通過坐標(biāo)平移才能對應(yīng)正確的屏幕坐標(biāo)。</p><p> 位置算法可以采用x^2+y^2=R^2來判斷,可以使用掃描的方法,x先從0開始,把y值從半徑開始,通過判斷x^2+y^2<=R^2來確定該y值是否滿足近似在圓上,不滿足y減一,
15、直到找到y(tǒng)滿足上式為止。找到該點的之后,x自加一,繼續(xù)找下一點。</p><p> 由于x越大,打的點越分散,需要交換坐標(biāo)軸再畫一次。</p><p><b> 程序流程圖</b></p><p><b> 程序及注釋</b></p><p><b> 程序及注釋如下:</b
16、></p><p> ;****************************************************************</p><p> ;****************畫圓程序(Cycle)*******************************</p><p> ;****************Finish
17、ed By FOX*********************************</p><p> ;****************************************************************</p><p> data segment </p><p> x1 dw 320 ;預(yù)設(shè)圓點x坐標(biāo)</p
18、><p> x2 dw 320 </p><p> y1 dw 140 ;預(yù)設(shè)圓點y坐標(biāo)=(y1-y2)/2</p><p> y2 dw 340 </p><p> color db 6 </p><p> xx dw 0 ;</p>&
19、lt;p> yy dw 100 ;預(yù)設(shè)圓半徑</p><p> count dw 0 ;坐標(biāo)變化差值</p><p> pow dw 10000 ;半徑R^2值</p><p> cmp1 dw 420 ;第一次畫圓完成判斷值 </p><p> cmp2 dw 340 ;
20、第二次畫圓判斷值 </p><p> exit_text db 'Cycle has finished,press any key to continue....$' </p><p><b> data ends</b></p><p> stack segment stack </p><p
21、> dw 100 dup(?) </p><p> stack ends </p><p> code segment</p><p> assume cs:code,ds:data,ss:stack </p><p><b> start: </b></p><p&
22、gt; mov ax,data </p><p> mov ds,ax </p><p> mov ax,12h </p><p> int 10h </p><p> ;-------------------------------- </p><p> go1:
23、 ;畫圓的主程序</p><p> call judge ;判斷x^2+y^2是否小于pow,即圓的半徑,已設(shè)為100</p><p> mov di,count </p><p> add y1,di ;圓上半部分的y坐標(biāo)加計算偏移值</p><p> sub y2,di
24、;圓下半部分的y坐標(biāo)減計算偏移值</p><p> call doit ;調(diào)用畫圖子程序</p><p> mov ax,x1</p><p> cmp ax,cmp1 ;判斷第一次畫圓是否完成</p><p> je go5 ;完成交換坐標(biāo)y<=>x再畫一次</p>
25、<p> inc x1 ;x1++ </p><p> dec x2 ;x2-- </p><p><b> jmp go1</b></p><p> ;--------------------------------- </p><p> g
26、o5: ;交換x與y坐標(biāo)軸 </p><p> mov xx,0 </p><p> mov yy,100 </p><p> mov x1,420 </p><p> mov x2,220 </p><p> mov y1,240
27、</p><p> mov y2,240 </p><p> go4: ;繼續(xù)畫一個圓</p><p> call judge </p><p> mov di,count </p><p> sub x1,di </p><p> ad
28、d x2,di </p><p> call doit </p><p> mov ax,y1 </p><p> cmp ax,cmp2 ;判斷畫圓完成,完成運行結(jié)束程序 </p><p> je exit </p><p><b> inc y1 </b>
29、</p><p><b> dec y2 </b></p><p> jmp go4 </p><p> ;--------------------------------</p><p> judge proc ;判斷x^2+y^2是否小于pow,即圓的半徑,已設(shè)為100</
30、p><p><b> pusha </b></p><p> mov count,0 </p><p><b> go2: </b></p><p> mov ax,xx </p><p> call mul1 ;把x坐標(biāo)求平方 </p>
31、<p> mov bx,ax </p><p> mov ax,yy </p><p> call mul1 ;把y坐標(biāo)求平方 </p><p> add ax,bx </p><p> cmp ax,pow;比較x^2+y^2與半徑的平方 </p><p> jna go
32、3 ;小于或等于</p><p> dec yy ;把yy坐標(biāo)減一,找下一點</p><p> inc count </p><p> jmp go2 </p><p> ;------------------------------- </p><p><b> go3
33、:</b></p><p> inc xx ;把x坐標(biāo)加一,畫下一個x的點</p><p><b> popa </b></p><p><b> ret </b></p><p><b> endp </b></p><
34、p> ;-----------------------------------</p><p> doit proc ;調(diào)用INT 10H來畫圓 </p><p> pusha ;畫第一象限部分</p><p>
35、 mov ah,12 ;AH=0Ch/INT 10H,在繪圖模式中顯示一點 </p><p> mov al,color ;設(shè)置圖片顏色</p><p> mov dx,y1 ;設(shè)置繪圖y坐標(biāo)</p><p> mov cx,x1 ;設(shè)置繪圖x坐標(biāo)</p><p> pusha
36、 ;畫第二象限部分</p><p> int 10h </p><p><b> popa </b></p><p> mov cx,x2 </p><p> pusha </p><p> int 10h </p>
37、<p> popa ;畫第三象限部分</p><p> mov dx,y2 </p><p><b> pusha </b></p><p> int 10h </p><p> popa ;畫第四象限部分</p><p>
38、 mov cx,x1 </p><p> int 10h </p><p><b> popa </b></p><p><b> ret </b></p><p> doit endp </p><p> ;---------------
39、----------------</p><p> mul1 proc ;把cx的值平方</p><p> push bx </p><p> push cx </p><p> push dx </p><p> mov cx,ax </p><p&g
40、t;<b> mul cx </b></p><p><b> pop dx </b></p><p><b> pop cx </b></p><p><b> pop bx </b></p><p><b> ret
41、 </b></p><p> mul1 endp </p><p> ;-------------------------------- </p><p><b> exit: </b></p><p> lea dx,exit_text;輸出推出提示信息 </p><p
42、> mov ah,9 </p><p> int 21h </p><p> mov ah,1 </p><p> int 21h ;等待鍵盤輸入 </p><p> int 20h ;返回系統(tǒng)</p><p> code end
43、s </p><p> end start </p><p> ;-------------------------------- </p><p> code ends </p><p> end start</p><p><b> 仿真及調(diào)試</b></p&g
44、t;<p> 通過仿真發(fā)現(xiàn),只畫一次圓的效果不好,只有x較小時效果好,而當(dāng)x變大,打的點越分散,如圖3.1</p><p><b> 圖3.1</b></p><p> 而通過交換坐標(biāo)軸,也就是以屏幕y軸來掃描,就可以把比較分散的那部分補畫好,如圖3.2</p><p><b> 圖3.2</b>&l
45、t;/p><p><b> 結(jié)束語</b></p><p><b> 實驗總結(jié)</b></p><p> 本設(shè)計通過查找相關(guān)書籍,網(wǎng)上查找相應(yīng)的例程,通過閱讀例程和優(yōu)化例程來成功實現(xiàn)繪制一個比較標(biāo)準(zhǔn)的圓。整個設(shè)計關(guān)鍵點是計算圓的起始坐標(biāo)值、坐標(biāo)平移和INT 10H的功能調(diào)用。這需要一定的數(shù)學(xué)知識。通過這次設(shè)計,使我提高了
46、編程的能力,特別是對程序改錯的能力。編寫一個程序,一定要有清晰的程序執(zhí)行流程,這不僅可以更有效的按程序的流程圖來編寫程序,而且可以清晰的那些執(zhí)行過程是循環(huán),可以使用子程序來減少編寫程序的工作量和程序的大少。一個比較大的程序,需要按程序塊的編寫方法來逐步完成整體設(shè)計,而不能一蹴而就,這樣,就不好調(diào)試和發(fā)現(xiàn)程序中的問題。這次設(shè)計用到了不少編程的思想,如子程序調(diào)用,程序參數(shù)傳遞等等,對熟悉課本知識和以后的設(shè)計有很大的幫助。</p>
47、<p><b> 展望</b></p><p> 本設(shè)計通過計算圓在點的坐標(biāo)的值來來繪圖的,雖然已經(jīng)四等分圓來對稱畫了,但是計算量還是不少,導(dǎo)致圖形出現(xiàn)時間過長。由于圓是一個可以任意等分的圖形,可以選擇適當(dāng)?shù)姆椒▉淼确謭A,通過對稱畫法來減少計算量,特別是平方的計算次數(shù)。</p><p><b> 參考文獻(xiàn)</b></p&
48、gt;<p> [1]鄭學(xué)堅.微型計算機原理及應(yīng)用.北京:清華大學(xué)出版社,2010</p><p> [2]鄭逢興.微型計算機接口原理與技術(shù).長沙:國防科技大學(xué)出版社,1993</p><p> [3]劉復(fù)華.8098單片機及其應(yīng)用系統(tǒng)設(shè)計.北京:清華大學(xué)出版社,1992</p><p> [4]朱仲英.微型計算機原理及應(yīng)用.上海:上海交通大學(xué)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計-圖形變換程序
- 微機原理課程設(shè)計
- 微機課程設(shè)計--- 陣式圖形顯示
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計報告
- 2017微機原理課程設(shè)計
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計報告
- 《微機原理》課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計課程設(shè)計----微機內(nèi)存擴充卡
- 微機原理課程設(shè)計課程設(shè)計----微機內(nèi)存擴充卡
- 微機原理串口通信課程設(shè)計
- 微機原理電子秒表課程設(shè)計
- 微機原理課程設(shè)計---打字練習(xí)
- 模擬電梯微機原理課程設(shè)計
- 微機原理課程設(shè)計--數(shù)字時鐘
評論
0/150
提交評論