[第1天] 二进制代码和nasm

       终于有时间来做第一天的事了。第一天作者别出心裁,使用普通的二进制编辑器直接编写代码。作者目的是制作在FAT12格式的上运行的操作系统。编译出来后是一个Raw Disk Image,当然也可以直接在虚拟机上跑。

       二话不说,看代码。我比较懒惰,直接使用xxd输出作者原有系统的代码。然后稍微修改点字符,就当完成了。然后再xxd -r就行了。

       这里其实是手动写了个FAT12的磁盘文件系统。详细的FAT12见链接

       二进制编辑实在蛋疼,还要查ascii码表。所以作者马上升级,让我们使用nasm汇编。汇编比二进制不知道高到哪去了。下面是整个汇编程序。因为作者建议使用他的nask,然后可能与nasm不兼容,比如RESB中0x1fe-($-$$)要这么写。。编译一发,就能得到bootable的磁盘。在这里我就改了比较多的字符。详细代码见github

      有兴趣的可以仔细研究一下上面的代码代表的意思。不难,根据详细的FAT12,就能知道其中的含义。其中前3个bytes中的第2个貌似只有jump到空的区域就没有问题,这里3e~4e都行。

firstday

链接:

1. fat