Меню сайта

Урок 105. Команды INCLUDE

Оператор ассемблера INCLUDE осуществляетвставку текста из другого
— — — файла в транслируемую программу. ОператорINCLUDE особенно удобен в
— — — случае работы с набором макрокоманд,например, макрокомандами
— — — сопроцессора 8087. Все командысопроцессора 8087 представлены
— — — макрокомандами. Весь такой набормакрокоманд или какое-то его под-
— — — множемтво вам приходится включать в любуютранслируемую программу,
— — — где применяется сопроцессор 8087. Однакокопировать эти макроко-
— — — манды в каждый исходный файл неудобно.Кроме того, они занимают
— — — столько места, что исходные файлы быстрозаполнили бы всю вашу дис-
— — — кету, если бы вы попытались копироватьмакрокоманды в каждый файл.

— — — — — Эта проблема решается в языке ассемблера спомощью оператора
— — — INCLUDE. Оператор

— — — — — ICLUDE — — — — — имяфайла

— — — — — считывает указанный файл и включает егокак часть в ассемблируемую
— — — программу. Ассемблер помещает нужный файлв то место, где
— — — расположен оператор INCLUDE. ОператорINCLUDE естественно
— — — использовать по отношению к библиотекаммакрокоманд, например,
— — — макрокоманд сопроцессора 8087. Выпомещаете оператор INCLUDE в
— — — начало программы — и любая командасопроцессора 8087 в вашей
— — — программе будет ассемблироватьсяправильно.
— — — — — Аналогично, вы можете использоватьоператор INCLUDE для
— — — подключения других частей программы. Есливы захотите разбить вашу
— — — программу на меньшие исходные файлы, ноассемблировать ее как один
— — — файл, то главный исходный файл можетсостоять из операторов INCLUDE
— — — для всех вспомогательных исходных файлов.Однако как было показано
— — — в гл.5, ассемблирование небольших модулейи связывание их с помощью
— — — программы LINK в большинстве случаевпредпочтительнее.

— — — — — Другой вариант для использования оператораINCLUDE — структура
— — -данных. Вы можете использовать некоторую структуру данных в
— — — нескольких программах. Определение этойструктуры данных можно
— — — хранить в виде отдельного файла, и спомощью оператора INCLUDE
— — — обращаться к ней из любой программы, гдеони требуются. Далее в
— — — этой главе мы рассмотрим способы, спомощью которых программа может
— — — задавать и использовать структуры данных.

— — — — — Если включаемый файл является файломмакроопределений, то не
— — — имеет смысла, чтобы он появлялся вассемблерном листинге каждый раз
— — — при трансляции программы. Чтобы исключитьмакроопределения из
— — — листинга, но сохранить их для генерациипрограммного кода, вы
— — — можете воспользоваться условным операторомIF1. Последовательность

— — — — — IF1
— — — — — INCLUDE — — — — 87MAC.LIB
— — — — — ENDM

— — — — — приводит к включению в программу файла87MAC.LIB при первом
— — — проходе ассемблера. Именно во времяпервого прохода ассемблер
— — — осуществляет расширение всех макрокоманддо их окончательной формы.
— — — При втором проходе макроопределенияассемблеру не нужны. Это
— — — ускоряет процесс ассемблирования, так какво время второго прохода
— — — файл макрокоманд не считывается. Ассемблерне печатает файл
— — — макрокоманд, так как листинговый файлформируется при втором
— — — проходе. На Фиг. 6.11 показаноиспользование в программе

— — — — — — — — — — -Microsoft (R) Macro Assembler Version 5.00 — — — — — — — — — — — — 1/1/80 01:21:40
— — — — — — — — — — -Фиг. 6.11 Вставка макроопределений для 8087 — — — — — — — — — — — Page — — — — 1-1

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — PAGE — — -,132
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — TITLE — -Фиг. 6.11 Вставка макроопределений для 8087

— — — — — — — — — — — 0000 — — — — — — — — — — — — — — — — — — — CODE — — -SEGMENT
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ASSUME -CS:CODE,DS:CODE

— — — — — — — — — — — 000
0 — ???? — — — — — — — — — — — — — TWO_BYTE — — — — — — — DW — — — — — ?

— — — — — — — — — — — 0002 — 9B DB E0 — — — — — — — — — — — — — — — — — — — — — FENI
— — — — — — — — — — — 0005 — 9B DE 3E 0000 R — — — — — — — — — — — — — — FIDIVR -TWO_BYTE
— — — — — — — — — — — 000A — 9B D9 C1 — — — — — — — — — — — — — — — — — — — — — FLD

— — — — — — — — — — — 000D — — — — — — — — — — — — — — — — — — — CODE — — -ENDS
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — END

— — — — — — — — — — -Фиг. 6.11 Вставка макроопределений для 8087

— — — последовательности IF1 … INCLUDE …ENDM для макрокоманд
— — — сопроцессора 8087. Приведены как исходный,так и листинговый файлы
— — -данной программы. Ассемблер правильно обрабатывает команды
— — — сопроцессора 8087, опуская печатьопределений соответствующих
— — — макрокоманд.

Категория: Программирование на Ассемблере | Дата: 20.03.13

Меню раздела
Блок