韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

圖形顯示方式屏幕的保存與恢復(fù)

圖形顯示方式屏幕的保存與恢復(fù)

更新時間:2022-10-16 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

在程序中常常要暫時的保存圖形顯示方式屏幕上的內(nèi)容,然后把自己的信息輸出到屏幕上,結(jié)束后再恢復(fù)原來的屏幕內(nèi)容,特別在內(nèi)存駐留程序彈出一個窗口時更要用到,但是圖形方式下顯示緩沖區(qū)的容量巨大,在常用的 80 x 25 文本方式下,顯示緩沖區(qū)僅大小僅為 80 x 25 x 2 = 4000 字節(jié),而在模式 13H 320 x 200 x 256 色時為 320 x 200 = 64000 字節(jié),現(xiàn)在常用的高彩色、真彩色下如 800 x 600 x 65535 色時為 800 x 600 x 2 = 960000 字節(jié),涉及到如此大的數(shù)據(jù)量程序必須使用磁盤交換方法或用到 XMS 做為數(shù)據(jù)保存緩沖區(qū),使編程復(fù)雜化。
本文用了 INT 10H 中不清除顯示內(nèi)存設(shè)置新顯示模式的方法,使不管在什么顯示方式下,用到的緩沖區(qū)大下都在 10K 左右,即使在 1024 x 768 x 16.7M 色也能正常保存。
本程序的適用范圍為保存屏幕后自己的程序僅僅使用文本模式 3 的情況,如果要用到圖形模式,那么還是要保存全部的顯示緩沖區(qū)。在兼容性方面,由于使用 VESA 標(biāo)準(zhǔn)功能,在現(xiàn)在的 PCI/VESA 顯示卡上都能正常運行,我發(fā)現(xiàn)唯一不能運行的是有一段時期生產(chǎn)的 TVGA 8900/9000 卡,因為此卡在 VESA 功能剛出現(xiàn)的時候生產(chǎn),支持 VESA 的偽彩色顯示模式,卻又不支持很多其他的 VESA 功能。大家找到克服的方法告訴我一聲。
本程序要用到的一些中斷的說明如下:

INT 10H 的 00H 功能,設(shè)置顯示模式:

功能 入口參數(shù) 出口參數(shù)
INT 10H 的 00H功能
設(shè)置顯示模式 AH = 00H  
AL = 模式(如果位 7 置位,則不清除顯示緩沖區(qū))

INT 10H 的 1BH 功能,檢測是否 VGA 卡:

功能 入口參數(shù) 出口參數(shù)
INT 10H 的 1BH功能
取 VGA/MCGA 的功能、狀態(tài)信息 AH = 1BH AL = 1BH 成功(說明顯示卡為 VGA 以上)
ES:DI 返回狀態(tài)信息
BX = 0000
AL <> 1BH 非VGA/MCGA 顯示卡
ES:DI 指向 64 字節(jié)緩沖區(qū)

INT 10H 的 1CH 功能,保存/恢復(fù)視頻狀態(tài):

功能 入口參數(shù) 出口參數(shù)
INT 10H 的 1C00H 功能
返回狀態(tài)緩沖區(qū)容量 AX = 1C00H AL = 1CH 成功
BX = 需要的 64 字節(jié)塊數(shù)目
INT 10H 的 1C01H 功能
保存視頻狀態(tài) AX = 1C01H  
ES:BX 指向緩沖區(qū)
INT 10H 的 1C02H 功能
恢復(fù)視頻狀態(tài) AX = 1C01H  
CX = 要求的狀態(tài)
位 0 = 恢復(fù)視頻硬件狀態(tài)
位 1 = BIOS 數(shù)據(jù)區(qū)
位 2 = 彩色寄存器和 DAC 狀態(tài)
ES:BX 指向緩沖區(qū)(用1C01H功能保存下來的)

INT 10H 的 4FH 功能,VESA 功能:

功能 入口參數(shù) 出口參數(shù)
INT 10H 的 4F00H功能
取顯示卡 VESA 信息 AX = 4F00H AL = 4FH 說明顯示卡支持VESA
AH = 00H 成功
AH = 01H 失敗
ES:DI 指向緩沖區(qū) (256 字節(jié)) AL <> 4FH 顯示卡不支持VESA
INT 10H 的 4F05H功能
控制對 VESA 顯示卡視頻 RAM 的訪問 BH = 00H 選視頻內(nèi)存窗口
DX = 視頻內(nèi)存窗口地址 AH = 00H 成功
AH = 01H 失敗
BH = 01H 取視頻內(nèi)存窗口 AH = 00H 成功
DX = 視頻內(nèi)存窗口地址
AH = 01H 失敗

INT 33H 的 16H/17H 功能,保存/恢復(fù)鼠標(biāo)驅(qū)動程序狀態(tài):

功能 入口參數(shù) 出口參數(shù)
INT 33H 的 0015H功能
確定保存鼠標(biāo)驅(qū)動程序狀態(tài)所需
的空間 AX = 0015H BX = 所需大小
INT 33H 的 0016H功能
保存鼠標(biāo)驅(qū)動程序狀態(tài) AX = 0016H  
BX = 緩沖區(qū)大小(用 0015H 獲得)
ES:DX 指向緩沖區(qū)
INT 33H 的 0017H功能
恢復(fù)鼠標(biāo)驅(qū)動程序狀態(tài) AX = 0017H  
BX = 緩沖區(qū)大小(用 0015H 獲得)
ES:DX 指向緩沖區(qū)

源程序:

;by Luo Yun Bin
;http://asm.yeah.net

;這個子程序用來檢測顯示卡的類型,鼠標(biāo)狀態(tài)等等
;在程序初始化時執(zhí)行

;文中要用到的一些緩沖區(qū)請自己定義,注意大!

flag db ? ;標(biāo)志位,位 7 置 1 表示安裝了鼠標(biāo)
vga_type db ? ;顯示卡類型
video_mode db ? ;顯示模式
vga_win1 dw ? ;視頻窗口,暫存 VESA 的窗口狀態(tài)
vga_win2 dw ? ;
vga_win3 dw ? ;

...

TEST_VGA PROC

push 0 ;檢測是否安裝鼠標(biāo)驅(qū)動程序
pop ds
cmp word ptr ds:[33h*4],0
jz no_mouse
or cs:flag,10000000b ;has mouse installed
no_mouse:
push cs
pop ds
mov ah,1bh ;檢測是否是 VGA 以上顯示卡
xor bx,bx
mov di,offset file_end
int 10h
cmp al,1bh
jnz tv_no_vga
mov ax,4f00h ;檢測是否支持 VESA 功能
mov di,offset file_end
int 10h
cmp al,4fh
jz tv_is_vesa
mov dx,3c4h ;檢測是否 TVGA 9000 卡
mov al,0eh ;這一段是照抄的,找不到資料
out dx,al
inc dx
in al,dx
mov bl,al
xor al,al
out dx,al
in al,dx
xchg al,bl
out dx,al
test bl,2
jnz tv_is_tvga
mov dx,3cdh ;檢測是否 ET6000 卡
in al,dx
mov ah,al
mov al,11h
out dx,al
in al,dx
xchg ah,al
out dx,al
cmp ah,11h
jz tv_is_tseng
mov vga_type,4
ret
tv_is_vesa:
mov vga_type,1
ret
tv_is_tvga:
mov vga_type,2
ret
tv_is_tseng:
mov vga_type,3
ret
tv_no_vga:
int 20h ;非 VGA 卡退出

TEST_VGA ENDP

...

;================================================================
;保存顯示緩沖區(qū)內(nèi)容并設(shè)置新的顯示模式到 80 x 25 文本 (模式 3)
SAVE_SCR PROC
push ds
push es
test flag,10000000b ;見前面
jz ss_no_mouse
mov ax,16h ;保存鼠標(biāo)狀態(tài)
mov dx,offset mouse_buffer
int 33h
ss_no_mouse:
mov ax,1c01h ;保存視頻狀態(tài)
mov bx,offset video_buffer
mov cx,7
int 10h
mov ah,0fh ;保存原顯示模式
int 10h
mov video_mode,al
cmp al,3 ;80 x 25 x 16 色
jz ss_mode3
cmp al,7 ;80 x 25 黑白
jz ss_mode7
xor ax,ax ;以下為圖形方式保存顯示緩沖區(qū)
call vga_page
call vga_base
call save_vram
mov ax,0083h ;設(shè)置新的顯示模式,不清除顯示內(nèi)存
int 10h

push 0b800h
pop ds ;保存顯示內(nèi)存
xor si,si
mov cx,1000h
mov di,offset ram_buffer
push cs
push ds
cld
rep movsb
xor di,di ;
mov cx,80*25
mov ax,57b1h ;填充背景,不然有亂字符
cld
rep stosw
scr_ret:
pop es
pop ds
ret
ss_mode3:
call save_vram ;顯示模式 3 保存顯示 RAM
jmp short scr_ret
ss_mode7:
push 0b000h ;顯示模式 7 保存顯示 RAM
pop ds
call save_vram1
mov ax,3
int 10h
call restore_vram
jmp short scr_ret
SAVE_SCR ENDP
SAVE_VRAM PROC
push 0b800h ;把顯示內(nèi)存保存到自己的緩沖區(qū)
pop ds
save_vram1:
push cs
pop ds
xor si,si
mov di,offset ram_buffer
mov cx,2000h
cld
rep movsb
ret

SAVE_VRAM ENDP
RESTORE_VRAM PROC

push 0b800h ;恢復(fù)顯示緩沖區(qū)內(nèi)容
pop es
restore_vram1:
xor di,di
push cs
pop ds
mov si,offset ram_buffer
mov cx,2000h
cld
rep movsb
ret

RESTORE_VRAM ENDP
VGA_PAGE PROC
cmp vga_type,1
jnz other_vga1
cmp ah,1
jz vp_vesa2
cmp ah,2
jz vp_vesa1
mov ax,4f05h ;保存 VESA 顯示卡狀態(tài)
mov bx,0100h
int 10h
mov vga_win1,dx
mov ax,4f05h
mov bx,0101h
int 10h
mov vga_win2,dx
vp_vesa1:
mov ax,4f05h
xor bx,bx
xor dx,dx
int 10h
mov ax,4f05h
mov bx,0001h
xor dx,dx
int 10h
ret
vp_vesa2:
mov ax,4f05h
xor bx,bx
mov dx,vga_win1
int 10h
mov ax,4f05h
mov bx,0001h
mov dx,vga_win2
int 10h
ret
other_vga1:
cmp vga_type,3
jnz other_vga2
mov dx,3cdh
cmp ah,1
jz vp_tseng2
cmp ah,2
jz vp_tseng1
in al,dx
mov vga_win3,al
vp_tseng1:
xor al,al
out dx,al
ret
vp_tseng2:
mov al,vga_win3
out dx,al
vp_ret:
ret
other_vga2:
cmp vga_type,2
jnz vp_ret
mov al,0eh
mov dx,03c4h
cmp ah,1
jz vp_tvga2
out dx,al
inc dx
in al,dx
cmp ah,2
jz vp_tvga1
mov vga_win3,al
xor al,al
out dx,al
ret
vp_tvga1:
mov al,2
out dx,al
ret
vp_tvga2:
mov ah,vga_win3
out dx,ax
ret
VGA_PAGE ENDP
VGA_BASE PROC
mov dx,3c4h ;這一段是照抄的,找不到資料
mov ax,402h
out dx,ax
mov ax,704h
out dx,ax
mov dx,3ceh
mov ax,0ff08h
out dx,ax
mov ax,0c06h
out dx,ax
mov ax,204h
out dx,ax
mov ax,5
out dx,ax
ret
VGA_BASE ENDP

;====================================================
;本子程序為恢復(fù)原來的顯示內(nèi)容
;在自己的程序執(zhí)行完后使用
RESTORE_SCR PROC
push cs
pop ds
mov al,video_mode ;根據(jù)不同的原顯示模式不同處理
cmp al,3
jz rs_mode3
cmp al,7
jz rs_mode7
push 0b800h ;以下為圖形方式恢復(fù)顯示內(nèi)容
pop es
push cs
pop ds
mov si,offset ram_buffer
xor di,di
mov cx,1000h
cld
rep movsb ;恢復(fù)顯示 RAM

mov ah,2
call vga_page
call vga_base
call restore_vram
xor ah,ah ;恢復(fù)到原來的顯示模式
mov al,video_mode
or al,80h
int 10h
mov ah,1
call vga_base
jmp short rs_mode31
rs_mode3:
call restore_vram
rs_mode31:
push cs
pop es
push cs
pop ds
mov ax,1c02h ;恢復(fù)視頻狀態(tài)
mov bx,offset video_buffer
mov cx,7
int 10h
test flag,10000000b
jz rs_no_mouse
mov ax,17h ;恢復(fù)鼠標(biāo)狀態(tài)
mov dx,offset mouse_buffer
int 33h
rs_no_mouse:
ret
rs_mode7:
mov ax,7 ;顯示模式 7 恢復(fù)
int 10h
push 0b000h
pop es
call restore_vram1
jmp short rs_mode31
RESTORE_SCR ENDP

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
hs网站在线观看| 国产麻豆一区二区三区精品视频| 亚洲免费观看在线观看| 国产午夜亚洲精品一级在线| 你懂的视频在线| 成人女人免费毛片| 欧美高清视频一区二区三区在线观看| 国产综合色产| 国产成人精品一区二区色戒| 激情欧美亚洲| 成人在线免费看片| 国产盗摄女厕一区二区三区| 国产精品免费av一区二区| 在线观看高清免费视频| 天天操天天操天天色天天要| 大桥未久一区二区| 亚洲综合极品香蕉久久网| 好看的日韩精品视频在线| 视频在线观看免费影院欧美meiju| 日韩电影免费观看高清完整版| 亚洲综合色区另类av| 国产一区二区三区不卡免费观看| 欧美成人激情视频免费观看| 亚洲国产精品电影| 欧美日韩另类视频| 777777777亚洲妇女| 欧美成人第一区| 噼里啪啦国语在线观看免费版高清版| 久久精品视频在线观看免费| 裸体在线国模精品偷拍| 欧美大片免费看| 色琪琪一区二区三区亚洲区| 一本大道亚洲视频| 日韩欧美一级片| 欧美禁忌电影| 2024最新电影在线免费观看| 精品成人18| 久久婷婷影院| 亚洲欧美激情四射在线日| 一区二区在线中文字幕电影视频| 欧美黄色一级大片| 国产视频二区| 成人国产免费电影| 91精品国产91久久久久久| av在线这里只有精品| 久久综合88中文色鬼| y111111国产精品久久久| 精品欧美一区二区在线观看| 国产精品乱码一区二区三区| 二区三区四区视频| 黄色另类av| 在线播放免费| 欧美刺激性大交免费视频| 99精品人妻无码专区在线视频区| 国产91精品久久久久久| 在线观看免费黄色小视频| 午夜a一级毛片亚洲欧洲| 国产精品久久久久精k8| 91香蕉一区二区三区在线观看| 能看av的网址| 嫩草影院国产精品| 69成人精品免费视频| 蜜桃视频一区| 亚洲免费成人av电影| 精品卡一卡二卡三卡四在线| 欧美性猛交 xxxx| 婷婷电影在线观看| 国产精品爱啪在线线免费观看| 啊啊啊啊啊啊啊视频在线播放| 成看片vvv222| 9l视频自拍九色9l视频成人| 人人妻人人藻人人爽欧美一区| 国产69精品久久久久按摩| 国产调教一区二区三区| 亚洲成人一区| 一区二区三区av电影| 男人日女人下面视频| 亚洲精品电影| 欧美另类视频在线观看| 99久久国产综合色|国产精品| 欧美日韩激情电影| 在线中文字幕观看| 一区福利视频| 国产精品99久久久精品无码| 国产又粗又长又黄的视频| 成人黄色一级大片| 国产精品538一区二区在线| 四虎4545www国产精品| 五月伊人六月| 亚洲视频在线二区| 日韩成人视屏| 亚洲伊人久久综合| 91久久久久国产一区二区| 中文字幕日产av一二三区| 制服丝袜中文字幕在线| 一本之道在线视频| 午夜激情小视频| 国产鲁鲁视频在线观看特色| 国产精品夫妻激情| ww国产内射精品后入国产| 国产精品久久国产三级国电话系列| 91麻豆精品国产综合久久久久久| 中文字幕一区二区三区四区五区人| 欧美精品aⅴ在线视频| 欧美极品欧美精品欧美图片| 国产精品免费视频xxxx| 91看片在线免费观看| 欧美日韩电影在线观看| 日韩一级视频| 娇妻被老王脔到高潮失禁视频| 免费黄在线观看| 日韩一区二区三区不卡| 国产日韩在线一区二区三区| 精品99re| 精品69视频一区二区三区Q| 日本一本在线免费福利| 亚在线播放中文视频| 一级毛片免费看| 免费的av网址| 久久不射电影网| 成人久久久精品乱码一区二区三区| 成人免费直播在线| 欧美私模裸体表演在线观看| 久久一区国产| www.九九热.com| 天堂99x99es久久精品免费| 蜜桃传媒视频麻豆第一区免费观看| 欧美精品人人做人人爱视频| 久久久久久久国产| 黄页视频在线播放| 国产精品美女一区二区在线观看| 碰碰视频免费| 欧美久久久久久久| 国产精品视频二区三区| 中日韩一区二区三区| 亚洲第一免费看片| 中文字幕人妻一区二区三区| 青青操在线视频| 国产三级中文字幕| 欧美性猛交99久久久久99按摩| 亚洲午夜久久久久中文字幕久| 俄罗斯性欧美| 成人综合婷婷国产精品久久蜜臀| 日韩不卡一区二区三区| 欧美在线亚洲在线| 久久精品2019中文字幕| 91久久精品一区二区| 中文字幕亚洲视频| 欧美gay囗交囗交| www.av在线.com| 久久午夜鲁丝片午夜精品| 国产一二三四在线| 中文字幕精品在线视频| 亚洲欧美色综合| 亚洲欧美清纯在线制服| 成人一区二区三区仙踪林| 国产91精品一区二区麻豆亚洲| 亚洲午夜色婷婷在线| 欧美精品系列| 成人免费网站在线看| 精品网站www| 亚洲精品国产精品自产a区红杏吧| 色综合久久天天综合网| 亚洲视频免费观看| 日本高清久久久| 希岛爱理一区二区三区av高清| 欧美中文在线观看| 国产国语性生话播放| 少妇一级淫免费放| 国产在线成人| 久久aaaa片一区二区| 国内精品嫩模av私拍在线观看| 手机在线国产视频| 国产精品久av福利在线观看| 日本高清久久一区二区三区| 日韩在线黄色| 日韩区国产区| 影音先锋一区二区资源站| 永久免费看片直接| 国产91久久婷婷一区二区| 亚洲天堂福利av| 国产农村妇女精品一二区| 国产91精品久久久久久久| 日本免费一区二区三区四区| 一本久道高清无码视频| 亚洲搞黄视频| 136国产福利精品导航| 国产乱码精品一区二区三区亚洲人| www.av视频| 国产在线69| 成人午夜电影免费在线观看| 亚洲国产综合人成综合网站| 黄色福利视频网站| 日本视频在线观看免费| 欧美日韩另类国产亚洲欧美一级| 精品一区2区三区| 91精品国产综合久久香蕉麻豆| 天天揉久久久久亚洲精品| 一级二级在线观看| 91超碰在线| 亚洲国产97在线精品一区| 99精品欧美一区二区三区综合在线| 日韩精品高清不卡| 亚洲国产av一区| 亚欧激情乱码久久久久久久久| eeuss影院在线观看| 久久久久久久久久一区| 蜜桃av一区| 欧美成人一区二免费视频软件| 欧美午夜片在线免费观看| 99精品国产九九国产精品| 精品久久一二三| 亚洲激情黄色| 国产成人在线精品| 91高清在线观看| 黄色片视频在线观看| 天天天天天天天操| 日本不卡一区二区| 亚洲va久久久噜噜噜久久狠狠| 国产亚洲久久| 亚洲r级在线观看| 粗大的内捧猛烈进出在线视频| 午夜精品久久久久久久蜜桃| 第一区第二区在线| 波多视频一区| 不卡的av在线播放| 水蜜桃免费高清视频在线播放| 成年人视频免费| 国产视频2区| 国严精品久久久久久亚洲影视| 哥也色在线视频| 91久久国产最好的精华液| 欧美视频免费看| 久久亚洲精品中文字幕蜜潮电影| 色综合av在线| 无码人妻aⅴ一区二区三区| 亚洲一区二区精品在线观看| 久久一区二区三区超碰国产精品| 在线资源免费观看| 一本久道久久综合狠狠爱亚洲精品| 91精品久久久久久久久99蜜臂| 午夜精品久久久久久毛片| www.欧美com| 国产三级黄色片| 久久久成人av毛片免费观看| 99re这里只有精品在线| 中文字幕有码在线视频| 精品国产91乱高清在线观看| 国产精品久久久久久久久搜平片| 欧美顶级少妇做爰| 日韩av午夜在线观看| 欧美日韩成人在线观看| 一二三不卡视频| 99视频一区| 天堂资源在线播放| 久久这里只有精品一区二区| 中文字幕在线观看av| 欧美另类bbbxxxxx另类| 影音先锋男人资源在线| 亚洲熟妇无码一区二区三区导航| 精品一区二区三区无码视频| 夜夜嗨av色综合久久久综合网| 国产伦一区二区| 欧美一级搡bbbb搡bbbb| 欧美中文字幕第一页| 无码国产69精品久久久久网站| 91蜜桃臀久久一区二区| 神马午夜一区二区| 久久国产精品电影| 精品黑人一区二区三区在线观看| 欧美一级特黄aaaaaa在线看片| 中文无码精品一区二区三区| 尤物九九久久国产精品的分类| 国内国产区免费视频| 亚洲欧洲视频在线观看| 性生交大片免费看女人按摩| 伊人色综合一区二区三区影院视频| 久久这里精品| www.涩涩涩| 欧美精品不卡| 国产污视频网站| 日本一道本久久| 久久精品日产第一区二区| 国产精品视频线看| 性欧美videos粗暴| 久久久久久亚洲中文字幕无码| 中文字幕一二三区在线观看| 最新精品视频在线| 国产精品美乳在线观看| a一区二区三区亚洲| 91麻豆精品国产91久久| 亚洲二区视频在线| 成人黄18免费网站| 欧洲一区二区视频| 波多野结衣电影在线播放| 亚洲图片一区二区| 精品一区二区三区四区五区六区| 性高潮免费视频| 国产不卡一区二区三区在线观看| 精品无人区乱码1区2区3区免费| 一本色道久久综合亚洲| 美女黄色片网站| 精品久久久久久久久久中文字幕| 国产免费久久久久| 色丁香久综合在线久综合在线观看| 亚洲狼人综合| 日韩一区二区三区电影| 日本午夜精品理论片a级app发布| 欧美裸身视频免费观看| 日韩亚洲一区在线播放| 麻豆freexxxx性91精品| 久久综合久久综合九色| 成人综合日日夜夜| 亚洲国产精品嫩草影院久久av| 无码免费一区二区三区免费播放| 中文字幕视频在线免费| 亚洲四色影视在线观看| 久久免费视频99| 99re8这里有精品热视频8在线| 丰满大乳奶做爰ⅹxx视频| 国产欧美一区二区三区久久| 鲁大师精品99久久久| 国产一区二区三区精品欧美日韩一区二区三区| 国产欧美精品一区二区三区-老狼| 亚洲欧美日韩不卡| 欧美被日视频| 久久免费成人精品视频| 亚洲一区中文日韩|