在学习30天自制操作系统时,遇到一个问题就是:
$(EDIMG) imgin:../z_tools/fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 \
copy from:haribote.sys to:@: \
imgout:haribote.img
书上说是制作镜像文件,但是没有非常清楚的说明白。
弄清楚这个问题,首先需要将FAT12文件系统弄清楚,
FAT12文件系统分为四个部分,【引导扇区】、【FAT文件分配表1和2】、【根目录区】、【用户数据区】
当设置最大的根目录为224时,其地址分别为:
0x0000 、0x0200 、0x1400、0x2600 、0x4200
也就是是说根目录的地址是0x2600
而实际文件存放数据的地址为0x4200
当存储一个文件时,实际上修改了三个地方的数据,【FAT文件分配表1和2】、【根目录区】、【用户数据区】
他们的含义可以从目录查看:
http://blog.sina.com.cn/s/blog_3edcf6b80100crz1.html
而根据实际的二进制文件也可以证实这点.
首先查看最后
0x4200的地址的数据,
该数据就是外部文件haribote.sys文件实际经过nask.exe 转换为二进制数据后的数据
而查看地址0x2600的数据
该数据首先是haribotesys的大写,没有点,接着是一段乱码,总共32个字节,至于原因可以从上文所给的链接
中找到。
再看FAT文件分配表1,