自制操作系统, 构建自己的内核——利用C语言绘制操作系统图像界面

本文详细介绍了如何从头开始创建一个操作系统内核,包括编写引导程序boot.asm,创建内核c语言代码,如write_vga.c,设置全局描述符结构,并最终在Visualbox中运行自制的操作系统镜像文件。
摘要由CSDN通过智能技术生成

1.创建boot.asm内核引导程序

注意,所有创建的文件均放在同一目录下(.c文件的反汇编最好在linux环境下进行)

创建boot.asm文件,内容:

;内核引导程序
org  0x7c00;

LOAD_ADDR  EQU  0X9000

jmp  entry

entry:
    mov  ax, 0
    mov  ss, ax
    mov  ds, ax
    mov  es, ax
    mov  si, ax


readFloppy:
    mov          CH, 0        ;CH 用来存储柱面号
    mov          DH, 0        ;DH 用来存储磁头号
    mov          CL, 2        ;CL 用来存储扇区号

    mov          BX, LOAD_ADDR       ; ES:BX 数据存储缓冲区

    mov          AH, 0x02      ;  AH = 02 表示要做的是读盘操作
    mov          AL,  2        ; AL 表示要练习读取几个扇区
    mov          DL, 0         ;驱动器编号,一般我们只有一个软盘驱动器,所以写死   
                               ;为0
    INT          0x13          ;调用BIOS中断实现磁盘读取功能
   
    JC           fin

    jmp          LOAD_ADDR



fin:
    HLT
jmp  fin

times	510-$+$$ db 0
times	512 db 0
times	512 db 0

需要修改的部分(默认就行):

LOAD_ADDR的值,表示内核加载进内存的位置由kernel.asm里面org确定

readFloppy内mov          CH, 0 中的1的修改,表示内核存储的磁道数

readFloppy内mov          CL, 2 中的2的修改,表示内核存储的扇区数

readFloppy内mov          A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值