Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Топ:
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Эти директивы мы уже упоминали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)
|
|
|
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!