《30天自制操作系统》学习笔记(三)

来源:互联网 发布:线路板工程设计软件 编辑:程序博客网 时间:2024/04/28 17:46
一、指针相关
     目的:达到效果 mov BYTE[i],    (i&0x0f)    使用C语言直接操作内存
     做法:int i;    char *p;    p=(char *) i;    *p=i&0x0f
         

二、显示控制
    (一)色号设定。采用调色板模式,有程序员自己指定颜色编号。
    (二)调色板使用步骤。禁止中断-->将想要设定的调色板号码写入0x03c8端口,接着按照RGB顺序写入0x03c9端口,继续设定接着写RGB-->开放中断
    (三)调色板使用步骤。操作0x03c9和0x03c8

三、绘制矩形(设定显示位置,颜色、区域大小)

四、关于调色板的思考
    在阅读本部分内容时,始终不明白在set_patette函数中在写入RGB时为什么要除以四
    后来综合了一下几个方面的内容来理解。
    1.调色板的对应关系。调色板只是表示颜色和编号的一个对应关系,以书中的例子来说,#000000所表示的黑色在调色板中对应就是第1号,所以在使用时只要指定编号是1,就会从调色板中读出对应的RGB值。
    2.一个颜色是由RGB值分量组成,在书中说是由6位十六进制数组成,但是在init_palette中每一个分量有8位,所以在写入时需要将位数右移以符合要求。

这里对set_patette函数的理解是我根据书中的叙述推测出来的,不一定是正确解答。如果有别的理解,欢迎留言交流,谢谢。

一点感想:
这本书讲到这里已经实现了boot和loader的功能,系统也能进入到保护模式中,但是从书中看没有明显的实模式向保护模式的跳转,在加载软盘内容到内存之后也没有显式的设置指令指针寄存器,也弱化了保护模式和实模式的讲解,从实际的开发流程出发,需要什么知识就讲什么知识,比较有阅读亲和力。但是在阅读之后是否还有必要去详细了解实模式和保护模式呢,会不会对后面的阅读带来困扰。
0 0
原创粉丝点击