В отладчике можно менять и значения регистров по ходу выполнения программы. Сделаем следующий финт ушами – загрузим программу hello4.exe снова в отладчик и выполним все команды до первой команды int 21h. К этому моменту в регистр DX будет помещено смещение поля данных msg, в данном случае 0000. Изменим значение регистра DX на 5. Теперь выполним команду int 21h и DOS выведет на экран строку, начало которой расположено на 5 байте сегмента данных (помним нумерация начинается с нуля). В нашем случае смещение 5 указывает на буку е. То есть будет выведена фраза ' ello World *=-'. Медитируем, просветляемся :)
Любая программа, загруженная в память состоит из двух отдельных блоков: собственно программы и ее окружения, которое располагается обычно перед программой, хотя не обязательно вплотную к ней.
Окружение представляет собой область памяти, в которой в виде символьных строк записаны значения переменных, называемых переменными окружения, например: path, set и т.д.
Сегментный адрес окружения загружаемой программы записывается ОС в PSP со смещением 2Ch от его начала. Чтобы увидеть все это дело, снова загружаем hello4.exe в отладчик открываем окно CPU, переходим в окно дампа памяти и даем команду Goto и параметр ей 2C, жамкаем Enter и видим:
Комментариев нет:
Отправить комментарий