Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Макросредства языка ассемблера

Читайте также:
  1. Lt;question> Правила использования языковых средств в определённый период развития литературного языка
  2. quot;Я люблю" на всех языках мира.
  3. Анализ способов передачи юмористического эффекта при переводе с английского языка на русский в произведении М. Твена «Как меня выбирали в губернаторы».
  4. Б )несовпадение антонимических групп в английском и русском языках
  5. Встреча живого языка и мертвой речи
  6. Встреча живого языка и мертвой речи
  7. ГЛАВА 1. ПОНЯТИЕ О НОРМАХ И СТИЛЯХ РУССКОГО ЯЗЫКА

 

Разработчики компиляторов ассемблера включают в язык аппарат макросредств. Транслятор ассемблера состоит из двух частей — непосредственно транслятора, формирующего объектный модуль, и макроассемблера (рис. 13.1).

Он является некоторым аналогом механизма, заложенного в работу макроассемблера. Основная идея — использование подстановок, которые замещают определенным образом организованную символьную последовательность другой символьной последовательностью. Создаваемая таким образом последовательность может быть как последовательностью, описывающей данные, так и последовательностью программных кодов. Главное здесь то, что на входе макроассемблера может быть текст программы, весьма далекий по виду от программы на языке ассемблера, а на выходе обязательно будет текст на чистом ассемблере, содержащем символические аналоги команд системы машинных команд микропроцессора. Таким образом, обработка программы на ассемблере с использованием макросредств неявно осуществляется транслятором в две фазы (см. рис. 13.1). На первой фазе работает часть компилятора, называемая макроассемблером, основные функции которого мы описали выше. На второй фазе трансляции участвует непосредственно ассемблер, задачей которого является формирование объектного кода, содержащего текст исходной программы в машинном виде.

Рис. 13.1. Макроассемблер в общей схеме трансляции программы на TASM

 

1. Псевдооператоры equ и =

К простейшим макросредствам языка ассемблера можно отнести псевдооператоры equ и «=» (равно). Эти псевдооператоры предназначены для присвоения некоторому выра­жению символического имени или идентификатора. Впоследствии, когда в ходе трансляции этот идентификатор встретится в теле программы, макроассемблер подставит вместо него соответствующее выражение. В качестве выражения могут быть использованы константы, имена меток, символические имена и строки в апострофах. После присвоения этим конструкциям символического имени его можно использовать везде, где требуется размещение данной конструкции.

Синтаксис псевдооператора equ:

Имя_идентификатора equ строка или числовое_выражение

Синтаксис псевдооператора =:

имя_идентификатора = числовое_выражение

Псевдооператоры equ и = отличаются следующим:

– с помощью equ идентификатору можно ставить в соответствие как числовые выражения, так и текстовые строки, а псевдооператор = может использоваться только с числовыми выражениями;

– идентификаторы, определенные с помощью =, можно переопределять в исходном тексте программы, а определенные с использованием equ — нельзя.

Ассемблер всегда пытается вычислить значение строки, воспринимая ее как выражение. Для того чтобы строка воспринималась именно как текстовая, необходимо заключить ее в угловые скобки: <строка>. Кстати сказать, угловые скобки являются оператором ассемблера, с помощью которого транслятору сообщается, что заключенная в них строка должна трактоваться как текст, даже если в нее входят служебные слова ассемблера или операторы. Хотя в режиме Ideal это не обязательно, так как строка для equ в нем всегда трактуется как текстовая.

Псевдооператор equ удобно использовать для настройки программы на кон­кретные условия выполнения, замены сложных в обозначении объектов, много­кратно используемых в программе, более простыми именами и т. п. К примеру:

masm

model small

stack 256

mas__size equ 10;размерность массива

akk equ ax;переименовать регистр

.data

описание массива из 10 байт:

mas db mas_size dup (0)

.code

mov akk,@data;фактически mov ax,@data

mov ds,akk;фактически mov ds,ax

 

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

.data

len = 43

len = len+1

 


Дата добавления: 2015-08-21; просмотров: 99 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Четверта група.| Макрокоманды

mybiblioteka.su - 2015-2024 год. (0.007 сек.)