匯編語(yǔ)言個(gè)C語(yǔ)言的圖形處理.doc_第1頁(yè)
匯編語(yǔ)言個(gè)C語(yǔ)言的圖形處理.doc_第2頁(yè)
匯編語(yǔ)言個(gè)C語(yǔ)言的圖形處理.doc_第3頁(yè)
匯編語(yǔ)言個(gè)C語(yǔ)言的圖形處理.doc_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

匯編語(yǔ)言和C語(yǔ)言在圖形處理中的綜合應(yīng)用匯編語(yǔ)言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言.匯編語(yǔ)言是一種功能很強(qiáng)的程序設(shè)計(jì)語(yǔ)言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語(yǔ)言。匯編語(yǔ)言”作為一門(mén)語(yǔ)言,對(duì)應(yīng)于高級(jí)語(yǔ)言的編譯器,需要一個(gè)“匯編器”來(lái)把匯編語(yǔ)言原文件匯編成機(jī)器可執(zhí)行的代碼。高級(jí)的匯編器如MASM, TASM等等為我們寫(xiě)匯編程序提供了很多類(lèi)似于高級(jí)語(yǔ)言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫(xiě)的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類(lèi)同于高級(jí)語(yǔ)言。現(xiàn)在的匯編環(huán)境已經(jīng)如此高級(jí),即使全部用匯編語(yǔ)言來(lái)編寫(xiě)windows的應(yīng)用程序也是可行的,但這不是匯編語(yǔ)言的長(zhǎng)處。匯編語(yǔ)言的長(zhǎng)處在于編寫(xiě)高效且需要對(duì)機(jī)器硬件精確控制的程序。隨著計(jì)算機(jī)與各相關(guān)學(xué)科的交叉促進(jìn),計(jì)算機(jī)圖形在各領(lǐng)域的應(yīng)用越來(lái)越廣泛。計(jì)算機(jī)圖形的廣泛應(yīng)用對(duì)圖形的處理技術(shù)提出更高的要求,尤其是在存取效率與質(zhì)量方面。C語(yǔ)言提供了豐富的圖形函數(shù)且開(kāi)發(fā)效率高,但在要求執(zhí)行速度快, 占用空間少或要求直接控制硬件的場(chǎng)合, 匯編語(yǔ)言就可以提高程序的運(yùn)行效率。 充分發(fā)揮兩種語(yǔ)言的優(yōu)點(diǎn),實(shí)現(xiàn)兩種語(yǔ)言之間的混合編程,是解決問(wèn)題的有效方法。本文以畫(huà)直線(xiàn)為例,討論匯編語(yǔ)言與C語(yǔ)言在圖形處理過(guò)程中的綜合應(yīng)用技術(shù)。隨著 3G 時(shí)代的到來(lái),計(jì)算機(jī)形處理的信息量越來(lái)越大, 處理的技術(shù)也越來(lái)越復(fù)雜。 衡量圖形處理的標(biāo)準(zhǔn), 不僅取決于質(zhì)量,還取決于存取效率。圖形的質(zhì)量與分辨率,每點(diǎn)位數(shù)、 顏色定標(biāo)及校正等因素有關(guān),存取效率與在處理過(guò)程中 所消耗的時(shí)間有關(guān)。計(jì)算機(jī)處理圖形的方式,可以采用 C 語(yǔ)言,也可以采用匯編語(yǔ)言。作為一種高級(jí)語(yǔ)言,語(yǔ)言毫無(wú)疑問(wèn)是杰出的,C 它的功能豐富、表達(dá)能力強(qiáng)、使用靈活、開(kāi)發(fā)效率高,因而比匯編語(yǔ)言使用更為廣泛。 通常在軟件開(kāi)發(fā)過(guò)程中,大部分 程序采用高級(jí)語(yǔ)言編寫(xiě), 以提高程序的開(kāi)發(fā)效率; 但在要求執(zhí)行速度快、占用空間少或要求直接控制硬件的場(chǎng)合, 則利用匯編語(yǔ)言編寫(xiě),以提高程序的運(yùn)行效率。匯編語(yǔ)言是一種面向機(jī)器的語(yǔ)言,其特點(diǎn)是運(yùn)行速度快、占用存儲(chǔ)空間小, 可直接對(duì)硬件進(jìn)行控制,在一些實(shí)時(shí)控制的場(chǎng)合, 有著不可替代的作用。然而匯編語(yǔ)言也有它的不足,如編寫(xiě)及調(diào)試相對(duì)高級(jí)語(yǔ)言程序來(lái)說(shuō)要困難、復(fù)雜一些,尤其在進(jìn)行數(shù)據(jù)處理、數(shù)值的混合運(yùn)算時(shí)更是如此。本文將重點(diǎn)探討 C語(yǔ)言和匯編語(yǔ)言在圖形處理的綜合編程技術(shù), 發(fā)揮它們各自的優(yōu)勢(shì),提高圖形的處理效果。 C 語(yǔ)言程序中調(diào)用匯編語(yǔ)言程序進(jìn)行混合編程時(shí),一個(gè)任務(wù)往往被分為若干個(gè)功能模塊, 每個(gè)模塊以函數(shù)或子程序的形式存在,根據(jù)每一模塊的特點(diǎn)選用適合的語(yǔ)言編程,然后使用相應(yīng)的編譯系統(tǒng)對(duì)其進(jìn)行編譯形成目標(biāo)文件,最后將多個(gè)目標(biāo)文件連接在一起形成 一個(gè)完整的可執(zhí)行文件。匯編語(yǔ)言與C 語(yǔ)言混合編程,需要解決四個(gè)問(wèn)題: 一是存儲(chǔ)模式的約定; 二是函數(shù)名的約定; 三是匯編語(yǔ)言與 C 語(yǔ)言之間的參數(shù)傳遞;四是編譯方法。 2.1 存儲(chǔ)模式的約定 C 語(yǔ)言共有 6 種不同的存儲(chǔ)模式: 微模式 Tiny、 小模式 Small、中模式 Medium、緊湊模式 Compact、大模式 Large、 巨模式 Huge?;旌暇幊虝r(shí)必須保持匯編語(yǔ)言和 C 語(yǔ)言的存儲(chǔ)模式一致。在匯編語(yǔ)言中使用偽指令Model*,表示 在匯編語(yǔ)言中采用的存儲(chǔ)模式,其中*表示上述 6 種模式 中的一種。若 C 采用小模式,則在匯編語(yǔ)言中要使用。 2.2 函數(shù)名的約定 編譯系統(tǒng)在對(duì) C源程序編譯時(shí),會(huì)在其中的變量名、 函數(shù)名前面加下劃線(xiàn)。為使連接后的程序保持一致性,被 C 語(yǔ)言調(diào)用的匯編子程序中,所有標(biāo)識(shí)符都要加下劃線(xiàn)。在 C 語(yǔ)言調(diào)用的匯編子程序中,所有標(biāo)識(shí)符都要加下劃線(xiàn);在 C 語(yǔ)言中,C 對(duì)所要調(diào)用的匯編子程序中的函數(shù)、變量,都要 用 Extern 偽命令予以說(shuō)明,一般將其放在各函數(shù)體外部。 同時(shí),為了使匯編語(yǔ)言的標(biāo)識(shí)符能在 C 語(yǔ)言中可見(jiàn),必須 用 Public 操作符定義標(biāo)識(shí)符。圖形方式下,顯示屏幕由若干行和列的像素點(diǎn)組成。運(yùn)用匯編語(yǔ)言操作像素的方法共有兩種:一是利用BIOS功能調(diào)用;另外一種是直接寫(xiě)屏。各種顯示模式在顯示緩沖區(qū)存儲(chǔ)方式上的明顯差異,操作像素方法的難易程度相差也很大。同時(shí),圖形方式下的直接寫(xiě)屏較為復(fù)雜,在使用MOV指令將像素信息寫(xiě)入顯存之前,需要首先設(shè)置VGA接口內(nèi)的“圖形控制寄存器”,所以,不采用直接操作顯示緩沖區(qū)的辦法來(lái)達(dá)到改變顯示像素的目的,最好是通過(guò)BIOS內(nèi)的中斷功能來(lái)實(shí)現(xiàn)相應(yīng)的功能,這樣,所編寫(xiě)的程序能很方便地適應(yīng)不同的圖形顯示模式。 INT 10H 提供了圖形方式下的讀像素和寫(xiě)像素的兩項(xiàng)功能。 AH = 0CH,寫(xiě)像素 入口參數(shù):AL = 像素值,BH = 顯示頁(yè) 返回參數(shù):無(wú) AH = 0DH,讀像素 入口參數(shù):BH = 顯示頁(yè),CX = X坐標(biāo),DX=Y坐標(biāo) 返回參數(shù):AL = 像素值 下面的實(shí)例運(yùn)用匯編語(yǔ)言在屏幕上畫(huà)一條直線(xiàn),直線(xiàn)的參數(shù)起始坐標(biāo),直線(xiàn)長(zhǎng)度以及顏色,是通過(guò)C語(yǔ)言函數(shù)模塊傳遞給匯編語(yǔ)言函數(shù)。以下是程序清單及其簡(jiǎn)要說(shuō)明。首先,在YLIB.H文件里對(duì)寫(xiě)像素宏定義。 WRITE_PIXEL MACRO PAGE1,ROW,COLOUM,COLOR MOV AH,OCHMOV AL,COLOR MOV BH,PAGE1 MOV DX,ROW MOV CX,COLOMN INT 10HENDM 匯編語(yǔ)言源程序畫(huà)直線(xiàn)程序,如算法1所示。 ;MASML.ASM.MODEL SMALL INCLUDE YLIB.H .DATA OLDMODE DB ? X DW ? Y DW ? LENG DW ? COLOUR DB ? .CODE PUBLIC _LINE ;子程序: _LINE PROC L1:PUSH CX PUSH BP WRITE_PIXEL 0,X,Y, MOV BP,SP COLOUR MOV AL,BP+4 INC X MOV COLOUR,AL POP CX MOV AX,BP+6 LOOP L1 MOV LENG,AX MOV AX,BP+8 POP BP MOV Y,AX RET MOV AX,BP+10 MOV AH,4CH MOV X,AX INT 21H MOV AH,0FH _LINE ENDP INT 10H MOV OLDMODE,AL SETMODE 12H MOV CX,LENG MOV DX,Y END算法1直線(xiàn)程序 其次,在C語(yǔ)言中調(diào)用匯編語(yǔ)言,如算法2所示。 #include “stdio.h” extern void line(int row,int column,int len,int color); main() line(100,100,200,5); line(150,150,50,6); 算法2 調(diào)用程

溫馨提示

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

評(píng)論

0/150

提交評(píng)論