.;
.;
kill_motor:;
pushdx;
movdx,#0x3f2;
xoral,al;
outb;
popdx;
ret;
.;
.;
首先利用DX指定要输出的port,而03f2这个port则是代表了软盘控制器(floppydis;
kcontroller)的所在,再利用outb将资料送出,而我们送出的资料,当然就是归零过的;
AL了 。如此一来,软盘的马达就停止了 。;
第六步;
接下来做的事是检查rootdevice,之后就仿照一开始的方法,利用indirectjump跳;
至刚刚已读入的setup部份,程序码如下:;
.;
.;
jmpi0,SETYPSEG;
其中SETUPSEG已在先前定义为0x9020,所以CS:IP会设定为9020:0000,即跳到绝对;
地址为0x90200,也就是setup的起点 。而bootsect也大功告成了 。;
到此为止,内存的内容应该如下图所示:;
比较;
把大家所熟知的MSDOS与linux的开机部份做个粗浅的比较,MSDOS由位于磁盘上boo;
tsector的boot程序负责把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel--MSDOS.;
SYS载入内存的重责大任 。而linux则是由位于bootsector的bootsect程序负责把setup及;
linux的kernel载入内存中,再将控制权交给setup 。;
至于setup.S,就留到下一次再来讨论了 。;
推荐阅读
- Linux 网管 123 --- 第10章. 升级 Linux 及其他应用软体 -2.不使
- Linux命令Man解释:groupadd :建立新组
- 关于隧道的名人名言
- 8 Linux命令Man解释:PPPD :点对点daemon协议
- linux磁盘管理命令--dd
- linux磁盘管理命令--fdformat
- Linux 指令篇:DOS相容指令--mlabel
- Linux下如何删除Windows分区
- Linux 指令篇:磁片工具--mkdosfs
- Linux 指令篇:磁片工具--mformat