Использование директив extrn и public — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Использование директив extrn и public

2017-09-01 222
Использование директив extrn и public 0.00 из 5.00 0 оценок
Заказать работу

 

Эти директивы мы уже упоминалиcь ранее, когда рассматривали варианты взаимного расположения вызывающей программы и вызываемой процедуры. Ко всему сказанному добавим, что директивы extrn и public также можно использовать для обмена информацией между модулями. Назначение и форматы этих директив уже были рассмотрены, поэтому сейчас опишем только порядок их использования для обмена данными. Можно выделить несколько вариантов их применения:

1. оба модуля используют только сегмент данных вызывающей программы;

2. у каждого из модулей есть свой собственный сегмент данных;

3. использование атрибута комбинирования (объединения) сегментов private в директиве сегментации segment.

Рассмотрим эти варианты на примере программы, которая определяет в сегменте данных две символьные переменные и вызывает процедуру, выводящую эти символы на экран.

 

Вариант 1. Два модуля используют только сегмент данных вызывающей программы (листинги 14.6 и 14.7).

В этом случае не требуется переопределения сегмента данных в вызываемой процедуре. В листинге 14.6 в вызывающей программе определены две переменные, вывод на экран которых осуществляет вызываемая программа (листинг 14.7).

 

Листинг 14.6. Вариант 1 использования директив extrn и public (Модуль 1)

 

 

 

 

 

Листинг 14.7. Вариант 1 использования директив extm и public (Модуль 2)

 

 

 

Сборка программы из двух модулей для этого и следующих вариантов осуществляется аналогично листингам 13.4 и 13.5.

 

Вариант 2. У каждого из модулей есть свой собственный сегмент данных.

В этом случае для доступа к разделяемым переменным из другого модуля требуется переопределение сегмента данных в вызываемой процедуре (строки 17- 19 и 24-25 листинга 14.8).

 

Листинг 14.8. Вариант 2 использования директив extm и public

 

Вариант 2a. У каждого из модулей есть свой собственный сегмент данных (листинг 14.9).

 

Это несколько улучшенный вариант предыдущего примера, где мы использовали для адресации данных в разных сегментах данных один регистр ds. В этом случае для доступа к разделяемым переменным из другого модуля используется один из дополнительных сегментных регистров данных, к примеру es. Заметьте, что обращение к данным другого сегмента осуществляется с использованием префикса замены сегмента (строки 19 и 21).

 

Листинг 14.9. Вариант 2а использования директив extrn и public

 

 

Вариант 3. Использование атрибута комбинирования (объединения) сегментов public в директиве сегментации segment для сегментов данных модулей (листинги 14.10 и 14.11).

Данное значение атрибута комбинирования заставляет компоновщик объединить последовательно сегменты с одинаковыми именами. Все адреса и смещения будут вычисляться относительно начала этого нового сегмента. В этом случае не понадобится производить дополнительной настройки сегментных регистров (как было в двух предыдущих случаях).

 

Листинг 14.10. Вариант 3 использования директив extrn и public (Модуль 1)

 

 

Листинг 14.11. Вариант 3 использования директив extm и public (Модуль 2)

 


Поделиться с друзьями:

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.061 с.