资源描述:
《操作系统原理实验指导书(使用).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一系统功能调用【实验目的】1.熟悉操作系统的系统功能调用。2.掌握用C语言实现系统功能调用的方法和步骤。3.掌握利用10H号功能调用(BIOS的显示I/O功能调用)来实现对屏幕的操作与控制。【预习内容】1.预习DOS、BIOS系统功能调用。2.预习C语言实现系统功能调用的方法。【实验内容】1.在屏幕的指定区域内显示字符串。(必做题)2.在屏幕的指定区域内画框,在框内显示字符串。(提高题)3.在屏幕的指定区域内动画显示字符串。(附加题)【实验报告】1.列出调试通过程序的清单,并加注释。2.给出必要的程序设计思路和方法(或列出流程图)。3.总结
2、上机调试过程中所遇到的问题和解决方法及感想。【实验相关资料】int86(0X10,&r,&r)函数:对BIOS调用的标准函数其中0X10是BIOS调用类型号(相当于INTn调用的中断类型号n),是10H号中断调用,是一个显示I/O调用。BIOS借助此中断产生的功能调用控制PC机屏幕上的文本和图形。通过给AH寄存器设置适当的值选择想要的功能调用,然后发中断10H。第一个&r是指向联合类型REGS的指针,用于接收调用的功能号及其它一些指定的入口参数,以便传给相应寄存器。第二个&r是指向联合类型REGS的指针,用于接收功能调用后的返回值,即出口参数。
3、在dos.h中REGS定义如下:structWORDREGS{unsignedintax,bx,cx,dx,si,di,cflag,flags;};structBYTEGEGS{unsignedintal,ah,bl,bh,cl,ch,dl,dh;}unionREGS{structWORDREGSx;structBYTEGEGSh;}10H号中断调用下所包含的部分功能调用:AH功能调用00H置显示方式01H置光标类型02H置光标位置06H当前显示页上滚07H当前显示页下滚09H写字符和属性02H功能调用:入口参数:AH=02HDH光标的行位置(
4、行数),0行是顶行,24行是底行。DL光标的列位置(列数),0列是最左边一列。BH光标显示页数,40列方式,可用0到7,80列方式,可用0到3。出口参数:无06H号功能调用:入口参数:AH=06HAL指明滚动的文本行数。如放置‘0’,则整个窗口为空白。CH指明窗口左上角的行位置(从0到24)。CL指明窗口左上角的列位置(从0到79,80列)。DH指明窗口右下角的行位置(从0到24)。DL指明窗口右下角的列位置(从0到79,80列)。BH指明加到窗口底部的空行显示属性。对于彩色/图形适配器,属性字节如下所示:位说明7置“1”用于字符闪烁,置“0”
5、字符不闪烁。6-4背景色。可用的是:654颜色000黑001蓝010绿011青100红101绛110褐111浅灰3前景字符的亮度,置“1”高亮度,置“0”正常亮度。2-0前景色。可使用的彩色与背景色相同。出口参数:屏幕上窗口适当地上滚。09H号功能调用:入口参数:AH=09HBH在文本方式中,此寄存器指明正在写的显示页。在40列方式中,可以用0到7页,在80列方式中,可用0到3页。在图形方式中总是0。AL放要写字符的ASCII码。BL在文本方式中,为写字符的属性。CX将字符和属性写到屏幕上的次数。出口参数:一个字符或多个字符显示在屏幕上。清屏子
6、程序:voidcls(void){unionREGSr;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表示黑色*/int86(0x10,&r,&r);/*系统功能调用*/}定位子程序:voidlocate(intx,inty){unionREGSr;r.h.ah=2;/*子功能号*/r.h.dh=x;/*定位点坐标*/r.h.dl=y;r.h.bh=0;int86(0x10,&r,&r);}在指定位置写参
7、数:voidwritech(intx,inty,charch,intattr){unionREGSr;locate(x,y);r.h.ah=9;r.h.bh=0;r.h.al=ch;r.h.bl=attrr.x.cx=1;int86(0x10,&r,&r);}屏幕画框可以用制表符来画。其主要方法是不断调用writech函数,在指定区域周围显示制表符,从而勾勒出一个窗口的轮廓。制表符ASCII码┏218┓191┗192┛217┃179━196内容一参考程序:#include#include#include8、ib.h>#defineSCR0x10voidcls(void){unionREGSr;r.h.ah=6;r.h.al=0;r.h.cl=0;r.h.