资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,实验一 系统功能调用,1.,在屏幕的指定区域内显示字符串。(必做题),2.,在屏幕的指定区域内画框,在框内显示字符串。(提高题),3,在屏幕的指定区域内画框并以动画形式显示字符串。(选做题),int86,(,0X10,&r,&r,)函数,对,BIOS,调用的标准函数,其中,0X10,是,BIOS,调用类型号(相当于,INT n,调用的中断类型号,n,),是,10H,号中断调用,是一个,显示,I/O,调用,。,第一个,&r,是指向,联合类型,REGS,的指针,用于接收调用的功能号及其它一些指定的,入口参数,,以便传给相应寄存器。,第二个,&r,是指向联合类型,REGS,的指针,用于接收功能调用后的返回值,即,出口参数,。,dos.h,中,REGS,定义如下,:,union REGS,struct,WORDREGS x;,struct,BYTEREGS h;,struct,WORDREGS,unsigned,int,ax,bx,cx,dx,si,di,cflag,flags,;,;,Struct,BYTEREGS,unsigned,int,al,ah,bl,bh,cl,ch,dl,dh,;,10H,号中断调用所包含的功能调用,(,部分,),:,AH,功能调用,00H,置显示方式,01H,置光标类型,02H,置光标位置,06H,当前显示页上滚,07H,当前显示页下滚,09H,写字符和属性,02H,功能调用:,入口参数:,AH,02H,DH,光标的行位置(行数),,0,行是顶行,,24,行是底行。,DL,光标的列位置(列数),,0,列是最左边一列。,BH,光标显示页数,,40,列方式,可用,0,到,7,,,80,列方式,,可用,0,到,3,。,出口参数:无,06H,号功能调用:,入口参数:,AH,06H,AL,指明滚动的文本行数。如放置,0,,则整个窗口为空白。,CH,指明窗口左上角的行位置(从,0,到,24,)。,CL,指明窗口左上角的列位置(从,0,到,79,,,80,列)。,DH,指明窗口右下角的行位置(从,0,到,24,)。,DL,指明窗口右下角的列位置(从,0,到,79,,,80,列)。,BH,指明加到窗口底部的空行,显示属性,。,出口参数:屏幕上窗口适当地上滚。,对于彩色,/,图形适配器,属性字节如下所示:,位 说 明,7,置“,1”,用于字符闪烁,置“,0”,字符不闪烁。,6-4,背景色。可用的是:,6 5 4,颜色,0 0 0,黑,0 0 1,蓝,0 1 0,绿,0 1 1,青,1 0 0,红,1 0 1,绛,1 1 0,褐,1 1 1,浅灰,3,前景字符的亮度,置“,1”,高亮度,置“,0”,正常亮度。,2-0,前景色。可使用的彩色与背景色相同。,例,:,设置字符闪烁、背景色是红色、字,符高亮度、字符颜色兰色。,BH=11001001,09H,号功能调用:,入口参数:,AH 09H,BH,在文本方式中,此寄存器指明正在写的显示页。在,40,列方式中,可以用,0,到,7,页,在,80,列方式中,可用,0,到,3,页。在图形方式中总是,0,。,AL,放要写字符的,ASCII,码。,BL,在文本方式中,为写字符的属性。,CX,将字符和属性写到屏幕上的次数。,出口参数:一个字符或多个字符显示在屏幕上。,定位子程序:,void,locate(int,x,int,y),union REGS r;,r.h.ah,=2;,/*,子功能号*,/,r.h.dh,=x;,/*,定位点坐标*,/,r.h.dl,=y;,r.h.bh,=0;,/*80,列方式*,/,int86(0 x10,/*,系统功能调用*,/,清屏子程序:,void,cls(void,),union REGS r;,r.h.ah,=6;/*,子功能号*,/,r.h.al,=0;/*,整个窗口为空白,*,/,r.h.ch,=0;/*,左上角坐标*,/,r.h.cl,=0;,r.h.dh,=24;/*,右下角坐标*,/,r.h.dl,=79;,r.h.bh,=7;/*7(000000111),表示背景色黑色,前景字,符灰色,*/,int86(0 x10,在指定位置写参数子函数:,void,writech(int,x,int,y,char,ch,int,attr,),union REGS r;,locate(x,y);,/*,调用定位子函数*,/,r.h.ah,=9;,/*,子功能号*,/,r.h.bh,=0;,/*80,列方式*,/,r.h.al,=,ch,;,/*,要写字符的,ASCII,码*,/,r.h.bl,=,attr,;,/*,要写字符属性*,/,r.x.cx,=1;/*,将字符和属性写到屏幕上的次数。,int86(0 x10,主函数,(,参考,):,void main(),int,i,x,=10,y=10;,cls,();,for(i,=0;i26;i+),writech(x,y+i,65+i,7);,getch,();,
展开阅读全文