<<
>>

DWORD, РWОRD, FWОRD, QWОRD и TBYTE;

ш если имя — это имя процедуры, то тип может принимать значения near или far; li если имя — это имя константы, то тип должен быть abs. Покажем принцип использования директив EXTRN и PUBLIC на схеме связи мо- дулей 1 и 2 (листинги 15.1 и 15.2).
Листинг 15.1. Модуль 1 ;Модуль 1 mаsm .model small .stack 256 . data . code mу_рrос_l proc mу_рrос_l епdр my_proc_2 proc mу_рrос_2 епdр ;объявляем процедуру mу_рrос_l видимой извне public mу_рrос_l start: mоv ах,@dаtа end start Листинг 15.2. Модуль 2 ;Модуль 2 mаsm .model small .stack 256 .data . code extrn mу_рrос_l ;объявляем процедуру rоу_рrос_l внешней start: mоv ах,@dаtа call mу_рrос_l ; вызов my_proc_l из модуля 1 end start Рассмотренная нами схема связи — это, фактически, связь по управлению. Но не менее важно организовать информационный обмен между модулями. Рассмот- рим основные способы организации такой связи. Информационный обмен между модулями (процедурами) предполагает обмен данными. В этой связи важно понимать значение терминов аргумент, переменная, константа.
Аргумент — это ссылка на некоторые данные, которые требуются для выпол- нения возложенных на модуль функций и размещенных вне этого модуля. По ана- логии с макрокомандами выделяют формальные и фактические аргументы. Исхо- дя из этого, формальный аргумент можно рассматривать не как непосредственные данные или их адрес, а как «тару» для действительных данных, которые будут по- ложены в нее с помощью фактического аргумента. Формальный аргумент можно рассматривать как элемент интерфейса модуля (конкретный вывод «скарта»), а фактический аргумент — это то, что фактически передается на место формаль- ного аргумента. Переменная — это нечто, размещенное в регистре или ячейке памяти, что мо- жет в дальнейшем подвергаться изменению. Константа — информационный объект простого типа, значение которого ни- когда не изменяется.
Таким образом, если некоторые данные в модуле могут подвергаться измене- нию, то это переменные. Если переменная находится за пределами модуля (процеду- ры) и должна быть как-то передана в него, то для модуля она является формальным аргументом. Значение переменной передается в модуль для замещения соответ- ствующего параметра при помощи фактического аргумента. После пояснения раз- личия понятий формального и фактического аргументов далее по тексту они бу- дут называться обобщенно — аргументы, а о каком виде аргументов идет речь, станет понятно по контексту. Если входные данные для модуля (аргументы) — переменные, то один и тот же модуль можно использовать многократно для разных наборов значений этих пере- менных. Но как организовать передачу значений переменных в модуль (процеду- ру)? При программировании на языке высокого уровня программист ограничен в выборе способов передачи аргументов теми рамками, которые для него оставля- ет компилятор. В языке ассемблера практически нет никаких ограничений на этот счет, и, фактически, решение проблемы передачи аргументов предоставлено про- граммисту. На практике используются следующие варианты передачи аргументов в мо- дуль (процедуру): ⅜⅛ через регистры; -⅜ через общую область памяти; . ⅜т через стек; * с помощью директив EXTRN и PUBLIC.
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме DWORD, РWОRD, FWОRD, QWОRD и TBYTE;:

  1. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  2. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  3. ПЕРЕДМОВА
  4. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
  5. Розділ І. Загальні положення цивільного права
  6. Тема 1. Поняття цивільного права. Предмет та метод, система цивільного права. Функції та принципи цивільного права
  7. Тема 2. Цивільне законодавство України
  8. Тема 3. Поняття, елементи та види цивільних правовідносин
  9. Тема 4. Здійснення цивільних прав і виконання обов’язків
  10. Тема 5. Захист цивільних прав та інтересів
  11. Тема 6. Об’єкти цивільних прав