0

わかりましたので、プログラムをフックする必要がありますが、これを行うには命令をコピーしますE8 <Pointer to Byte Array that contains other code>。これの問題は、アセンブルするCall 0x100E8 FD、E8 が呼び出し命令であることがわかっているため、FD が宛先であることがわかっているため、アセンブラは 0x100 から FD への宛先をどのように取得するのでしょうか? ありがとう、ブラッドリー - インセプト

4

2 に答える 2

3

jump/call オペコードは多数あり、そのうちのいくつかは相対的なものです。私はあなたが実際に持っていなかったと思いますE8 FDE8 FD FF. E8「16ビット相対呼び出し」のよう0x100で、デフォルトで命令が配置される場所です。

したがってcall 0x100、アドレス 0x100 に置くと、生成されたコードは「ジャンプ命令を実行し、実際の命令ポインタから -3 ジャンプする」です。これは、命令が読み取られた-3の位置からシフトが計算されるためです。これは、 0x103 の場合です。そのため、シフト if 、ビッグエンディアン forは 16 ビットです。E8 FD FFFD FF0xfffd-3

于 2012-01-01T19:08:45.393 に答える
0

http://wwwcsif.cs.ucdavis.edu/~davis/50/8086 Opcodes.htm
E8 は 16 ビットの相対呼び出しです。したがって、たとえばE8 00 10、PC + 0x1000 のアドレスを呼び出すことを意味します。

于 2012-01-01T19:09:01.540 に答える