WEB开发网
开发学院软件开发汇编语言 汇编源代码之图形显示方式屏幕的保存和恢复 阅读

汇编源代码之图形显示方式屏幕的保存和恢复

 2009-01-28 09:37:10 来源:WEB开发网   
核心提示:TEST_VGA PROCpush 0 ;检测是否安装鼠标驱动程序pop dscmp word ptr ds:[33h*4],0jz no_mouseor cs:flag,10000000b ;has mouse installedno_mouse:push cspop dsmov ah,1bh ;检测是否是 VGA

TEST_VGA PROC

push 0 ;检测是否安装鼠标驱动程序

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

...

;================================================================

;保存显示缓冲区内容并设置新的显示模式到 80 x 25 文本 (模式 3)

SAVE_SCR PROC

push ds

push es

test flag,10000000b ;见前面

jz ss_no_mouse

mov ax,16h ;保存鼠标状态

mov dx,offset mouse_buffer

int 33h

ss_no_mouse:

mov ax,1c01h ;保存视频状态

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 ;以下为图形方式保存显示缓冲区

call vga_page

call vga_base

call save_vram

mov ax,0083h ;设置新的显示模式,不清除显示内存

int 10h

push 0b800h

pop ds ;保存显示内存

上一页  1 2 3 4 5  下一页

Tags:汇编 源代码 图形

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接