Ich arbeite an Emulator, der spezifische Programm emuliert werden sollte. Ich habe COM-Datei und Quelldatei. Jetzt muss ich diese spezielle Anweisung emulieren (das ist, was ich in DosBox Debugger sehen):Was soll ich in das Datensegment laden?
mov cl, [017B] 8A 0E 7B 01
Ich weiß, es bedeutet Wert von DS
(Datensegment) zu bewegen mit 017B
in CL
Register versetzt. Aber was sollte in DS
sein?
Programm Ich versuche (Quelldatei) zu emulieren:
.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
Was soll ich in DS
sparen, wenn ich mein Programm starten? Nur denke, ich mache jetzt ist zu setzen DS = CS = ES = SS = SPECIFIC_ADDRESS
Mit einem COM-Programm (winzige Modell mit einem org von 100h:
Eine andere Möglichkeit wäre, ') CS = DS = ES = SS = das Segment des PSP, das Sie für das Programm verwenden, bevor Sie die Steuerung dorthin übertragen. Dies gilt nur für COM (nicht EXE) –
Dies kann von Nutzen für Sie sein: http://www.fysnet.net/yourhelp.htm (plus vielleicht PSP-Struktur, wenn der Code etwas von 'cs holt: 0000- cs: 00FF' Bereich). – Ped7g
@MichaelPetch Ich weiß, es ist COM-Programm – Sk1X1