私は特定のプログラムをエミュレートするエミュレータに取り組んでいます。私はCOMファイルとソースファイルを持っています。 CL
レジスタに017B
を相殺して、私はそれがDS
(データ・セグメント)から値を移動することを意味知っているデータセグメントに何をロードする必要がありますか?
mov cl, [017B] 8A 0E 7B 01
:今私は、この特定の命令を(これは私がDOSBoxをデバッガで見ることができるものである)をエミュレートする必要があります。しかし、何がDS
にあるはずですか?私がエミュレートしようとしている
プログラム(ソースファイル):
.386p
.model tiny
code segment use16
assume cs:code
org 100h
begin:
mov ax, 3h
int 10h
...
mov cl, byte ptr ds:[keylen] <-- This is the instruction I'm talking about
...
int 20h
keylen db 13
key1 db 20h, 3ah, 23h, 32h, 0bh, 3dh, 1fh, 13h, 4ch, 19h, 05h, 07h, 07h, 00h
key2 db 00h, 0ah, 11h, 08h, 03h, 1dh, 1ah, 08h, 04h, 2ch, 3fh, 33h, 1ah, 41h
key3 db 01h, 00h, 08h, 0bh, 0ch, 07h, 0ah, 05h, 02h, 09h, 06h, 03h, 04h, 00h
code ends
end begin
私は私のプログラムを起動したとき、私はDS
に何を保存する必要がありますか?私が今やっていると思うのは、設定することですDS = CS = ES = SS = SPECIFIC_ADDRESS
100Hの組織とCOMプログラム(小さなモデルで')CS = DS = ES = SS =コントロールをコントロールに転送する前に、プログラムで使用しているPSPのセグメント。これは、COMにのみ適用されます(EXEではない) –
これはあなたにいくつかの使用の可能性があります:http://www.fysnet.net/yourhelp.htm(さらに、PSPの構造、コードが 'cs:0000- cs:00FF 'の範囲)。 – Ped7g
@MichaelPetch知っている、それはCOMプログラムです – Sk1X1