2. СИНТАКСИС АССЕМБЛЕРА

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

Предложения ассемблера формируются из лексем, представляющих собой синтаксически неразделимые последовательности допустимых символов языка имеющие смысл для транслятора. Лексемами являются:

·          идентификаторы — последовательности допустимых символов, использующиеся для обозначения таких объектов программы, как коды операций, имена переменных и названия меток. Правило записи идентификаторов заключается в следующем. Идентификатор может состоять из одного или нескольких символов. В качестве символов можно использовать буквы латинского алфавита, цифры и некоторые специальные знаки — _, ?, $, @.

·          цепочки символов — последовательности символов, заключенные в одинарные или двойные кавычки;

·          целые числа в одной из следующих систем счисления: двоичной, десятичной, шестнадцатеричной. Отождествление чисел при записи их в программах на ассемблере производится по определенным правилам. Десятичные числа не требуют для своего отождествления указания каких-либо дополнительных символов.

Практически каждое предложение содержит описание объекта, над которым или при помощи которого выполняется некоторое действие. Эти объекты называются операндами. Их можно определить так: операнды — это объекты (некоторые значения, регистры или ячейки памяти), на которые действуют инструкции или директивы, либо это объекты, которые определяют или уточняют действие инструкций или директив.

Операнды могут комбинироваться с арифметическими, логическими, побитовыми и атрибутивными операторами для расчета некоторого значения или определения ячейки памяти, на которую будет воздействовать данная команда или директива.

Рассмотрим классификацию операндов, поддерживаемых транслятором ассемблера.

Постоянные или непосредственные операнды — число, строка, имя или вы­ражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в па­мять.

Адресные операнды — задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещений (рис. 2).

Рис. 2. «Синтаксис описания адресных операндов».

Перемещаемые операнды — любые символьные имена, представляющие некоторые адреса памяти. Эти адреса могут обозначать местоположение в памяти некоторой инструкции (если операнд — метка) или данных (если опе­ранд — имя области памяти в сегменте данных). Перемещаемые операнды отличаются от адресных тем, что они не привязаны к конкретному адресу физической памяти. Сегментная составляющая адреса перемещаемого операнда неизвестна и будет определена после загрузки программы в память для выполнения.

Считчик адреса — специфический вид операнда. Он обозначается знаком $. Специфика этого операнда в том, что когда транслятор ассемблера встречает в исходной программе этот символ, то он подставляет вместо него текущее значение счетчика адреса. Значение счетчика адреса, или как его иногда называют счетчика размещения, представляет собой смещение текущей ма­шинной команды относительно начала сегмента кода.

Базовый и индексный операнды. Этот тип операндов используется для реали­зации косвенной базовой, косвенной индексной адресации или их комбина­ций и расширений.

Операнды являются элементарными компонентами, из которых формируется часть машинной команды, обозначающая объекты, над которыми выполняется операция. В более общем случае операнды могут входить как составные части в более сложные образования, называемые выражениями. Выражения представляют собой комбинации операндов и операторов, рассматриваемые как единое целое. Результатом вычисления выражения может быть адрес некоторой ячейки памяти или некоторое константное (абсолютное) значение. В табл. 2.2 приведены поддерживаемые языком ассемблера операторы и перечислены их приоритеты.

Арифметические операторы. К ним относятся унарные операторы «+» и «-», бинарные «+» и «-», операторы умножения «*», целочисленного деления «/», получения остатка от деления «mod». Эти операторы расположены на уровнях приоритета 6, 7, 8 в табл. 2.1.

Операторы сдвига выполняют сдвиг выражения на указанное количество раз­рядов.

Операторы сравнения (возвращают значение «истина» или «ложь») предназначены для формирования логических выражений (табл. 5.1). I Логическое значение «истина» соответствует цифровой единице, а «ложь» — нулю.

Табл. 2.1.

Операторы сравнения

Оператор Значение
eq ИСТИНА, если выражение_1 равно выражение_2
пе ИСТИНА, если выражение_1 не равно выражение_2
It ИСТИНА, если выражение_1 меньше выражение_2
le ИСТИНА, если выражение_1 меньше или равно выражение_2
gt ИСТИНА, если выражение_1 больше выражение_2
ge ИСТИНА, если выражение_1 больше или равно выражение_2
eq ИСТИНА, если выражение_1 равно выражение_2
пе ИСТИНА, если выражение_1 не равно выражение_2

Логические операторы выполняют над выражениями побитовые операции. Выражения должны быть абсолютными, то есть такими, численное значение которых может быть вычислено транслятором.

Индексный оператор [ ]. Скобки тоже являются оператором, и транслятор их наличие воспринимает, как указание сложить значе­ние выражение_1 за этими скобками с выражение_2, заключенным в скобки.

Оператор переопределения типа ptr применяется для переопределения или уточнения имя типа метки или переменной, определяемых выражением. Тип может принимать одно из следующих значений: byte, word, dword, qword, tbyte, noar, far. Оператор ptr позволяет непосредственно в команде переопределить тип и выполнить команду.

Оператор переопределения сегмента : (двоеточие) заставляет вычислять физический адрес относительно конкретно задаваемой сегментной составляющей: «имя сегментного регистра», «имя сегмента» из соответствующей директивы SEGMENT или «имя группы».

Оператор именования типа структуры . (точка) также заставляет транслятор производить определенные вычисления

Оператор получения сегментной составляющей адреса выражения seg возвра­щает физический адрес сегмента для выражения, в качестве кото­рого могут выступать метка, переменная, имя сегмента, имя группы или неко­торое символическое имя.

Оператор получения смещения выражения offset позволяет получить значения смещения выражения в байтах относительно начала того сегмента, в котором выражение определено.



Информация о работе «Ассемблер»
Раздел: Информатика, программирование
Количество знаков с пробелами: 32352
Количество таблиц: 1
Количество изображений: 3

Похожие работы

Скачать
91958
12
0

... . В случае выбора пункта «выход», необходимо реализовать завершение работы программы и передачу управления операционной системе DOS. 1.3. Требования техническим и программным средствам Программа выполнена на языке ассемблера 8086 процессора, соответственно ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с ...

Скачать
22437
1
1

... смещением. После обращения к _fillstring к указателю стека sp добавляются 8 байт, удаляя параметры из стека. Несмотря на то что в этом примере функция _fillstring в действительности написана на языке ассемблера, вызовы функций С и C++ ничем не отличаются. 4.2 Локальные переменные В дополнение к переменным, объявленным в сегменте данных либо общим с программой С и С++, можно использовать локальные ...

Скачать
15665
3
6

... xxxxxxxxxxxx Виконав ст. гр xxxxxx xxxxxxx “___” ________________2005 р. Перевірив xxxxxxxxxx. “___” ________________2005 р. Харків 2005 ЗАТВЕРДЖЕНО xxxxxxxxxxxx Робота з записами мови ассемблера Текст програми xxxxxxxxx – 12 00-01 Харків 2005 РАЗРАБОТКА ТЕКСТА ПРОГРАММЫ Главная программа: LOCALS include defs.inc .model ...

Скачать
37175
0
0

... разрядов масок в регистре I.  Неправильное использование разрядов разрешения прерываний в командах SIM. ВВЕДЕНИЕ В ПРОГРАММНЫЙ РАЗДЕЛ Программный раздел содержит наборы подпрограмм на языке ассемблера для микропроцессоров 8080 и 8085. Каждой подпрограмме предпосланы введение и комментарии; за каждой подпрограммой следует по крайней мере один пример ее использования. Введение содержит следующую ...

0 комментариев


Наверх