码迷,mamicode.com
首页 > 其他好文 > 详细

20天自制操作系统(三)

时间:2014-06-16 11:10:32      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

我们看\projects\03_day\harib00j中的文件

ipl10.nas: 相当于一个boot源文件,它使用int 0x13 ah=0x2加载某些扇区的文件(loader+kernel)到内存0x从c200中

asmhead.nas:相当于一个loader源文件,作用是

1.设置VGA为320x200x8bit,并把这些参数保存起来

bubuko.com,布布扣
        MOV        AL,0x13            ; VGA 320x200x8bit
        MOV        AH,0x00
        INT        0x10
        MOV        BYTE [VMODE],8    
        MOV        WORD [SCRNX],320
        MOV        WORD [SCRNY],200
        MOV        DWORD [VRAM],0x000a0000
bubuko.com,布布扣

2.int 0x16 ah=0x2 读取键盘标志并保存

        MOV        AH,0x02
        INT        0x16             ; keyboard BIOS
        MOV        [LEDS],AL

3.向0x21 0xa1写OCW1为0xff,屏蔽所有PIC中断

        MOV        AL,0xff
        OUT        0x21,AL
        NOP                        
        OUT        0xa1,AL
        CLI                        

4.开A20地址线

5.加载临时的GDT

6.CR0.PG=0 不开启分页 CR0.PE=1 开启保护模式

7.刷新CS,然后更新其余各个段寄存器

8.剩下的代码主要是移动kernel(也就是C语言生成的文件)到0x0000001b,然后跳到此处执行

kernel的入口是:

void HariMain(void)
{
fin:
    goto fin;
}

我们可以在kernel中调用用汇编写的文件,只要obj链接的时候链接一起就行

同时注意:C语言内函数声明,GLOAL函数导出,WCOFF文件格式,汇编内函数名前加下划线。

bubuko.com,布布扣
; BOOT_INFO
CYLS     EQU        0x0ff0            
LEDS     EQU        0x0ff1
VMODE    EQU        0x0ff2            
SCRNX    EQU        0x0ff4            
SCRNY    EQU        0x0ff6            
VRAM     EQU        0x0ff8            
bubuko.com,布布扣

20天自制操作系统(三),布布扣,bubuko.com

20天自制操作系统(三)

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/qiangua/p/3783474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!