读盘时
CH、CL、DH、DL分别是柱面号、扇区号、磁头号、驱动器号
MOV AX,0x0820
MOV ES, AX
MOV CH,0 ; 柱面0
MOV DH,0 ; 磁头0
MOV CL,2 ; 扇区2
MOV AH,0x02 ; AH=0x02 : 读盘
MOV AL,1 ; 1个扇区
MOV BX,0
MOV DL,0x00 ; A驱动器
INT 0x13 ; 调用磁盘BIOS
JC error
加入新的sys文件后,需要修改原本的Makefile文件
# 工具路径和命令定义
NASK = nask.exe
EDIMG = edimg.exe
MAKE = make.exe -r
# 默认目标
default :
$(MAKE) img
# 1. 编译引导扇区 ipl.nas -> ipl.bin
ipl.bin : ipl.nas
$(NASK) ipl.nas ipl.bin ipl.lst
# 2. 编译内核文件 haribote.nas -> haribote.sys
haribote.sys : haribote.nas
$(NASK) haribote.nas haribote.sys haribote.lst
# 3. 制作包含 ipl.bin 和 haribote.sys 的镜像文件
# 注意:这里使用了 copy 指令将 haribote.sys 存入镜像的文件系统中
haribote.img : ipl.bin haribote.sys fdimg0at.tek
$(EDIMG) imgin:fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 \
copy from:haribote.sys to:@: \
imgout:haribote.img
# 命令别名
img :
$(MAKE) haribote.img
# 运行虚拟机(使用新生成的 haribote.img)
run :
$(MAKE) img
qemu-system-i386 -drive file=haribote.img,format=raw,if=floppy
# 清理
clean :
-del ipl.bin
-del ipl.lst
-del haribote.sys
-del haribote.lst
-del haribote.img