摘要: 点阵字库字母Y对应bit值字母A对应bit值00000000000000000000000000000000MMMM01100110M00010000MMMM01100110MMM00111000MMMM01100110MMMM01101100MMMM01100110MMMM11000110MMMM... 阅读全文
posted @ 2015-11-10 13:09 ya20151015 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 颜色的生成 前面我们使用了一个值0x7ff,将此值填入显卡地址后显示的是一个蓝色的点,那么这个值是怎么来的呢? 色彩是由红、绿、蓝三色按不同配比而组成的. 不同色彩的值经过一定形式组合后,会产生各种不同的色彩。 三种颜色的值从0到255,代表三色的强弱,分别对应值0x0 - 0xff。每种颜色是8位,三种颜色就占24位,但是我们的图形模式是16位颜色,其中r:g:b是按5:6:5占位,共16位... 阅读全文
posted @ 2015-11-07 13:42 ya20151015 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 使用C语言编写内核到目前为止,我们可以使用32位编程了,但是用汇编编程还是一件比较枯燥、比较痛苦的事,下一步我们想用C语言编写32位系统,那么怎么办?办法就是在kernel.asm使用call语句直接调用C程序。具体过程如下:汇编文件kernel.asm生成中间文件kernel.asmo。C文件ke... 阅读全文
posted @ 2015-11-06 21:31 ya20151015 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 图形模式图形模式可以为我们显示的图片,显示汉字,为我们带来色彩艳丽、内容丰富的界面。首先介绍设置显卡模式中断:int 10h查看文档找到下面资料:Int 10/AX=4F02h - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE这时是设置为SuperVGA模... 阅读全文
posted @ 2015-11-06 21:29 ya20151015 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 用32位指令编写程序上面用补充机器码的方式编写32位指令实在是麻烦,我们可以把16位与32位指令分离,分别编写16位与32位程序,这样就方便多了。kernelloader跳转到32位的kernel.asm程序修改kernelloader.asm,源码如下: [BITS16] jmp maingdt_... 阅读全文
posted @ 2015-11-06 21:27 ya20151015 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 实模式与保护模式互相跳转从这里开始我们就要告别实模式,实现保护模式了。首先了解一些相关知识。段描述符的具体格式段描述符长8个字节64位。重点说明: 空描述符: ; 这是保护模式要求保留的,第一个段必须是空段,空描述符的64位全是0 dd 0 dd 0 对于代码段字节5: db 100110... 阅读全文
posted @ 2015-11-06 21:23 ya20151015 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 关于磁盘的数据存储和定位 这是一个磁盘示意图: 一个磁盘有两面。0面和1面。 磁道共80个,编号由外向里(0号-79号)。 扇区(Sector)是磁盘存储的最小单位,一个扇区有512字节,一个磁道有18个扇区(1号-18号)。 为方便存取文件必须对扇区进行编号,这编号称为软盘地址。软盘地址由磁头号、磁道号、扇区号三部分组成。 (1)磁头号。0面对应0号磁头,1面对应1号磁头。 (... 阅读全文
posted @ 2015-11-06 15:29 ya20151015 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 使用makefile文件那么用批命令来编译程序是不是就够用了?还不够,这里我们要使用批命令+makefile文件方法。首先介绍如何写makefile。打开notepad++写入以下内容:#######################声明要编译的所有组成,这里的ya是本工程名称,可以取任何名字,这里就... 阅读全文
posted @ 2015-11-06 15:16 ya20151015 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 想把自己的一些体会写出来,希望起到抛砖引玉的作用,能对大家有一些帮助。 可以显示图片及汉字,可以连接网络 阅读全文
posted @ 2015-11-05 22:13 ya20151015 阅读(272) 评论(0) 推荐(0) 编辑