Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Data ends. Организация интерфейса между процедурами, расположенными в разных модулях

Fix db 12

PUBLIC fix

Организация интерфейса между процедурами, расположенными в разных модулях

Cseg2 ends

Subr endp

Ret

Subr proc far

Cseg1 ends

Start endp

Ret

Call dword ptr subadr

Start proc far

Dseg ends

Subadr dd subr

Косвенный дальний вызов процедуры

Mov bx, offset subr

End start

Subr endp

Ret

Subr proc near

Start endp

 

При косвенном запуске программы возможны другие варианты,

например:

 

call word ptr bx; адрес процедуры в регистре bx

dseg segment ‘data’

cseg1 segment ‘code’

……

……….

cseg2 segment ‘code’

Используются директивы: EXTRN, PUBLIC, GLOBAL

 

Директива EXTRN объявляет некоторое имя внешним по отношению к данному модулю.

Это имя должно быть объявлено в другом модуле директивой PUBLIC.

 

EXTRN имя:тип [, имя:тип],[имя:тип] ….

Имя – идентификатор, определенный в другом модуле.

В качестве идентификаторов используются:

o имена переменных, определенные директивами db, dw, dd и т.д.,

o имена процедур,

o имена констант.

 

Для переменных тип может быть: byte, word, dword, pword, fword, qword, tbyte.

Тип процедуры far (дальняя) или near (ближняя ).

 

Если имя – константа, то тип в директиве – abs.

Директива PUBLIC объявляетимена, определенные в этом модуле, видимыми из других модулей.

 

PUBLIC имя [,имя] [,имя]…

Директива GLOBAL, используемая применительно к передаваемому объекту, интерпретируется как директива PUBLIC, а используемая применительно к принимаемому объекту – как EXTRN

Директива GLOBAL имеет формат директивы EXTRN

GLOBAL имя:тип [, имя:тип]

 

Пример программы, использующей данные директивы:

;модуль1

GLOBAL res: byte, add: far

data segment 'data'; сегмент данных

code segment 'code'

start:

…….

……..

mov al, res; res в другом модуле

call far ptr add; запускается программа add

<== предыдущая лекция | следующая лекция ==>
Mov ds,ax | Возврат результата из процедуры
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 299; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.