Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 320; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.251.68 (0.008 с.) |