0

次の方法で遠方の呼び出しを実行することは、議会で合法であると見なされますか?

    call farCall           ;call an example function that jumps to memory

    farCall:
    jmp 0x1111:2222        ;example address in memory

0x1111:2222でロードされたプログラム

    ;do some stuff
    ret                    ;return to where the call was made, NOT THE JUMP
                            TO THIS ADDRESS

これは32ビットのプロテクトモードではなく、16ビットのリアルモードであることに注意してください(すでに質問があることはわかっています)

4

1 に答える 1

2

コードは、呼び出し中に完全な遠方差出人アドレス(オフセットのみ、CSセグメントは保存しない)をスタックに保存しないため、0x1111:2222のサブルーチンはretf、近くを使用して呼び出し元に戻ることはできませんret

なぜ単純ではないのですcall 0x1111:2222か?

push cs+call (near)またはpush cs+を使用して、遠方呼び出し命令のスタック効果をシミュレートすることもできますpush offset

于 2012-08-24T07:18:52.050 に答える