КАТЕГОРИИ: Архитектура-(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
Дата добавления: 2014-01-04; Просмотров: 299; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |