在上面我们将2扇区的内容已经加载到了0x08200的内存中,其实在第二扇区我们存放我们的setup代码,我们会跳转到0x08200处执行我们的代码, 接下来我们就写我们的setup,并将setup写到我们的boot.img中 ...好了开始工作..
添加setup.s
很简单调用了int 10h的0x0a号功能,是什么来着 想想,对了 就是显示字符,具体的用法,请参考前面的文章, setup.s准备好了,接下来就是修改我们的Makefile
修改Makefile
Makefile中就是多编译了一个setup.bin 并将setup.bin写到软盘的512字节之后,就是将setup.bin写到了第二扇区
好了,该准备的准备好了,那么接下来的问题来了,我们怎么将CS:IP指向到setup中执行呢, 大家想想… 用jmpi吗。。但nasm不能用此命令会报错的,我想段间进行跳转下而已嘛 OK,我们其实模拟了函数的返回。
修改boot.s 进行跳转
在boot.s中添加代码入上, 当我们执行ret的时候,很happy的 cs:0x0820 IP:0 那么cs:ip=0x08200 cs:ip会到此处执行代码,我们已经将第二扇区的代码加载到了此处,那么接下来就是setup来接管执行任务了,通过bios加载的第一扇区已经完成了任务,后面我们代码的大小就不用受512字节控制了,解放喽…….
结果查看
我们可以看到cs:ip已经到我么的setup中执行代码了