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