史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   關於進入保護模式的程式問題 (http://forum.slime.com.tw/thread270569.html)

IUTHYIEORUGH 2012-06-30 11:56 PM

關於進入保護模式的程式問題
 
大家好,小弟我最近正在研究撰寫作業系統,但是在看書時遇到一些語法上的問題想請教一下各位有經驗的人,懇請不吝次教!。
(這裡用的組語是nasm的)

以下是在介紹如何進入保護模式的程式片段

[setion .gdt]
.
.
.
END of [setion .gdt]

書上說這是宣告一個名為GDT的資料結構,但是我的NASM書上並沒有提到類似用法它實際上有什麼功用?

還有,書上說如果選擇軟碟啟動電腦會檢查軟碟的0面0磁軌1扇區,且如果他是在0xaa55結束則bios認為它是一個開機磁區,這裡我想請教一下,0xaa55的意思是0000:aa55嗎?
aa55不是等於43605了嗎?這樣根本就不是512個位元組啊!?


補充:我本身只有masm組語的基礎,所以如果可以的話請解釋的詳細一點謝謝!

不知道 2012-07-11 08:50 PM

引用:

作者: 轉貼
先講講計算機的啟動,《L》一書中的原話:當PC的電源打開後,80x86結構的CPU將自動進入實模式,並從地址0xFFFF0開始自動執行程序代碼,這個地址通常是ROM-BIOS中的地址。 PC機的BIOS將執行某些系統的檢測,並在物理地址0處開始初始化中斷向量。此後,它將可啟動設備的第一個扇區(磁盤引導扇區,512字節)讀入內存地址0x7C00處,並跳轉到這個地方。另外所有的資料都指出引導扇區的第511字節必須是55H 第512字節必須是0AAH,因為BIOS要靠此來驗證是否引導扇區。這就是代碼最後加上“DW 0AA55H”的原因(經過我的測試在VM和VPC下不加0AA55H也能正常運行,bochs下會出錯,實機沒有測試)。

0xaa55並不是指位址,而是資料,aa55是十六進位碼,也就是不管之前的數值為何,最後511以及512磁區一定要是0AAH,BIOS才會當作是開機磁區
由於我已好久沒接觸MASM語言了,再加上那時只是十六位元,所以可能無法解釋給您知道(因為我也是茫茫然然)
如果您還有興趣,可參考本篇http://hi.baidu.com/liuqizealot/blog...57c1e716b.html

<參考>.


所有時間均為台北時間。現在的時間是 04:54 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1