30天自制操作系统日志第5天.pdf
《30天自制操作系统日志第5天.pdf》由会员分享,可在线阅读,更多相关《30天自制操作系统日志第5天.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统实验日志学号实验日期520姓名实验项目甘昆禄专业年级班级智能 1601第 5 天:结构体、文字显示与 GDT/IDT 初始化一、实验主要内容一、实验主要内容1、接收启动信息和结构体在上一章中,xsize 和 ysize 的值都是直接赋值为 320*200,但实际上我们需要从先前保存下来的值中去。即:不然的话,当画面模式改变时系统就不能正确运行。所以试着用指针取得图像模式:void HariMain(void)char*vram;int xsize,ysize;short*binfo_scrnx,*binfo_scrny;int*binfo_vram;init_palette();/*设
2、定调色板*/binfo_scrnx=(short*)0 x0ff4;binfo_scrny=(short*)0 x0ff6;binfo_vram=(int*)0 x0ff8;xsize=*binfo_scrnx;ysize=*binfo_scrny;vram=(char*)*binfo_vram;for(;)io_hlt();/*執行 naskfunc 里的_io_hlt*/诶这样是不是说就可以改变画面模式了于是天真的我:保存运行一下,以为画面会显示坐标在左上角的 320*200,结果发现画面显示错误,forgetabout it。诶然后发现结构体里这个在汇编里没有定义,可能作者以后讲哦先说结
3、构体可以看做结构体是将一堆变量集中声明,然后作为新的变量用于其他场合。结构体的运用:(1)先声明结构体:如上图(2)后定义结构体变量:struct BOOTINFO abc;或者定义结构体指针变量:structBOOTINFO*binfo;这里 binfo 表示指针变量后应该首先给指针赋值,可写成:Binfo=(struct BOOTINFP*)0 x0ff0;加上(struct BOOTINFP*)是对数字进行强制类型转换,告诉编译器这个数字是一个 BOOTINFO 类型的指针变量。info 指针指向地址 0 x0ff0 是结构体的起始地址,结构体内的地址则依次按其类型增加。所以可以不用直接
4、使用内存地址,而是使用*binfo来表示这个内存地址上 12 个字节的结构体。在表示结构体内变量的时候,使用“.”表示:xsize=(*binfo).scrnx;因为 binfo 是指向结构体地址的指针变量,它表示其内部变量的形式很多,可以用箭头表示:Xsieze=binfo-scrnx,或者用 binfo-scrnx 直接代替 xsize2、显示字符终于到写字了,诶果然有定义好的哪个字母让具体哪个像素指定颜色,比如A的显示如下:用 8x16 的长方形像素点阵来表示,8 位是一个字节,1 个字符是 16 个字节,然后将字体主句写入主程序:static char font_A16=0 x00,0
5、 x18,0 x18,0 x18,0 x18,0 x24,0 x24,0 x24,0 x24,0 x7e,0 x42,0 x42,0 x42,0 xe7,0 x00,0 x00;程序里就会有 A 的信息了,当然放在程序里总是不好的,后面就有改了。显示字符的函数是这样:void putfont8(char*vram,int xsize,int x,int y,char c,char*font)int i;char*p,d;/*data*/for(i=0;i vram,binfo-scrnx,30,30,COL8_FFFFFF,HariboteOS.);for(;)io_hlt();/*執行 na
6、skfunc 里的_io_hlt*/这里调用了三次,后面两次先显示的黑色,再在不同但临近坐标显示一次白色,达到立体效果。效果如下:然后这里作者说,要自制操作系统,现在就能自由显示变量很重要。因为这里没用debug 可以用,如果出现错误就会很麻烦,就迫切需要知道变量有没有弄错。这里用到一个 sprintf 函数。sprintf 函数和 printf 函数的区别在于它不是按指定格式输出,只是将输出内容作为字符串卸载内存中。sprintf 函数的使用办法是:sprintf(地址,格式,值,值,值,)这里的地址指定所生成字符串的存放地址。格式基本上只是单纯的字符串,如果有%的这类标记,就置换成后面的值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 30 自制 操作系统 日志
限制150内