30天自制操作系统期末实验报告.docx

上传人:b****6 文档编号:7325390 上传时间:2023-01-23 格式:DOCX 页数:21 大小:538.09KB
下载 相关 举报
30天自制操作系统期末实验报告.docx_第1页
第1页 / 共21页
30天自制操作系统期末实验报告.docx_第2页
第2页 / 共21页
30天自制操作系统期末实验报告.docx_第3页
第3页 / 共21页
30天自制操作系统期末实验报告.docx_第4页
第4页 / 共21页
30天自制操作系统期末实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

30天自制操作系统期末实验报告.docx

《30天自制操作系统期末实验报告.docx》由会员分享,可在线阅读,更多相关《30天自制操作系统期末实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

30天自制操作系统期末实验报告.docx

30天自制操作系统期末实验报告

(此文档为word格式,下载后您可任意编辑修改!

浙江工业大学计算机学院

计算机实验班1101章鹏

实验报告名称:

创新实践(30天自制操作系统)

实验目标:

根据教材从零开始使用C与汇编语言编写一个简单的操作系统,实现操作系统的基本功能。

实验背景:

为了让学生对操作系统的底层有更清晰的了解,选取了一本名为《30天自制操作系统》的书作为两学期创新实践课程的教材,并根据该教材一步步从零开始完成每个人自己特色的简易版操作系统,锻炼学生动手能力,提高学生对操作系统的知识理解。

实验进度:

第28天

成果界面截图:

截图1:

操作系统初始化界面

截图2:

运行命令获取操作系统基本信息

截图2.1Mem:

读取系统内存与存储空间

截图2.2Dir:

读取当前系统允许使用的应用程序

截图2.3Exit:

关闭当前console命令窗

截图2.4应用程序名:

在当前窗口下运行应用程序

截图2.5Start+应用程序名:

新建一个console命令窗并运行程序

截图2.6Ncst(noconsolestart):

无新建窗口运行程序

截图2.7Shift+f2:

新建一个空的console窗口

截图2.8F11:

将下一层的console窗口切至最顶层

截图2.9Tab:

将当前工作区间(键盘)在窗口间循环

截图3应用程序截图:

截图3.1a(显示字符A):

截图3.2Winhelowinhelo2winhelo3:

截图3.3Color:

截图3.4Color2:

截图3.5Hello3:

截图3.6Hello4与hello5:

截图3.7Lines:

画线程序

截图3.8Noddle:

计时程序(三分钟)

截图3.9Sosu:

显示1-1000内的素数

截图3.10Sosu3:

显示内的素数

截图3.11Star1:

显示一个点

截图3.12Stars:

显示多个点

截图3.13Walk:

使用方向键控制点的移动

源代码截取:

操作系统代码:

;

}

voidset_palette(intstart,intend,unsignedchar*rgb)

{

inti,eflags;

eflags=io_load_eflags();

io_cli();

io_out8(0x03c8,start);

for(i=start;i<=end;i++){

io_out8(0x03c9,rgb[0]4);

io_out8(0x03c9,rgb[1]4);

io_out8(0x03c9,rgb[2]4);

rgb+=3;

}

io_store_eflags(eflags);

return;

}

voidboxfill8(unsignedchar*vram,intxsize,unsignedcharc,intx0,inty0,intx1,inty1)

{

intx,y;

for(y=y0;y<=y1;y++){

for(x=x0;x<=x1;x++)

vram[y*xsize+x]=c;

}

return;

}

voidinit_screen8(char*vram,intx,inty)

{

boxfill8(vram,x,COL8_0,0,x-1,y-29);

boxfill8(vram,x,COL8_C6C6C6,0,y-28,x-1,y-28);

boxfill8(vram,x,COL8_FFFFFF,0,y-27,x-1,y-27);

boxfill8(vram,x,COL8_C6C6C6,0,y-26,x-1,y-1);

boxfill8(vram,x,COL8_FFFFFF,3,y-24,59,y-24);

boxfill8(vram,x,COL8_FFFFFF,2,y-24,2,y-4);

boxfill8(vram,x,COL8_3,y-4,59,y-4);

boxfill8(vram,x,COL8_59,y-23,59,y-5);

boxfill8(vram,x,COL8_2,y-3,59,y-3);

boxfill8(vram,x,COL8_60,y-24,60,y-3);

boxfill8(vram,x,COL8_x-47,y-24,x-4,y-24);

boxfill8(vram,x,COL8_x-47,y-23,x-47,y-4);

boxfill8(vram,x,COL8_FFFFFF,x-47,y-3,x-4,y-3);

boxfill8(vram,x,COL8_FFFFFF,x-3,y-24,x-3,y-3);

return;

}

voidputfont8(char*vram,intxsize,intx,inty,charc,char*font)

{

inti;

char*p,d*data*;

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

p=vram+(y+i)*xsize+x;

d=font[i];

if((d&0x80)!

=0){p[0]=c;}

if((d&0x40)!

=0){p[1]=c;}

if((d&0x20)!

=0){p[2]=c;}

if((d&0x10)!

=0){p[3]=c;}

if((d&0x08)!

=0){p[4]=c;}

if((d&0x04)!

=0){p[5]=c;}

if((d&0x02)!

=0){p[6]=c;}

if((d&0x01)!

=0){p[7]=c;}

}

return;

}

voidputfonts8_asc(char*vram,intxsize,intx,inty,charc,unsignedchar*s)

{

externchar;

}

voidinit_mouse_cursor8(char*mouse,charbc)

{

intx,y;

for(y=0;y<16;y++){

for(x=0;x<16;x++){

if(cursor[y][x]=='*'){

mouse[y*16+x]=COL8_000000;

}

if(cursor[y][x]=='0'){

mouse[y*16+x]=COL8_FFFFFF;

}

if(cursor[y][x]=='.'){

mouse[y*16+x]=bc;

}

}

}

return;

}

voidputblock8_8(char*vram,intvxsize,intpxsize,

intpysize,intpx0,intpy0,char*buf,intbxsize)

{

intx,y;

for(y=0;y

for(x=0;x

vram[(py0+y)*vxsize+(px0+x)]=buf[y*bxsize+x];

}

}

return;

}

操作系统api(以api002’输出单个字符’为例):

api002.nas

[FORMAT"WCOFF"]

[INSTRSET"i486p"]

[BITS32]

[FILE"api002.nas"]

GLOBAL_api_putstr0

[SECTION.text]

_api_putstr0:

;voidapi_putstr0(char*s);

PUSHEBX

MOVEDX,2

MOVEBX,[ESP+8];s

INT0x40

POPEBX

RET

应用程序(以stars为例):

stars.c

#include"apilib.(void)

{

char*buf;

intwin,i,x,y;

api_initmalloc();

buf=api_malloc(150*100);

win=api_openwin(buf"stars");

api_boxfilwin(win,0);

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

x=(rand()%137)+6;

y=(rand()%67)+26;

api_point(win,x,y,3);

}

for(;;){

if(api_getkey

(1)==0x0a){

break;

}

}

api_end();

}

操作系统Makefile文件:

TOOLPATH=..z_tools

INCPATH=..z_toolsbeepdown.:

..z_toolsfdimg0at.tek\

wbinimgsrc:

len:

512from:

0to:

0\

copyfrom:

beepdown.:

$(MAKE)

$(MAKE)-C..z_toolsqemu

install:

$(MAKE)

$(MAKE)-Ccolor

$(MAKE)-Ccolor2

$(MAKE)_full:

$(MAKE)full

$(COPY)

$(MAKE)-C..z_toolsqemu

install_full:

$(MAKE)full

$(IMGTOL)wa:

_os:

$(MAKE)-C

clean:

src_only:

$(MAKE)clean

-$(DEL)_full:

$(MAKE)-C

$(MAKE)-Capilibclean

$(MAKE)-Caclean

$(MAKE)-C

$(MAKE)-C

$(MAKE)-C

$(MAKE)-Cwinheloclean

$(MAKE)-Cwinhelo2clean

$(MAKE)-Cwinhelo3clean

$(MAKE)-Cstar1clean

$(MAKE)-Cstarsclean

$(MAKE)-Cstars2clean

$(MAKE)-Clinesclean

$(MAKE)-Cwalkclean

$(MAKE)-Cnoodleclean

$(MAKE)-Cbeepdownclean

$(MAKE)-Ccolorclean

$(MAKE)-Ccolor2clean

src_only_full:

$(MAKE)-Csrc_only

$(MAKE)-Ccolorsrc_only

$(MAKE)-Ccolor2src_only

-$(DEL)_full

-$(DEL)haribote.img

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1