На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 2 / Передача данных через память программы Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Передача данных через память программы

Передача данных через память программы является одним из вариантов передачи данных через общую область памяти. Первым отличием является то, что данные располагаются в памяти программы (программном сегменте), а вторым - то, что местоположение данных определяется с помощью инструкции CALL, поскольку данные размещаются непосредственно после вызова.


Вызываемая программа выбирает адрес возврата из стека, используемого в качестве указателя на область памяти, складывает размер области памяти с адресом возврата и помещает его обратно в стек. При возврате управления в вызывающую программу адрес возврата располагается сразу же после области данных.


Это кажется удобным до тех пор, пока не примем во внимание, что микропроцессор 8086 специально спроектирован для разделения программы и областей данных. Передача данных через память программы требует, чтобы программный сегмент и сегмент данных были установлены в одно и то же значение, поэтому адрес возврата относится к программному сегменту.


Самой наихудшей проблемой способа передачи данных через память программы является то, что он требует манипуляции стека, в котором происходит то самое "сближение" для текущей самомодифицируемой программы. Одно правило, которое всегда необходимо помнить, состоит в том, чтобы никогда, никогда не модифицировать память программы! Если все же поддаться соблазну, то программа станет почти неподдающейся отладке без тщательного анализа логики программного обеспечения.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz