通过汇编语言将磁盘的启动扇区读入,启动扇区会启动读入程序,将指定的几个扇区内部的内容读入计算机的内存,可以通过编写系列的汇编代码标识出磁盘扇区是否读进内存
通过nask.exe可以将nas文件输出sys文件,再通过ENDIMG合并到IMG文件中
C------->gas------->nas--------->obj--------->bim---------->hrb-------->sys--------->img
这是C语言翻译成机器指令的完整过程,成熟的编译器不会显示出中间文件,主要是方便用户使用
GLOBAL io_hlt定义一个全局变量,可以被C语言引用的链接,函数前面的必不可少
[SECTION .text]后面接上需要定义的函数内容
_io_hlt: ; void io_hlt(void);
HLT
RET
该函数构造还有待商榷,无法确定其中一些字段的作用,日后再加整理
附上makefile(30天自制操作系统):
从中可以看出编译过程中所使用到的程序以及文件类型的转换
TOOLPATH = ../z_tools/
INCPATH = ../z_tools/haribote/
MAKE = (TOOLPATH)nask.exe
CC1 = (INCPATH) -Os -Wall -quiet
GAS2NASK = (TOOLPATH)obj2bim.exe
BIM2HRB = (TOOLPATH)haribote/haribote.rul
EDIMG = (TOOLPATH)imgtol.com
COPY = copy
DEL = del
�f�t�H���g����
default :
$(MAKE) img
�t�@�C�������K��
ipl10.bin : ipl10.nas Makefile
$(NASK) ipl10.nas ipl10.bin ipl10.lst
asmhead.bin : asmhead.nas Makefile
$(NASK) asmhead.nas asmhead.bin asmhead.lst
bootpack.gas : bootpack.c Makefile
$(CC1) -o bootpack.gas bootpack.c
bootpack.nas : bootpack.gas Makefile
$(GAS2NASK) bootpack.gas bootpack.nas
bootpack.obj : bootpack.nas Makefile
$(NASK) bootpack.nas bootpack.obj bootpack.lst
bootpack.bim : bootpack.obj Makefile
(RULEFILE) out:bootpack.bim stack:3136k map:bootpack.map
bootpack.obj
3MB+64KB=3136KB
bootpack.hrb : bootpack.bim Makefile
$(BIM2HRB) bootpack.bim bootpack.hrb 0
haribote.sys : asmhead.bin bootpack.hrb Makefile
copy /B asmhead.bin+bootpack.hrb haribote.sys
haribote.img : ipl10.bin haribote.sys Makefile
$(EDIMG) imgin:../z_tools/fdimg0at.tek
wbinimg src:ipl10.bin len:512 from:0 to:0
copy from:haribote.sys to:@:
imgout:haribote.img
�R�}���h
img :
$(MAKE) haribote.img
run :
(COPY) haribote.img ..\z_tools\qemu\fdimage0.bin
$(MAKE) -C ../z_tools/qemu
install :
(IMGTOL) w a: haribote.img
clean :
-(DEL) *.lst
-(DEL) *.obj
-(DEL) bootpack.map
-(DEL) bootpack.hrb
-$(DEL) haribote.sys
src_only :
(DEL) haribote.img