【发布时间】:2013-07-12 01:30:51
【问题描述】:
我正在尝试编写以下程序以在虚拟机中使用 FreeDOS 转储 interrupt vector table。我知道DEBUG 可以让我写一个汇编程序,但是如何创建下面的IVTDUMP.COM 文件,保存并运行呢?
注意:如果可能,我想尝试直接从 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 assembly inline-assembly dos