ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:538.09KB ,
资源ID:7325390      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7325390.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(30天自制操作系统期末实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、30天自制操作系统期末实验报告(此文档为word格式,下载后您可任意编辑修改!)浙江工业大学计算机学院计算机实验班1101 章鹏 实验报告名称:创新实践(30天自制操作系统)实验目标:根据教材从零开始使用C与汇编语言编写一个简单的操作系统,实现操作系统的基本功能。实验背景:为了让学生对操作系统的底层有更清晰的了解,选取了一本名为30天自制操作系统的书作为两学期创新实践课程的教材,并根据该教材一步步从零开始完成每个人自己特色的简易版操作系统,锻炼学生动手能力,提高学生对操作系统的知识理解。实验进度:第28天成果界面截图:截图1:操作系统初始化界面截图2:运行命令获取操作系统基本信息截图2.1 M

2、em:读取系统内存与存储空间截图2.2 Dir:读取当前系统允许使用的应用程序截图2.3 Exit:关闭当前console命令窗截图2.4 应用程序名:在当前窗口下运行应用程序截图2.5 Start+应用程序名:新建一个console命令窗并运行程序截图2.6 Ncst(no console start):无新建窗口运行程序截图2.7 Shift+f2:新建一个空的console窗口截图2.8 F11:将下一层的console窗口切至最顶层截图2.9 Tab:将当前工作区间(键盘)在窗口间循环截图3应用程序截图:截图3.1 a(显示字符A):截图3.2 Winhelowinhelo2winhe

3、lo3:截图3.3 Color:截图3.4 Color2:截图3.5 Hello3:截图3.6 Hello4与hello5:截图3.7 Lines:画线程序截图3.8 Noddle:计时程序(三分钟)截图3.9 Sosu:显示1-1000内的素数截图3.10 Sosu3:显示内的素数截图3.11 Star1:显示一个点截图3.12 Stars:显示多个点截图3.13 Walk:使用方向键控制点的移动源代码截取:操作系统代码:;void set_palette(int start, int end, unsigned char *rgb) int i, eflags; eflags = io_l

4、oad_eflags(); io_cli(); io_out8(0x03c8, start); for (i = start; i = end; i+) io_out8(0x03c9, rgb0 4); io_out8(0x03c9, rgb1 4); io_out8(0x03c9, rgb2 4); rgb += 3; io_store_eflags(eflags); return;void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1) int x, y; f

5、or (y = y0; y = y1; y+) for (x = x0; x = x1; x+) vramy * xsize + x = c; return;void init_screen8(char *vram, int x, int y) 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,

6、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(v

7、ram, 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;void putfont8(char *v

8、ram, int xsize, int x, int y, char c, char *font) int i; char *p, d * data *; for (i = 0; i 16; i+) p = vram + (y + i) * xsize + x; d = fonti; if (d & 0x80) != 0) p0 = c; if (d & 0x40) != 0) p1 = c; if (d & 0x20) != 0) p2 = c; if (d & 0x10) != 0) p3 = c; if (d & 0x08) != 0) p4 = c; if (d & 0x04) !=

9、0) p5 = c; if (d & 0x02) != 0) p6 = c; if (d & 0x01) != 0) p7 = c; return;void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s) extern char ;void init_mouse_cursor8(char *mouse, char bc) int x, y; for (y = 0; y 16; y+) for (x = 0; x 16; x+) if (cursoryx = *) mousey * 16 +

10、 x = COL8_000000; if (cursoryx = 0) mousey * 16 + x = COL8_FFFFFF; if (cursoryx = .) mousey * 16 + x = bc; return;void putblock8_8(char *vram, int vxsize, int pxsize, int pysize, int px0, int py0, char *buf, int bxsize) int x, y; for (y = 0; y pysize; y+) for (x = 0; x pxsize; x+) vram(py0 + y) * vx

11、size + (px0 + x) = bufy * bxsize + x; return;操作系统api(以api002输出单个字符为例):api002.nasFORMAT WCOFFINSTRSET i486pBITS 32FILE api002.nas GLOBAL _api_putstr0SECTION .text_api_putstr0: ; void api_putstr0(char *s); PUSH EBX MOV EDX,2 MOV EBX,ESP+8 ; s INT 0x40 POP EBX RET应用程序(以stars为例):stars.c#include apilib.(

12、void) char *buf; int win,i,x,y; api_initmalloc(); buf=api_malloc(150*100); win=api_openwin(bufstars); api_boxfilwin(win,0); for(i=0;i50;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_toolsINCPATH = .z_tools be

13、epdown.:.z_toolsfdimg0at.tek wbinimg src: len:512 from:0 to:0 copy from:beepdown. : $(MAKE) $(MAKE) -C .z_toolsqemuinstall : $(MAKE) $(MAKE) -C color $(MAKE) -C color2 $(MAKE) _full : $(MAKE) full $(COPY) $(MAKE) -C .z_toolsqemuinstall_full : $(MAKE) full $(IMGTOL) w a: _os : $(MAKE) -C clean :src_o

14、nly : $(MAKE) clean -$(DEL) _full : $(MAKE) -C $(MAKE) -C apilib clean $(MAKE) -C a clean $(MAKE) -C $(MAKE) -C $(MAKE) -C $(MAKE) -C winhelo clean $(MAKE) -C winhelo2 clean $(MAKE) -C winhelo3 clean $(MAKE) -C star1 clean $(MAKE) -C stars clean $(MAKE) -C stars2 clean $(MAKE) -C lines clean $(MAKE) -C walk clean $(MAKE) -C noodle clean $(MAKE) -C beepdown clean $(MAKE) -C color clean $(MAKE) -C color2 cleansrc_only_full : $(MAKE) -C src_only $(MAKE) -C color src_only $(MAKE) -C color2 src_only -$(DEL) _full -$(DEL) haribote.img

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

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