Я работаю над эмулятором, который должен эмулировать конкретную программу. У меня есть COM-файл и исходный файл. Теперь мне нужно эмулировать эту конкретную инструкцию (это то, что я вижу в отладчике DosBox):
mov cl, [017B] 8A 0E 7B 01
Я знаю, что это означает переместить значение из DS
(сегмент данных) со смещением 017B
в регистр CL
. Но что должно быть в 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
cs:0000-cs:00FF
). - person Ped7g   schedule 25.12.2017