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运行的免费旧版本(您可能需要在网站上注册它) –