操作系统实验一

更新时间:2023-11-04 19:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 系统功能调用

【实验目的】

1.熟悉操作系统的系统功能调用。

2.掌握用C语言实现系统功能调用的方法和步骤。

3.掌握利用10H号功能调用(BIOS的显示I/O功能调用)来实现对屏幕的操作与控制。

【预习内容】

1.预习DOS、BIOS系统功能调用。

2.预习C语言实现系统功能调用的方法。

【实验内容】

1.在屏幕的指定区域内显示字符串。(必做题) 定位子程序:

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;

int86(0x10,&r,&r); }

在指定位置写参数:

void writech(int x , int y, char ch ,int attr) { union REGS r; locate(x ,y); r.h.ah=9; r.h.bh=0; r.h.al=ch; r.h.bl=attr r.x.cx=1;

int86(0x10,&r,&r); }

2.在屏幕的指定区域内画框,在框内显示字符串。(提高题)

屏幕画框可以用制表符来画。其主要方法是不断调用writech函数,在指定区域周围显示制表符,从而勾勒出一个窗口的轮廓。

1

制表符 ┏ ┓ ┗ ┛ ┃ ━ ASCII码 218 191 192 217 179 196

显示屏通常划分为行和列的一个二维系统,适配器就在行列组成的网格位置上显示字符。 屏幕坐标图如下所示: 9 10 11 12 35 36 Y 9 10 A B C D Z 11

X

3. 在屏幕的指定区域内动画显示字符串。(附加题)

2

打开代码

编译

动态

3

【实验报告】

1.列出调试通过程序的清单,并加注释。

2.给出必要的程序设计思路和方法(或列出流程图)。 3.总结上机调试过程中所遇到的问题和解决方法及感想。

上机过程中,遇到了一些问题。比如坐标值没有找准确,导致所要画的方框没有画在正确的位置;方框之间没有连接上等。经过仔细地画图、比较、修改,最终显示出了所需要的结果。还有一些语句错误。这些问题有的请教同学,在同学的帮助下,将程序调通。特别是最后的动态显示,请教了同学才写出来的。

感想…… #include int86(SCR,&r,&r); #include } #include #include void writech(int x,int y,char ch,int #define SCR 0x10 attrib) void cls(void) { { union REGS r; union REGS r; locate(x,y); r.h.ah=6; r.h.ah=9; r.h.al=0; r.h.bh=0; r.h.cl=0; r.h.al=ch; r.h.ch=0; r.h.bl=attrib; r.h.dh=24; r.x.cx=1; r.h.dl=79; int86(SCR,&r,&r); r.h.bh=7; } int86(SCR,&r,&r); int main() } { int i,x=10,y=10; void locate(int x,int y) while(1){ { cls(); union REGS r; writech(9,9,218,2); r.h.ah=2; writech(11,9,192,2); r.h.dh=x; writech(9,36,191,2); r.h.dl=y; writech(11,36,217,2); r.h.bh=0;

4

writech(10,9,179,2);writech(10,36,179,2);//yaoao

for(i=0;i<26;i++) {

writech(x-1,y+i,196,2);

writech(x+1,y+i,196,2);} for(i=0;i<26;i++) {

writech(x,y+i,65+i,7); delay(100); } }

getch();

return(0); }

5

本文来源:https://www.bwwdw.com/article/4gb2.html

Top