24436

Назначение и возможности макросредств в ассемблере

Контрольная

Информатика, кибернетика и программирование

Он вставляет вместо вызова команды которые соответствуют макросу. Макроопределение группа команд определяющая действие макрокоманды. При описании макрокоманды используется оператор MACRO. Макрокоманды позволяют сократить размер выполняемой программы за счет описания повторяющихся участков однажды.

Русский

2013-08-09

146 KB

1 чел.

  1.  Назначение и возможности макросредств в ассемблере.

Опред-ие макрокоманд и макроопределений.

Отличие макросов от процедур 

Процедуры один раз оттранслированы, затем вызываются командой CALL (за счет передачи управления).

Макросы. Пишется группа операторов, ей присваивается имя. Вызов производит транслятор. Он вставляет вместо вызова команды, которые соответствуют макросу.

Макрокоманда – поименованный набор операторов языка Ассемблера.

Макроопределение - группа команд, определяющая действие макрокоманды.

Макрогенерация - процесс вкл. в текст программы макроопределения.

Макрорасширение – замена макрокоманд на соотв. макроопределения.

Ассемблер заменяет при трансляции макрокоманду операторами и вставляет их в исходный текст программы в точку вызова.

Вызов заключается в том что задается имя программы и значения параметров.

При описании макрокоманды используется оператор MACRO.

Имя_ Macro_ формальные параметры

     тело  макроопределения

EndM.

*) ADD_W MACRO  T1, T2, SUM.

      MOV  AX, T1

      ADD  AX, T2

      MOV  SUM, AX

   ENDM.

Возможности макросредств.

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

Макрокоманды служат для упрощения процесса програмирования.

К простейшим макросредствам языка асем-ра можно отнести псевдооператоры equ и = . Они предназначены для присвоения некоторому выражению символич. Имени или идентификатора. Когда в ходе трансляции этот идентификатор встретится в теле программы, макроассемблер подставит вместо него соотв-ее выражение.

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

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

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

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

Отличия:

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

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

Псевдооператоры повторения макроопределения.

1. REPT_ выражение

*) Необходимо зарезервировать некоторое кол-во памяти и этим байтам можно присвоить начальное значение.

 ALLOCATE  MACRO  TLABEL, LENGHT

                        TLABEL  EQU  THIS  BYTE

                        VALUE = 0

                        REPT  LENGHT

                        VALUE = VALUE+1

                        DB  VALUE

                        ENDM.

2. IRP_параметр ,<список значений>

*)     IRP  ABC ,<1,2,3>

       DW  ABC X  ABC X ABC

       ENDM.

Вначале значению АВС присваивается  1, потом 2, потом 3.  Получим 1^3, 2^3, 3^3.

3. IRPC_параметр, строка

*)      IRPC  ABC, 123

        DW  ABC X ABC X ABC

         ENDW.

Выполняет тоже что и предыдущая программа.

Условные псевдооператоры.

IF_выражение

*) IF  LENGHT  50

   MOV  AX, 50

   CALL ABC

   ENDIF.

IFNB_ <парометp>

*) POP  MACRO REF1,REF2

            IFNB<REF1>

            POP REF1

            ENDIF

            IFNB<REF2>

            POP REF2

            ENDIF 

            ENDM.


2. Способы представления данных

Формы с плавающей и фиксированной точкой

Существует 2 способа представления чисел: с плавающей и фиксированной точкой.

Представление числа в форме с фиксированной точкой.

Общий вид представления числа с фиксированной точкой:

Зн

2-1

...

2-n

В общем случае фиксированная точка (естественная форма представления чисел) характеризуется значением m (m = соnst). В этом случае для всех чисел, с которыми оперирует машина, положение точки постоянно. Можно увидеть, что при m = 0 все числа, с которыми оперирует машина, меньше 1 и представлены в виде правильных дробей.

При использовании чисел с фиксированной точкой может возникнуть переполнение.

Представление чисел в форме с плавающей точкой.

Такое представление числа соответствует нормальной форме записи:

¦ (x1p-1 + x2p-2 + ... + xnp-n)

Здесь p-n - мантисса, pm - порядок.

Пример:

133,21 = 102*1.3321, 102- порядок, 1.3321- мантисса.
При использовании формата с плавающей точкой пользуются понятием нормализованного представления чисел.

Нормализованным числом называется число, мантисса которого удовлетворяет следующим неравенствам:

Пример:

0,00121 = 10-2*0.121
0.0010 = 2
-2*0.101
101.10 = 2
3 *0.10110

Зн.п

2ln-2

...

20

Зн.m

2-1

2lm

<       Код порядка       >

<    Код мантиссы     >

<     Длина поля порядка          >

<     Длина поля мантиссы     >

Знак '-' кодируется единицей, знак '+' - нулем.

Диапазон представления чисел (максимальное число) зависит от того, как велики поля порядка и мантиссы.

Пример:

25*0.110101

0

101

0

110101

Формы представления чисел со знаками

Распространёнными формами представления чисел со знаками является их представление в прямом, обратном и дополнительном коде

Прямой код числа образуется кодированием знака числа нулём, если число положительно и единицей, если число отрицательно (для двоичной системы)

Для общего случая (q - 1) - если число отрицательно, и 0 - если число положительно. q - основание системы счисления.

Код знака записывается перед старшей цифрой числа и отделяется от неё точкой:

-1.01 = 1.101

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

Обратный код отрицательного числа образуется из прямого кода, заменой его цифр на их дополнения до величины q-1. Код знака сохраняется без изменения.

Пример :

-1012 = 1.101пр = 1.010об.

Замена цифр их дополнениями для двоичной системы совпадает с операцией инверсии, то есть нули заменяются единицами, единицы - нулями. Знак принимает значение, равное единице.

Дополнительный код отрицательного числа образуется из обратного увеличением на 1 его младшего разряда. При этом перенос из знакового разряда игнорируется.

Пример:

-1012 = 1.101пр.= 1.010об.= 1.011доп.
Правила перевода из прямого кода в обратный и из обратного в прямой, а также из прямого в дополнительный и из дополнительного в прямой совпадают между собой.

Форматы чисел в ЭВМ

Рассмотрим представление формата в ЭВМ на примерах форматов, используемых в IBM 360/370 и ПЭВМ.

Как упоминалось ранее, в ЭВМ информация, представляемая с использованием множества двоичных разрядов, называется его разрядной сеткой. Количество этих разрядов определяет длину разрядной сетки. Для чисел заданного диапазона используется разрядная сетка с заранее определённой длиной и назначением разряда, что называется заданием числа в определённом формате. Задание диапазона предполагает выбор системы счисления, кода и разрядности чисел, что находит отражение в написании формата.

Кроме бита и байта, для указания длины формата используется слово, его производные - полуслово, двойное слово. Двойное слово и полуслово по-разному определяется для разных систем ЭВМ. Кроме того, используется понятие тетрада - 4 двоичных разряда, которыми может кодироваться, например, одна двоичная цифра.

Назначение разряда в формате структурирует разрядную сетку, то есть разбивает её на поля, объединяющие разряды сходного назначения. Например, разряды мантиссы или порядка. Форматы чисел в IBM 360/370 имеют длину полуслова, слова и двоичного слова, содержащие соответственно 2,4 и 8 байт.

Двоичные разряды в форматах формируются слева направо (начиная с нулевого разряда).

0

1

15

H

Зн

Разряды числа

0

1

31

F

Зн

Разряды числа

0

1

7

31

E

Зн

Характеристика

Мантисса числа

0

1

7

63

D

Зн

Характеристика

Мантисса числа

                   <        байт         >

<       байт      >

                                   <         байт      >

Z

Зона

Ст.цифра

Зона

Цифра

...

Зона

Цифра

Знак

Мл.цифра

                    <                        байт                       >

           <                  байт                     >

P

Ст.цифра

Цифра

...

Мл.цифра

Знак

Форматы H и F используются для представления двоичных чисел с фиксированной точкой, а E и D - с плавающей. Для представления десятичных чисел требуются форматы Z и P.

В формате H и F записывают целые двоичные числа, представленные в дополнительном коде и имеющие длину соответственно полуслова (короткий формат H) и слова (длинный формат F). Нулевой дволичный разряд является знаком. Формат H позволяет представить числа в диапазоне от -215 до 215-1, формат F - от -231 до 231-1. Форматы E и D служат для представления двоичных чисел с плавающей точкой и имеют длину соответственно слова и двойного слова. В нулевом разряде указывается код знака мантиссы (Зн). В семи следующих разрядах первого байта записывается характеристика (Х), представляющая собой порядок (П), в виде положительного числа . В последующих байтах записывается мантисса.

Форматы E и D описывают двоичные числа в двоично-кодированной шестнадцатеричной системе счисления. Порядок чисел изменяется от -64 до +63.

Характеристика (Х) изменяется от 0 до 127,

Х = Р + 64, то есть смещает порядок в область положительных чисел.

Формат D за счёт большей длины, используемой для увеличения разрядности мантиссы, обеспечивает представление чисел с большей точностью.

Диапазон абсолютных значений чисел в форматах E и D составляет величины от 16-64 до 1663 , что эквивалентно пределам от 10-77 до 1076.

Пример:

30010 = 12С16 = 0.12С16*163 = 4312С000E = 43.12С00000000000D
-80
10 = -5016 = -0.5016*162 = С2500000E = С250000000000000D 

Форматы Z и P (зонный и упакованный) используют двоично-десятичную систему исчисления с весами 8421. Каждая десятичная цифра кодируется тетрадой.

Пример:

1510 = 0001 01012-10

Знак числа: если число положительное, то оно кодируется символами A, C, E, F , если же число отрицательное- то символами B и D.

Формат Z (зонный формат)используется при вводе и выводе. Для каждой цифры отводится 1 байт, причём правая тетрада кодирует цифру, а левая зона принимает значение F, если кодируется цифра, и этим отличает цифру от кодов других символов в других информациях. Крайний правый байт, кодирующий младшую цифру, на месте зоны имеет код знака.

Формат Р называется упакованным и используется при выполнении операций над цифрами. Получается из зонного путём удаления зон и перенесения кода знака на место справа от тетрады, кодирующей младшую цифру. Формат имеет целое количество байт и пре необходимости дополняется слева от младшей цифры нулевой тетрадой. Форматы Z и P могут иметь длину от 1 до 16 байт.

Пример:

+3010 = F3AOZ = 030AP
-30
10 = F3BOZ = 030BP

Адресация и форматы команд

Рассматриваются режимы адресации 16-разрядного микропроцессора Intel-8086 и их связь с форматами команд, а также форматы и особенности реализации команд переходов.

Микропроцессор Intel-8086 (К1810ВМ80) имеет двухадресную систему команд. Ее особенностью является отсутствие команд, использующих оба операнда из оперативной памяти. Формат команды во многом определяется способом адресации операнда, находящего в оперативной памяти, длиной используемого непосредственного операнда, а также наличием и длиной смещения, используемого при относительных режимах адресации.

Непосредственная адресация предполагает, что операнд занимает одно из полей команды и, следовательно, выбирается из оперативной памяти одновременно с ней. В зависимости от форматов обрабатываемых процессором данных непосредственный операнд может иметь длину 8 или 16 бит, что в дальнейшем будем обозначать data8 и data16 соответственно.

Механизмы адресации операндов, находящихся в регистровой памяти и в оперативной памяти, существенно различаются. К регистровой памяти допускается лишь прямая регистровая адресация. При этом в команде указывается номер регистра, содержащего операнд. 16-разрядный операнд может находиться в регистрах AX, BX, CX, DX, DI, SI, SP, BP, а 8-разрядный - в регистрах AL, AH, BL, BH, CL, CH, DL, DH.

Адресация оперативной памяти имеет свои особенности, связанные с ее разбиением на сегменты и использованием сегментной группы регистров для указания начального адреса сегмента. 16-разрядный адрес, получаемый в блоке формирования адреса операнда на основе указанного режима адресации, называется эффективным адресом (ЭА). Иногда эффективный адрес обозначается как ЕА (effective address). 20-разрядный адрес, который получается сложением эффективного адреса и увеличенного в 16 раз значения соответствующего сегментного регистра, называется физическим адресом (ФА).

Именно физический адрес передается из микропроцессора по 20-ти адресным линиям, входящим в состав системной шины, в оперативную память и используется при обращении к ее ячейке на физическом уровне.

Прямая адресация предполагает, что эффективный адрес является частью команды. Так как ЭА состоит из 16 разрядов, то и соответствующее поле команды должно иметь такую же длину.

При регистровой косвенной адресации эффективный адрес операнда находится в базовом регистре BX 

При регистровой относительной адресацииэффективный адрес равен сумме содержимого базового или индексного регистра и смещения:

Эффективный адрес при базово-индексной адресации равен сумме содержимого базового и индексного регистров, определяемых командой:

Наиболее сложен механизм относительной базово-индексной адресации. Эффективный адрес в этом случае равен сумме 8- или 16-разрядного смещения и базово-индексного адреса:

Форматы двухоперандных команд представлены на рис.6.1. Пунктиром показаны поля, которые в зависимости от режима адресации могут отсутствовать в команде.


Поле КОП содержит код выполняемой операции. Признак w указывает на длину операндов. При
w = 1 операция проводится над словами, а при w = 0 - над байтами. Признак d указывает положение приемника результата. Признак d = 1, если результат записывается на место операнда, закодированного в поле reg, и d = 0, если результат записывается по адресу, закодированному полями (md, r/m).

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

Поля md и r/m задают режим адресации второго операнда.

В командах, использующих непосредственный операнд, признак s вместе с признаком w определяет разрядность непосредственного операнда, записываемого в команде, и разрядность выполняемой операции.

w

s

Операция

Непосредственный операнд

0

0

8-разрядная

8-разрядный

0

1

не используется

1

0

16-разрядная

16-разрядный

1

1

8-разрядный, расширяемый знаком до 16-ти разрядов при выполнении операции

Изменение естественного порядка выполнения команд программы осуществляется с помощью команд передачи управления. К ним относятся команды переходов, циклов, вызова подпрограммы и возврата из нее, а также некоторые другие. Мы рассмотрим лишь первые две группы команд.

Классификация команд переходов в персональной ЭВМ представлена на рис. 6.2.


Рис. 6.2.  Классификация команд переходов IBM PC

Физический адрес выполняемой команды определяется содержимым указателя команд IP и сегментного регистра команд CS. Команды, меняющие значение обоих этих регистров, называются командами межсегментных переходов, а меняющие только значение IP, - командами внутрисегментных переходов.

Команды безусловных переходов производят модификацию регистра IP или регистров IP и CS без предварительного анализа каких-либо условий. Существует пять команд безусловных переходов. Все они имеют одинаковую мнемонику JMP и содержат один операнд. Конкретный формат команды определяется соответствующим префиксом и приведен в общей таблице машинного представления

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

Команды косвенных переходов (внутрисегментных и межсегментных) передают управление на команду, адрес которой определяется содержимым регистра или ячеек оперативной памяти, на которые указывает закодированный в команде перехода постбайт.

Команды условных переходов являются только внутрисегментными. По своему формату и способу формирования нового значения IP они полностью аналогичны команде внутрисегментного прямого перехода с 8-разрядным смещением. Отличие их заключается в том, что в командах условного перехода механизм формирования нового значения IP включается лишь при выполнении определенных условий, а именно, при определенном состоянии регистра флагов. При невыполнении проверяемого условия в IP остается его текущее значение, то есть адрес команды, следующей за командой условного перехода.

Ниже приведены примеры команд переходов различных типов.

  •  Команды условного перехода:

формат:

IP = IP + 2, если условие не выполнено;

IP = IP +2 + disp L, если условие выполнено;

пример:

JZ MARK; переход на метку MARK, если ZF = 1.

  •  Команды прямого внутрисегментного перехода:

формат:

IP = IP + Δ + disp, где Δ - длина команды перехода (2 или 3 в зависимости от длины смещения);

примеры:

JMP short ptr MARK; переход на метку MARK, с использованием 8-разрядного смещения;

JMP near ptr MARK; переход на метку MARK, с использованием 16-разрядного смещения.

  •  Команды прямого межсегментного перехода

формат:

IP = IP_H, IP_L,

CS = CS_H, CS_L;

пример:

JMP far ptr MARK; переход на метку MARK к команде, находящейся в другом сегменте.

  •  Команды косвенного внутрисегментного перехода:

формат:

IP = [EA + 1, EA]; или

IP = <регистр>, если в постбайте задано обращение к регистровой памяти;

пример:

JMP word ptr [BX + SI]; новое значение IP берется из двух последовательных байт памяти, эффективный адрес первого из которых определяется суммой регистров BX и SI.

  •  Команды косвенного межсегментного перехода:

формат:

IP = [EA + 1, EA],

CS = [EA + 3, EA + 2];

пример:

JMP dword ptr [BX + SI]; сумма регистров BX и SI определяет эффективный адрес области памяти, первые два байта которой содержат новое значение IP, а следующие два байта - новое значение CS.

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

Один из наиболее распространенных видов циклического участка программы представлен на рис. 6.3.

Команды циклов предназначены для упрощения действий декремента (уменьшения на 1) счетчика цикла, проверки условия выхода из цикла и перехода.

Некоторые команды цикла реализуют выход из цикла не только по значению счетчика, но и при выполнении некоторых других условий.

Описание команд цикла сведено в табл. 6.5. За исключением команды JCXZ, которая не изменяет значения регистра CX, при выполнении команд циклов производятся следующие действия: CX=(CX)-1. Затем, если проверяемое условие выполнено, то IP=(IP)+disp8 с расширением смещения знаком до 16 разрядов, в противном случае IP не изменяется, и программа продолжает выполнение в естественном порядке.

Таблица 6.5. Команды циклов

Название

Мнемоника

Альтернативная мнемоника

КОП

Проверяемое условие

Зациклить

LOOP

11100010

(CX)=0

Зациклить пока ноль (равно)

LOOPZ

LOOPE

11100001

(ZF=1)&(CX)=0)

Зациклить пока не ноль (неравно)

LOOPNZ

LOOPNE

11100000

(ZF=0)&((CX)=0)

Перейти по (CX)

JCXZ

11100011

(CX)=0


 

А также другие работы, которые могут Вас заинтересовать

22402. CASE-средства анализа и синтеза проектных решений информационных систем 238 KB
  Взаимодействие блоков друг с другом описываются посредством интерфейсных дуг выражающих ограничения которые в свою очередь определяют когда и каким образом функции выполняются и управляются; строгость и точность. отделение организации от функции т. Методология SADT может использоваться для моделирования широкого круга систем и определения требований и функций а затем для разработки системы которая удовлетворяет этим требованиям и реализует эти функции. Диаграммы главные компоненты модели все функции ИС и интерфейсы на них...
22403. Основные понятия и методология проектирования сложных объектов и систем. Методология системного подхода к проблеме проектирования сложных систем 233 KB
  Сущность процесса проектирования Методология системного подхода к проблеме проектирования сложных систем 1. Сущность процесса проектирования Сущность процесса проектирования заключается в разработке конструкций и технологических процессов производства новых изделий которые должны с минимальными затратами и максимальной эффективностью выполнять предписанные им функции в требуемых условиях [70 71]. Результатом проектирования как правило служит полный комплект документации содержащий достаточные сведения для изготовления объекта в...
22404. Основные понятия и методология проектирования слож 171.5 KB
  План Понятия инженерного проектирования; 2. Цели проектирования; 3. Объекты проектирования; Процессы проектирования.
22405. Введение в математический анализ 1.32 MB
  Числовые множества 1. Числовые множества. Числовые функции Числовые множества. Числовая последовательность и ее предел Числовая последовательность и свойства последовательностей.
22406. Непрерывность функции в точке 383 KB
  Функция f называется непрерывной в точке a если она определена в точке a и ее некоторой окрестности и если существует предел этой функции f при x при x  a и он равен fa т. Функция f называется непрерывной слева в точке a если она определена в точке a и в левой половине некоторой окрестности точки a если левый предел этой функции f при x  a0 существует и равен fa т. Функция f называется непрерывной справа в точке a если она определена в точке a и в правой половине некоторой окрестности точки a если правый предел этой функции...
22407. Дифференцируемость и производные функции 291 KB
  Дифференцируемость и производные функции Приращение аргумента и приращение функции. Понятие функции дифференцируемой в точке. Дифференциал функции. Производная функции.
22408. Производные высших порядков. Формулы Тейлора. Применение производной. Производные и дифференциалы высших порядков 652 KB
  Линеаризация функции. Приближенное вычисление значений функции. Исследование функции с помощью производной. Возрастание и убывание функции на промежутке.
22409. Первообразная и неопределенный интеграл 454 KB
  Корни многочлена. Кратность корней многочлена. Разложение многочлена с действительными коэффициентами на множители. Если a0  0 то число n называется степенью многочлена fx.
22410. Определенный интеграл 635.5 KB
  Определенный интеграл План Определенный интеграл Определение определенного интеграла. Геометрический смысл и физический смысл определенного интеграла. Условия существования определенного интеграла. Свойства определенного интеграла.