1

仮想マシンで FreeDOS を使用して割り込みベクトル テーブルをダンプする次のプログラムを作成しようとしています。アセンブリ プログラムを作成できることはわかってい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);
}
4

1 に答える 1

1

for、address、printf などはアセンブリの一部ではありません。これを実際のアセンブリ コードに書き直すか、使用するマクロとアセンブラを freedos 環境にコピーする必要があります。

freedos に含まれている debug を使用する場合は、a コマンドを使用してアセンブリ命令の記述を開始し、n コマンドを使用して名前を付け、w コマンドを使用してコードをファイルに書き込みます。

C:\debug
-a
06BC:0100 int 20
06BC:0102
-n ivtdump.com
-rcx 2
-w
Writing 0002 bytes.
-q

C:\

このサンプル プログラムは、int 20 でのみプログラムを終了します (rcx の後の 2 は、ディスクに書き込むプログラムの長さを示します)。

于 2013-07-12T09:58:05.677 に答える