家電維修班,手機維修班,電腦維修班,電工班,焊工班,液晶電視維修班,電動工具維修班、電動車摩托車維修班、網(wǎng)絡(luò)營銷培訓、網(wǎng)站設(shè)計培訓、淘寶培訓---全國招生 家電維修班,手機維修班,電腦維修班,電工班,焊工班,液晶電視維修班,電動工具維修班、電動車摩托車維修班、網(wǎng)絡(luò)營銷培訓、網(wǎng)站設(shè)計培訓、淘寶培訓---全國招生

中日欧洲精品视频在线-中日韩在线观看-中日韩一区二区三区-中日韩精品视频在线观看-狂野欧美老黑粗又硬-狂野猛交xxxx吃奶

您的位置:網(wǎng)站首頁 > 電器維修資料網(wǎng) > 正文 >

基于表格驅(qū)動的程序設(shè)計思想

★★★★★【文章導讀】:基于表格驅(qū)動的程序設(shè)計思想具體內(nèi)容是:軟件的可移植性是指軟件產(chǎn)品從一個硬件/軟件環(huán)境轉(zhuǎn)移到另一個硬件/軟件環(huán)境的難易與繁簡程度。它從軟件對新環(huán)境的適應(yīng)性這一方面,反映了軟件的質(zhì)量。為了提高軟件的可移植性,應(yīng)盡量使軟件與具體的設(shè)備無關(guān),即提高…

來源: 日期:2013-12-8 11:33:15 人氣:標簽:

基于表格驅(qū)動的程序設(shè)計思想

    軟件的可移植性是指軟件產(chǎn)品從一個硬件/軟件環(huán)境轉(zhuǎn)移到另一個硬件/軟件環(huán)境的難易與繁簡程度。它從軟件對新環(huán)境的適應(yīng)性這一方面,反映了軟件的質(zhì)量。為了提高軟件的可移植性,應(yīng)盡量使軟件與具體的設(shè)備無關(guān),即提高軟件的設(shè)備獨立性。對于256色圖形界面而言,就是要使程序不依賴于某種特定的顯示器。例如,程序員沒有任何理由假定用戶使用的是TVGA。為此,程序員必須提供顯示卡的常規(guī)檢測例程,并能根據(jù)檢測的結(jié)果決定圖形算法的具體實現(xiàn)。

    提高軟件設(shè)備獨立性的方法有很多,表格驅(qū)動就是其中一種。所謂表格,就是根據(jù)需要設(shè)計的數(shù)據(jù)結(jié)構(gòu)。表格中的數(shù)據(jù)由檢測例程填寫。表格中包含哪些欄目,應(yīng)在對各制造商提供的SuperVGA產(chǎn)品足夠了解的基礎(chǔ)上取舍,欄目應(yīng)體現(xiàn)各產(chǎn)品之間的差異。

    一、SuperVGA編程綜述

    SuperVGA產(chǎn)品在體系結(jié)構(gòu)上和標準的IBM VGA有所不同。但編程思想基本上是一樣的,這些編程方法已有許多文章介紹,這里不再重復(fù)。

    不同分辨率之間的區(qū)別,體現(xiàn)在編程上就是同一屏幕坐標映射到顯存的地址不同,但映射機理卻是一樣的。具體地說,坐標(x,y)對應(yīng)顯存的偏移地址(相對于A000)為Addr=-vga-width*y+x

    2.分頁機制不同。SuperVGA使用256K、512K或1M

    的顯示存儲器結(jié)構(gòu)。為了使處理器可通過一個64K主窗口來存取這樣大的顯示存儲器,SuperVGA有一個存儲器分頁機制,使得只將顯示存儲器的一部分映射到處理器的地址空間。值得注意的是,不同的VGA產(chǎn)品,其頁的大小不同,頁起始地址的粒度也是可變的。具體的頁選擇算法請查閱制造商提供的資料。

    不同的顯示模式,顯示一屏圖像所需的頁數(shù)是不同的。

    除了可移植性外,效率也是一個不可忽視的因素。圖形系統(tǒng)的核心部分應(yīng)使用匯編語言編程。這不僅是因為匯編語言的效率高,而且還因為匯編語言子程序的可再用性和可協(xié)用性也很好。核心部分應(yīng)十分重視下面幾點:(1)減少不必要的頁邊界檢查次數(shù);(2)只有在必要時才進行頁選擇;(3)選擇高效的機器指令。現(xiàn)舉例說明。程序1是圖像顯示系統(tǒng)中常用的函數(shù),其功能是將解包后的圖像數(shù)據(jù)送到顯存。為便于閱讀同時給出了C語言調(diào)用原型。程序在傳送每一行數(shù)據(jù)時,提前預(yù)測是否會遇到頁邊界,如果沒有,直接傳送;如果有,則將數(shù)據(jù)分成兩部分,分別傳送,中間插入頁選擇。所有的傳送均用字操作代替字節(jié)操作。頁邊界檢查只有一次,分頁操作只有在必要時才發(fā)生,圖像的顯示用 高效的指令REP MOVSW。

    程度1:

    ;原型:void LineDump(int x,int y, int num, char far*ptr)

    ;參數(shù):

    ; x,y-屏幕坐標

    ; num-本行的像素個數(shù)

    ; ptr-指向像素數(shù)據(jù)的遠指針

    LineDump proc far

    push bp

    mov bp,sp

    sub sp,2;WORD Reserved for LOCal var.

    push ds

    push es

    push si

    push di

    reserved equ [bp-2];Local var.save seg(DGROUP)

    x equ [bp+6];Large Model

    y equ [bp+8]

    num equ [bp+10]

    offs equ [bp+12]

    pseg equ [bp+14]

    mov reserved,ds

    mov ds,pseg

    mov si,offs ;DS:SI圖像數(shù)據(jù)所在源地址

    mov ax,0a000h;顯存段址

    mov es,ax ;ES:DI顯存目的地址

    mov ax,y

    push ds

    mov ds,reserved

    mul word ptr DGROUP:-vga-width

    pop ds

    add ax,x

    adc dx,0

    mov di,ax ;DI=-vga-width*y+x

    mov ah,dl ;進位部分(DL)=頁號

    call dword ptr cs:-PageSelect

    mov cx, num ;本行要傳送字節(jié)數(shù)

    mov bx, cx

    add bx,di ;檢測傳送是否在一個頁內(nèi)

    jnc Dump-In-One-Page

    sub cx,bx ;CX=本頁字節(jié)數(shù),BX=下頁字節(jié)數(shù)

    shr cx,1 ;CX/2=字數(shù)

    rep movsw ;本頁內(nèi)的傳送

    adc cx,0

    rep movsb ;處理可能的奇數(shù)字節(jié)數(shù)

    inc ah ;調(diào)整頁號

    call dword ptr cs:-PageSelect

    mov cx,bx ;新頁內(nèi)要寫的字節(jié)數(shù)

    jcxz Dump-Done

    Dump-In-One-Page:

    shr cx,1 ;CX/2=字數(shù)

    rep movsw ;圖像傳送

    adc cx,0

    rep movsb ;處理可能的奇數(shù)字節(jié)數(shù)

    Dump-Done:

    pop di

    pop si

    pop es

    pop ds

    mov sp,bp

    pop bp

    ret

    LineDump endp

    二、表格驅(qū)動的基本思想

    根據(jù)上面的分析,用以驅(qū)動顯示系統(tǒng)的表格,至少應(yīng)當包含下列項目:

    (1)實際顯示模式:vga-mode

    (2)水平分辨率:vga-width

    (3)垂直分辨率:vga-depth

    (4)頁選擇例程的入口地址:PageSelect

    (5)當前顯示方式所使用的 大頁號:vga-pages

    這個表格由圖形初始化例程來填寫。圖形初始化例程接收的顯示模式是統(tǒng)一的模式號,這樣可以撇開具體的設(shè)備,如InitVGA(TVGA800×600)。該例程調(diào)用顯示設(shè)備檢測程序DetectVGA來判斷顯示器的類型,從而填寫表格中的各欄目,并初始化圖形系統(tǒng)為所需的圖形方式。所有圖形算法都要查此表。

    除了用上述方法來實現(xiàn)兼容外,視頻電子學標準協(xié)會(VESA)為我們提供了另一種方法。

    VESA

    提供了一組附加的BIOS功能,這組功能以標準的方式訪問SuperVGA擴充的模式。VESA的附加功能都是通過BIOS中斷10H的4FH功能來實現(xiàn)的。VESA的子功能01能返回非常有用的SuperVGA模式信息,包括分頁例程的地址。

    因此,程序員可以按照VESA的標準來編寫圖形系統(tǒng),這樣的程序可以在所有支持VESA的顯示器上運行。由于VESA包括了世界上的主要VGA供應(yīng)商,寫出來的程序可移植性是很好的。但是,其效率卻可能是 低的。所以 好采用一種折衷的辦法,對于熟悉的產(chǎn)品,可以不用VESA的功能,對于不熟悉(資料不全)或檢測不出來的顯示器嘗試用VESA提供的手段來編程,當然要檢測顯示設(shè)備是否支持VESA。

    有時出于某種考慮,不希望支持所有顯示設(shè)備的代碼集中在一個程序中,可以為每個顯示設(shè)備分別提供驅(qū)動模塊,主程序根據(jù)檢測的結(jié)果選擇一個合適的模塊加載。Borland的C++就是這樣,它有一套BGI驅(qū)動程序,各驅(qū)動程序提供統(tǒng)一的圖形函數(shù)接口。筆者在實際工作中,為每一種顯示設(shè)備編寫了一個256色的BGI格式的驅(qū)動程序,這樣,在編寫圖形系統(tǒng)時,再也沒有必要考慮用戶的實際顯示設(shè)備了。

    三、范 例

    本文附有兩個圖形顯示的例子。ShowGif能顯示16/256色GIF格式圖像,能以任何256色模式啟動,支持多種顯示器。圖像可以漫游,并可隨時通過按鍵切換顯示方式。Main則是一個BGI驅(qū)動的鼠標/鍵盤控制的256色漢字圖形菜單。它自己會挑選一個合適的BGI,也可以從命令行指定一個BGI(比如指定VESA256給TVGA顯示器)。

    限于篇幅,這里僅給出有關(guān)的數(shù)據(jù)結(jié)構(gòu)和部分函數(shù)的說明(程序2)。然后給出一個初始化顯

    示系統(tǒng)的C語言片斷(程序3)。

    程序2(TVGA256.H):

    /* 統(tǒng)一的模式集 */

    enum TVGA-MODE

    TVGA320x200=0,

    TVGA640x400=1,

    TVGA640x480=2,

    TVGA800x600=3,

    TVGA1024x768=4,

    ;

    void TVGA256-driver(void);

    void PVGA256-driver(void);

    void AVGA256-driver(void);

    ...

    void VESA256-driver(void);

    extern int far-Cdecl TVGA256-driver-far[];

    extern int far-Cdecl PVGA256-driver-far[];

    extern int far-Cdecl AVGA256-driver-far[];

    ...

    extern int far-Cdecl VESA256-driver-far[];

    /* 支持的VGA集合 */

    enum VGAs{

    UnKnownVGA,

    TridentVGA,

    ParadiseVGA,

    AheadVGA,

    ...

    VesaVGA

    };

    /* 對應(yīng)的BGI驅(qū)動程序名 */

    unsigned char *Drivers[]={

    "TVGA256",

    "TVGA256",

    "AVGA256",

    ...

    "VESA256",

    };

    extern int DetectVGA(void);

    /* 功 能:檢測顯示卡的型號

    返回值:0-Unknowm1-Trident VGA2-Paradise VGA

    ...

    x-不能檢測出的VGA,但支持VESA

    返回值同時寫入全局變量vga-type */

    extern int VesaFound(void);

    /* 功 能:檢測VESA BIOS的存在性

    返 回:0-不支持VESA;

    其它-VESA版本號(0x0102即1.02版);

    返回值同時寫入全程變量vesa-found. */

    extern void InitVesa(void);

    /* 功 能:初始化VESA.根據(jù)-vga-mode模式號換算成VESA的標準模式號填寫頁粒度(WinGranularity),頁大小(WinSize),

    和分頁例程的入口地址(WinFuncPtr)

    VESA的標準模式解釋如下:

    100h-640x400 256

    101h-640x480 256

    102h-800x600 16

    103h-800x600 256

    104h-1024x768 16

    105h-1024x768 256 etc.

    InitVesa供給InitVGA調(diào)用 */

    extern void InitVGA(int mode);

    /* 功 能:初始化顯示系統(tǒng)(自動調(diào)用DetectVGA檢測顯示卡)

    參 數(shù):mode=TVGA320x200(0)

    TVGA640x400(1)

    TVGA640x480(2)

    TVGA800x600(3)

    TVGA1024x768(4)

    返 回:InitVGA沒有顯式的返回值,但它初始化下列全程變量:

    vga-mode,vga-width,vga-depth,vga-pages,PageSelect

    必要時自動調(diào)用InitVesa

    */

    extern int vga-type;

    extern int vga-mode;

    extern int vga-width;

    extern int vga-depth;

    extern int vga-pages;

    extern int vga-pages;

    extern char page-number;

    extern int vesa-found;

    ...

    程序3(初始化顯示系統(tǒng)的程序片斷):

    ...

    int GraphDriver, GraphMode;

    unsigned char *bgiDriver="PVGA256";

    bgiDriver=Drivers[DetectVGA()];

    GraphDriver=installuserdriver(bgiDriver,NULL);

    GraphMode=TVGA800x600;

    initgraph(&GraphDriver, &GraphMode," ");...

    參考文獻

    1 來文占等編譯.Super VGA高級編程指南.北京:北京科海培訓中心,1991.5.

    2 張一波編譯.Super VGA與VESA編程指南.北京:海洋出版社,1992


【看看這篇文章在百度的收錄情況】

相關(guān)文章

聯(lián)系方式

  • 0731-85579057 , 0731-85569651
  • 點擊這里給我發(fā)消息點擊這里給我發(fā)消息點擊這里給我發(fā)消息
網(wǎng)站欄目導航: 培訓課程 手機硬件 手機軟件 綜合維修 學校資訊 考證指南 就業(yè)導航 招生指南 教學管理 入學須知 學校圖片 教學大綱 師資力量 學生感言 學校概況 教學實景 手機維修培訓資訊 電腦維修培訓 維修間故事 手機維修培訓 液晶電視維修培訓 家電維修資料網(wǎng) 電器維修資料網(wǎng) 招生地區(qū) 刷機教程 家電維修 手機技巧 老版網(wǎng)站 招生平臺網(wǎng)絡(luò)工程
友情鏈接: 監(jiān)控安裝培訓 電動工具維修 家電維修學校 電工培訓學校 液晶電視維修 焊工培訓學校 電工焊工學校 電腦維修學校 家電維修培訓 電腦維修培訓 家裝電工培訓網(wǎng)絡(luò)安裝維護 主板維修 液晶顯示器 筆記本電腦維修 電腦組裝維護 電腦硬件維修 電腦維修 電工考證 電工證 裝修電工 水電工 維修電工 電工 焊接技術(shù) 電焊工 焊工 電動設(shè)備維修 電動工具維修 制冷維修 空調(diào)維修 冰箱維修  更多>>
陽光-手機維修教育品牌學校
點擊這里給我發(fā)消息 點擊這里給我發(fā)消息 點擊這里給我發(fā)消息
電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監(jiān)控培訓 空調(diào)維修培訓 網(wǎng)絡(luò)營銷培訓 網(wǎng)站設(shè)計培訓 淘寶網(wǎng)店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校 電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監(jiān)控培訓 空調(diào)維修培訓 網(wǎng)絡(luò)營銷培訓 網(wǎng)站設(shè)計培訓 淘寶網(wǎng)店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校 電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監(jiān)控培訓 空調(diào)維修培訓 網(wǎng)絡(luò)營銷培訓 網(wǎng)站設(shè)計培訓 淘寶網(wǎng)店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校 電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監(jiān)控培訓 空調(diào)維修培訓 網(wǎng)絡(luò)營銷培訓 網(wǎng)站設(shè)計培訓 淘寶網(wǎng)店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校
中山市,固原市,銀川市,玉樹,海東,隴南市,酒泉市,張掖市,天水市,金昌市,蘭州市,榆林市,延安市,渭南市,銅川市,阿里,山南,拉薩市,怒江,文山州,楚雄州,普洱市,昭通市,玉溪市,昆明市,畢節(jié),銅仁,遵義市,貴陽市,甘孜州,資陽市,達州市,宜賓市,南充市,遂寧市,綿陽市,瀘州市,自貢市,三亞市,崇左市,河池市,玉林市,欽州市,梧州市,柳州市,梅州市,肇慶市,湛江市,佛山市,珠海市,韶關(guān)市,湘西州,懷化市,郴州市,張家界市,邵陽市,株洲市,仙桃市,隨州市,荊州市,荊門市,襄樊市,黃石市,駐馬店市,信陽市,南陽市,漯河市,中衛(wèi)市,石嘴山市,海西,海南藏州,黃南州,海北,甘南,慶陽市,平?jīng)鍪?武威市,白銀市,嘉峪關(guān)市,安康市,漢中市,咸陽市,寶雞市,林芝,日喀則,昌都,迪慶,德宏,大理,西雙版納,紅河州,臨滄市,麗江市,保山市,曲靖市,黔東州,黔西州,安順市,六盤水市,涼山州,阿壩州,雅安市,廣安市,眉山市,內(nèi)江市,廣元市,德陽市,攀枝花市,成都市,海口市,來賓市,百色市,貴港市,北海市,桂林市,南寧市,云浮市,揭陽市,潮州市,清遠市,陽江市,汕尾市,惠州市,茂名市,江門市,汕頭市,深圳市,廣州市,婁底市,永州市,益陽市,岳陽市,湘潭市,長沙市,恩施州,黃岡市,孝感市,鄂州市,十堰市,武漢市,周口市,商丘市,三門峽市,許昌市,焦作市,安陽市,鶴壁市,平頂山市,開封市,鄭州市,聊城市,濱州市,德州市,萊蕪市,日照市,泰安市,煙臺市,濰坊市,東營市,淄博市,上饒市,濟南市,撫州市,宜春市,贛州市,新余市,九江市,景德鎮(zhèn)市,寧德市,南平市,泉州市,莆田市,廈門市,宣城市,亳州市,六安市,宿州市,黃山市,滁州市,安慶市,淮北市,馬鞍山市,蚌埠市,蕪湖市,合肥市,麗水市,舟山市,衢州市,金華市,湖州市,嘉興市,寧波市,宿遷市,鎮(zhèn)江市,鹽城市,連云港市,蘇州市,徐州市,南京市,綏化市,牡丹江市,佳木斯市,大慶市,鶴崗市,哈爾濱市,白城市,白山市,遼源市,吉林市,葫蘆島市,鐵嶺市,盤錦市,阜新市,錦州市,本溪市,鞍山市,沈陽市,錫林郭勒盟,通遼市,烏海市,呂梁市,忻州市,晉中市,晉城市,陽泉市,太原市,廊坊市,承德市,保定市,邯鄲市,唐山市,寧夏,甘肅省,西藏,貴州省,重慶市,廣西,湖南省,河南省,江西省,安徽省,江蘇省,黑龍江省,遼寧省,山西省,天津市,四平市,內(nèi)蒙古,吳忠市,果洛,西寧市,定西市,商洛市,西安市,那曲,黔南州,巴中市,樂山市,賀州市,防城港市,東莞市,河源市,常德市,衡陽市,咸寧市,宜昌市,濮陽市,新鄉(xiāng)市,洛陽市,菏澤市,臨沂市,威海市,濟寧市,棗莊市,青島市,吉安市,鷹潭市,萍鄉(xiāng)市,南昌市,龍巖市,漳州市,三明市,福州市,池州市,巢湖市,阜陽市,銅陵市,淮南市,臺州市,紹興市,溫州市,杭州市,泰州市,揚州市,淮安市,南通市,常州市,無錫市,大興安嶺,黑河市,七臺河市,伊春市,雙鴨山市,雞西市,齊齊哈爾市,延邊,松原市,通化市,長春市,朝陽市,遼陽市,營口市,丹東市,撫順市,大連市,阿拉善盟,興安盟,烏蘭察布市,巴彥淖爾市,呼倫貝爾市,鄂爾多斯市,赤峰市,包頭市,呼和浩特市,臨汾市,運城市,朔州市,長治市,大同市,衡水市,滄州市,張家口市,邢臺市,秦皇島市,石家莊市,青海省,陜西省,云南省,四川省,海南省,廣東省,湖北省,山東省,福建省,浙江省,上海市,吉林省,河北省,北京市 主站蜘蛛池模板: 国产极品美女视频福利| 国产精品成人观看视频免费 | 扒开老师大腿猛进AAA片邪恶| 台湾18成人影院| 亚洲日韩天堂在线中文字幕| china年轻小帅脸直播飞机| 国产三级在线观看免费| 棉签和冰块怎么弄出牛奶视频| 久久久精品久久| 日本激情网址| 特黄大片aaaaa毛片| 中文中幕无码亚洲在线| 高清AV熟女一区| 国产毛A片啊久久久久久A| 麻豆国产成人AV在线| 欧美人与动牲交A免费| 亚洲 无码 在线 专区| 亚洲国产成人精品不卡青青草原 | 亚洲日本激情| 成电影人免费网站| 国产精品97久久久久久AV色戒| 狼人大香伊蕉国产WWW亚洲| 偷拍国产精品在线播放| 91精品国产入口| 范冰冰hdxxxx| 芒果影院网站在线观看| 亚洲AV国产精品无码精| 超熟女专门志| 乱VODAFONEWIFI熟妇| 亚洲免费三级电影| 国产 亚洲 中文在线 字幕| 国产区免费在线观看| 琪琪午夜福利免费院| 影音先锋 av天堂| 国产亚洲AV精品无码麻豆| 日本高清无吗| 亚洲2023无矿砖码砖区| 成人国产精品玖玖热色欲| 蜜臀AV精品一区二区三区| 亚洲视频区| 国内精品久久影视免费|