2013-02-17 157 views
0

我的目標是簡單地說,使用Int 13h來讀取我的磁盤參數。使用Int 13H讀取磁盤參數

我知道這不能直接在Windows中完成,因爲它本質上是攔截BIOS調用。

到目前爲止,我的想法是,我可以在0x7C00h的內存位置重寫代碼,並利用Int 19h進行熱重啓,這將跳轉到現在被覆蓋的0:7C00h,然後我就可以讀取磁盤參數。

我在正確的軌道上嗎?我覺得(我希望)我至少指向正確的方向。

在此先感謝。

+0

爲什麼你使用int 0x13如果你在Windows上?只要看一下ATA_IDENTIFY到ATA設備,你就會得到更好的信息。 – SecurityMatt 2013-02-17 02:51:49

+0

這是一個賦值的一部分,它指定我編寫一個實模式程序並使用int 13h,這就是爲什麼我要問我是否在正確的軌道上,而不是代碼。我相當新,所以我不是100%的最佳方法,沒有指定Windows,我只是認爲這可能是一個合理的方向。 – Ramrod 2013-02-17 03:17:43

+0

你必須從Windows內部完成嗎? – SecurityMatt 2013-02-17 03:30:38

回答

2

做熱重啓沒有太大意義。

如果您的程序在Windows下運行,您將無法啓動熱重啓,並且地址0x7c00不太可能映射到物理地址0x7c00處的物理內存,這要歸功於Windows。

如果您的程序在DOS下運行,爲什麼不直接使用int 13h而無需重新啓動?

如果您確實想在乾淨的系統上運行您的代碼(無DOS或Windows),請編寫引導扇區,製作可引導軟盤或CD或閃存盤並從中啓動。