【doc】VGA适配器最高分辨率图形功能的开发与应用
VGA适配器最高分辨率图形功能的开发与
应用
3il靴延蜜文学掣撮(自贩Nc:一lj94
总5JOUI;',NA1,AN!,V,黔nt25一
———
一一……——…,一……一……一—…一—……
最高分辨攀形功能
的开发与应蘑宰
,
TfIL\
描娶米丈膏,了在BIO上汇语言?也.一个强'璺童用程厅
使i-]AT机监愆器,GA适i'2器的最:分宰102d×?68的墨形々能得以囊用 诅地提高了计算机图形出f/s),2量.
美德词VGA适配器分餐串汇话言IO5.吾;
1引言
VGA是高性能的埕示适配器,充务发挥其功能具有广泛的应用前景.目前使用的 AT286~H8O386微机的监视器适配器所提供灼最高分辫率为l024×768.而目前广泛使用
的应用软件(如汉字系统和字处理系统)和一些具有绘图叻能的高级编程语言(如 TURBOBASIC)仅用纠640×480一l6色,即所谓VGA适配器的
模式.即使,些具
有一定权威性的技术手册【ll和通弼测试软件(如QAPLUS)也限于标准的显示模式,
这无疑是对这一硬件资源的浪费.
图形分辩率的高低,直接影响着图形输出的质k.特菇j铿对于篇幅要求较大的图形
硬拷贝,在低分辩率的情况下,斜角接近于零处的吐线量哦显的阶梯形状,而料角接近
于\2处的曲线则出现问断现象.尽管可以通过对打印机直接编强控制压缩图形的输
出尺寸,以改善上述曲线的输出质量,但这不是解决问题的权本办法,况且打印机的分
辩率也是有限的,且随打印机而并.
直接控制和操作显示功能(veciioserYices)只有低级语畜,我们用汇编语官开发 出应用最高分辩率的图形功能程序,使用效果很好.
2程序流程图框与清单
本程序的设计程框图如图1.骖示.
?程序一经启动,首先设置中断允许标志,使用』瓮运行过程中因发现题或想中 断运行能立即终止.
?读取并保存当前显示模式,以便在程序执行完后能恢复到执行前的显示状态. 收稿日期l993一O7—2O
?陕西省教委自然科学研究资助项目
器
适
,f,__
一
.
塑当前豆
):''《孑
39
图2.分辨率640×350(EGA)
图3.分辨率640>'-480(VGA)
图4.分辨率1024x768
4l
?屏幕提示用户输入要显示和打印的图形的数据文件路径乞.这个文件是事先准备
好的,它可以是用任何手段建立的AscII数据文件,如用高级语言计算出的函数的纵撰
坐标值;实验中或工程中测量到的数据,或专门设计出的某利图案的数据. ?打开输入的数据文件,如成功,则继续,否则显示出相应错误信息后退出. ?设置屏幕显示模式为1024×768的图形方式(roode5EHN62H,视具体适配器 砸异.).
?然后以循环方式,读出一个点的ASCII数据一转换ASCII数据为十六进制数 相应位置写象素呻再重复,直至读完文件,最后关闭.
?如果用户对此满意,则让其自动在打印机上输出,否则按Ctrl+Break中断. 图2,图3,和图4,是在不同分辩率下作的样图.
本程序用Mic1osoftMASMV.5.O编译,所用显示适配器捏.TRIDENTVGA 8900(c),在配有该适配器的均能使旺,程序清单见文后.
3讨论
该程序设计有如下特点.1.用汇编语言编程,代码短,占用内存少,执行速度佚 2.数据文件可以是以任何形式产生的ASCII码数据文件,如用高级语言计算的或用
WORDSTAR,EDLIN编辑的数据文件,尽管占盘空间较大,且需转换,但却方便 了用户,适用面广.3.该程序在BIOS级上编楞,具有较好的肃容性,只要是同类型 钓VGA适配器和相应的BIOS,都可以运行此程序.4.采用结构化方法编君,便于维 护和以后的修改,且容易和其他高级语言接口,行成集成化软件,使数据的讨算,.编辑
做图和打印溶为一体,这也是我们下一部的工作.其不足之处在于,没有该模式下的显
示汉字库,故不能打印汉字,即使英文数字,其硬拷贝小的也不能使用.
,这含 VGA适配器的使用,使逼真的图象和高质量的图形输出已成为可能,目前工作刚开始不久【?,预计很快将进入实际应用.
程序清单如下.
't—segsegreentstack db40dup(stack,) st—segends
datareasegment nambllffdb39
db?
db40duP(?)
dat'I:ffdboffofhduP(?)
introdb0dh,0sh,,Enter
FilePathnamel$, emessdbsErrorl$, timesdb10
disply—mdb5fh
ndW00
m—buffdwoff00h cO1.rOV#dw00. x—cOantdw00
Y—cOLtntdw00
P—paradb1Bh,5Ah,00.O五
P—crdb0dh
P—crlfdb0dh,0ah P—Ifsetdblbh,2bh,01 p—cOLtntdb00
dat—d1abeldword…
毒2
da一wdwO0,O0
dataeaends
zreadsegment
mainprocfar ,~.ssumecS:zrear:,ds:da:?e Starl
,
pushds
subax,ax
puShaX
mO,,ax,datajea
:S,az h-~lo,7,
NEWFILE:
*nOvdx,Offsetint
1210I,ah,ch int21h.-
IMovdx,0ffs文nambu ,nova',oah' _nt2l.?
?calls-din—P
mo'vbI,Ln~一:m:3aff+! '
g10V'oh0
mo(aambuff+bx+2),0
,
?
openl''
mo,dz,0ffsctnambnff+2
ca!l0——file——P
mO7si,az
fllO~,b,si
again.
mOwdx,dat—w【. f)
mOVCX,O0' ca!lm—point-p-一
aewbaff, mOvcx,m—buff' mOrbx.si. 1220dx,offsetdathuf,f
mOvah.3fh iat21h
jcerFol
cmPax?0
jeprint
movdi,ax mov[dat—w+1),.矗z 埘0V丑,一1
/220bx,offsetdatbaff
trunsforml add11,1
cmpdi,n
??
jea譬aln
lo7aI,(bx) 0ah,'0
j11cbz
C!_.a!,30h j.o:nma
cmpal,3.5hc :
3gcO:nma'
s扳bal,3O啦
xchax,cO1,i"O' muItimes'- hddcO1.r0wax一
j咀Pttansform COmlma;
cmpal,2ch
jnereturn
础orcl,c0l—ro
皿.矿cOI—I'Ow,O0 j-nptran.sform returnl
cropal,odh.. jetransform cropal,lah. jeprint'
modx,cO1-roar,一
movcOl?row-.O0..
moyah,0ch
mOval,08'
jnt1Oh
jmptsartSform
一…?h-
…一?………-''一
exit:
ret
error.
暇od===,
rovab,
int21h
43
Oesete2SS eh
ca!lbinibex ret
printI
n]Ovbx,sl L2~OVah,3.11
int21h
I:allso芷nd-p mOa,0
callp—scr—P一; 【{a:?e11a;=) P—s(2Y一'O: cld
ca11sO1nd,r1 c已ls一一
begai~l
cal!s—pITIO! r0a—pixI
calIrea—pix—p
i丑cx—cOarlt cmpal,00 jzp一(j0
I|lORl,O2 p—dotl
allpri,dot
cropx—cottnt:02d
jnerea—pix
IIIOyx—CO1/n,t{) incy—COUrtt cropy—COll~t,O768
jeexit
callPri—-crlf j瞄obegain ret
ndP p—sc}一e
—-
1r—fp~-ocnear
{r.o,x,03 l.bx,P—lfset ll-,p1l
1Oval,【bx)
Oah,00
IOydx,00 inl7l1
incbx
1oop!OOpl s一1—pe-.'qdP s—P,O,{一0PrO0near
oex,04
1ax,P—para
IOOp::
,..一1,(x)
'jlJf.00' .O,{:tOO intl7l
incbx
tooploop2 s—prnod—PndP rea—pix—pproc 羽Obh,00
InOV.ah,0dh lzOcx—COUnt 1i3oydx—c01113t intlOn
r
rca—Pix—PendP pd.,pr0c
!,
n1ovdx,OO trlOVah,00 int】7h
ret
pri—dotendP p—homeproc movdx,O0 l~rlOva1,odh moorah,O0 int17h
fet
P—homeendP pfi—Cl"1fproc rtlOvdx,O0 moltcx,2
leabx,P—CI"1f loop3I
r=lova1,(bx】
IZlOltah,O0 IrnOtrdx,O0 int17h
inebx
looploop3 ret
IJri--CI"Ifendp
fair1ilaexprocnear
movcl,4
moorch,0
rOtatel
11"10bx,C'r mov"a1,b1 andal,O[h 点dda1,30k cropa1,3ah j1printit iLdctal,71, pfintitl
movdl,a
I1"1Oftah.2 int9.1h
eccz
jnzrotate ret
binihexendp SOUlldPprocnea,lt
nlovdx,OOffh i11a1,61h anda1,1llllloob
.j一0I
XOlral,O2 OUt61h,al InOvcx,offfh de1ayI
1oopde1ay decdx
cropdx,0000 i"ej—c
托t
sOUrld??PendP trn—-point?-Pproc
IIlOVah,42h mova1,O0
i11t9-1h
ret
trn?-point—-Pendp s—dm—pproc
molta1,disply—m
tnovah,O0 int1oh
ret
?一dm—pendp 0一fi1e—
oc molta1,O0 moltah,3dh iI1t21h
ret
0一file—Pendp
zreadends
e11dstat
45
参考文献
【1)《TheProgrammertSPCSourecebook》(美),ThornHogal1.着,计
帆译,清华大学出版吐,北京,1990.6.
(2]计算机世界》,No.2,l992,十种超级VGA板简介,T.J.Byers.
(3]《微型机开发与应用》,No.3,1992,TVGA高分辨率鳊程技术,李钧
(4]《计算机世界》,TVGA图形卡的编程,李富
(5]计算机岳界》TVGA256色编程技术,张鹏,刘宏程
(6]《计算机应用研究,》,No.2,l993,TVGA256色图象截取技术,季军杰
THEDEVELOPMENTAND
APPLICATIONOFHIGHESTRESOLUTION
GRAPHICSFUNCTIONOFVGAADAPTER
ZhongLal1.xiangLiuSheng—chun
(PhysicsDeprtmollt)
AbstractInthisPaper,wehavedevelopedallaPplicational programmforgraphisbyUSingAsseb1eLanguage,thusthe highestreso1IltiollgraphicsfullCtionofVGAadapterhasbeen applied,andthequalltityofcomputergraphcsoutputhasbsell improvedfurther.
keYwordsVGAadapter.reSOlUtion,asSamblet,Vidomode, B10S.