Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основные директивы и команды препроцессора ассемблераСодержание книги
Поиск на нашем сайте
Директивы Основные директивы уже упоминались в предыдущих разделах. Перечислим их еще раз. Директива end Директива не имеет операндов и используется для обозначения конца программы. При ее отсутствии транслятор выдает сообщение об ошибке. Пример ее использование имеется в приведенных текстах программ. Директивы equ, teq Директивы используются для присваивания значений символам. Они имеют следующий формат <символ>] equ <выражение> [; комментарий] <символ>] teq <выражение> [; комментарий] Пример Z equ 5; символу z присваивается значение 5 t equ Z+3; символу t присваивается значение 8 t1 teq t+t/z; символу t1 присваивается значение 9 В соответствии с данными директивами символу, стоящему в поле метки (в первой позиции) присваивается результат вычисления выражения, стоящего в поле операнда. Если в выражении используется символ, то он должен быть определен ранее (выше в программе). Разница между директивами equ, teq состоит в том, что символ, определенный директивой teq далее в программе может быть переопределен с помощью этой же директивы. Директивы extern, public Директивы используются для определения одних и тех же символов в различных программных модулях при использовании нескольких исходных модулей для получения конечной выполняемой программы. Формат директив: extern <список символов> public <список символов> Пример extern z public k,x1,I Директива extern z означает, что символ z не определяется в данном программном модуле, а будет определен в другом программном модуле, с которым данный будет объединен при компоновке. Символ, объявленный директивой extern, может быть также определен в командном файле компоновки. Транслятор отложит его вычисление до компоновки. Директива public k,x1,i означает, что символы k,x1,i, значение которых определяется в данном программном модуле, будут также использованы в других. Транслятор запомнит их значение в выходном объектном модуле для использования при компоновке (в противном случае после присваивания значений транслятор “забывает” символы). Ниже приведена часть текста программы, в которой используются эти директивы. extern z public k,x1,i x equ 1+2 t equ Z+3 k equ +7 I equ -7 x1 equ 10 x5 equ t+1 Y equ x1*t X2 equ z*t X3 equ 5/z Как видно из примера программы, неопределенные символы могут использоваться в выражениях, однако последнее выражение 5/z вызовет сообщение об ошибке при трансляции (деление на 0), так как в общем случае z может быть равно 0. Поэтому подобные выражения недопустимы. Директивы db, dw, ds Директивы используются для резервирования ячеек памяти и размещения в памяти констант и начальных значений переменных. Формат директив: [метка] db <список выражений> [метка] dw <список выражений> [метка] ds <список выражений> Примеры M1 db 3,4,5,6 M2 db 3*4,5/2 В соответствии с данными директивами при загрузке программы в память в отдельные ее ячейки (в соответствии с размещением директивы в тексте программы) будут записаны величины 3, 4, 5, 6, результаты вычисления выражений 3*4 и 5/2. Метки в этих директивах являются необязательными элементами. Если они присутствуют, то они являются символическими адресами ячеек, в которых размещены константы. Так М1 будет являться адресом ячейки, где расположена константа 3, а М2 адресом ячейки с константой 3*4. Директива db размещает в ячейках значения длиной в байт. Директива dw размещает в двух последовательных ячейках слова длиной в 2байта. Пример М3 dw 0AC5Eh В соответствии с данной директивой в ячейку с символическим адресом М3 будет записано число 0Ach, а в следующую - число 5Eh. Директива ds резервирует (оставляет пустыми) в памяти для последующего использования при выполнении программы заданное число ячеек. М3 ds 6 В соответствии с данной директивой в памяти будет зарезервировано 6 ячеек памяти. Первой пустой ячейке будет присвоен символический адрес М3. место резервирования ячеек определяется расположением директивы в программе. Директива include Директива используется для включения одного файла в другой. Формат директивы include <имя файла> Следует отметить следующее. Включаемый файл не должен содержать в конце директиву end, так как после выполнения директивы include в середине основного окажется директива end, а транслятор ничего после нее воспринимать не будет. Включаемый файл должен находится в рабочей директории. Директиву include нельзя использовать для включения в файл макроопределений, для этого используется команда препроцессора %include. Команды препроцессора Команды препроцессора были рассмотрены в подразделе “Средства макроассемблера”. Напомним их назначение. Команда %include используется для включения в файл библиотеки макрорасширений. Команды %macro и %endm определяют начало и конец макроопределения.
|
||||
|
Последнее изменение этой страницы: 2017-01-25; просмотров: 418; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.89 (0.009 с.) |