首页 > 代码库 > 20天自制操作系统(三)
20天自制操作系统(三)
我们看\projects\03_day\harib00j中的文件
ipl10.nas: 相当于一个boot源文件,它使用int 0x13 ah=0x2加载某些扇区的文件(loader+kernel)到内存0x从c200中
asmhead.nas:相当于一个loader源文件,作用是
1.设置VGA为320x200x8bit,并把这些参数保存起来
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
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文件格式,汇编内函数名前加下划线。
; BOOT_INFO CYLS EQU 0x0ff0 LEDS EQU 0x0ff1 VMODE EQU 0x0ff2 SCRNX EQU 0x0ff4 SCRNY EQU 0x0ff6 VRAM EQU 0x0ff8
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。