1
我試着寫下面的程序來轉儲interrupt vector table使用的FreeDOS在虛擬機中。我知道DEBUG
將允許我編寫彙編程序,但是如何創建以下IVTDUMP.COM文件並保存並運行它?如何編寫內聯彙編中的FreeDOS
注意:如果可能的話,我想直接從FreeDOS嘗試。我嘗試使用EDIT
命令,但它出錯了,我很確定我錯過了一些東西。
for
(
address=IDT_255_ADDR;
address>=IDT_001_ADDR;
address=address-IDT_VECTOR_SZ,vector--
)
{
printf("%03d %08p ",vector,address);
__asm
{
PUSH ES
MOV AX,0
MOV ES,AX
MOV BX,address
MOV AX,ES:[BX]
MOV ipAddr,AX
INC BX
INC BX
MOV AX,ES:[BX]
MOV csAddr,AX
POP ES
};
printf("[CS:IP]=[%04X,%04X]\n",csAddr,ipAddr);
}
上面貼的代碼是從一本書我試圖請繼續。感謝您澄清從調試命名和寫入文件的過程。我真正的問題是如何讓上面的代碼運行。我只能猜測它的C,我需要下載一個編譯器,然後從DOS運行它。對此有何見解? – Ccorock
如果你無法使用'EDIT'工作,你會如何編寫這段代碼?我會先解決這個問題,然後下載一個編譯器(和庫)或彙編器......或者兩者兼而有之。 –
你的書不推薦編譯器嗎?在dos的日子裏,Borland是一個流行的編譯器製造商,它確實使用__asm語法來處理你的示例,所以它可能與你的書相兼容。可以在http://cc.embarcadero.com/item/25636上找到以freedos運行的免費舊版本(您可能需要在網站上註冊它) –