日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

關于bootsect.S Linux開機過程的分析( 三 )


.;
.;
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,就留到下一次再來討論了 。;

推薦閱讀