Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Полный текст учебника.docx
Скачиваний:
26
Добавлен:
17.04.2019
Размер:
10.83 Mб
Скачать

Модификаторы

В операторах и псевдооператорах языка Ассемблер иногда используются модификаторы, которые определяют ту или иную операцию, учитываемую при трансляции программы. Существует 5 видов модификаторов: арифметические, логические, отношений, возвращения значений и присваивания атрибутов. Наиболее часто используются модификаторы (mdf):

  • Арифметические модификаторы: «+» — сложить, «-» — вычесть, «*» — умножить, «/» — разделить, mod — остаток от деления и т.д. Формат: opr mdf opr.

  • Логические модификаторы: and — «и», or — «или», not — «не», и xor — исключающее «или». Формат: opr mdf opr.

  • Модификаторы отношения: eq — совпадения, nq— несовпадения, lt — меньше, gt — больше, le — меньше или равно, ge— больше или равно. Формат: opr mdf opr.

  • Модификаторы, возвращающие значения:

  • $ — возвращает значение смещения адреса текущего оператора;

  • Seg — возвращает адрес сегмента адреса метки или переменной;

  • Offset — возвращает смещение адреса метки или переменной;

  • Length — возвращает длину операнда в единицах определения (байтах или словах);

  • Type — возвращает атрибут типа переменной (1, если byte; 2 — word, 3 — dword) или метки (1 — near, 3 — far);

  • Size — возвращает произведение length*type. Формат: mdf opr.

  • Модификаторы присваивания атрибута:

  • Ptr — изменяет атрибут типа (byte, word или dword) операнда или атрибут дистанции (near или far) адресного операнда. Формат: тип ptr opr. (Здесь: тип — новый атрибут, opr — идентификатор операнда, чей атрибут должен быть изменен).

В программах используются:

  • атрибуты дистанции:

  • near — близкий, в пределах одного сегмента;

  • far — далекий, за пределами одного сегмента;

  • атрибуты типа данных:

  • byte — длиной 1 байт;

  • word — длиной 2 байта;

  • dword — длиной 4 байта.

Адресация регистров и ячеек памяти в Ассемблере

При программировании на языке ассемблер используются неявный, непосредственный, прямой и косвенный методы адресации; причем для адресации регистров в МПП— только прямой, а для адресации ячеек ОП — прямой, косвенный, и смешанный непосредственный методы. Рассмотрим их на примере адресации второго операнда в команде MOV (переслать).

Непосредственная адресация

Величина операнда i (impendence) непосредственно указывается в поле команды и может быть задана числом в десятичной, двоичной и шестнадцатеричной системах счисления (последний символ числа должен быть, соответственно, D (или никакой), B и H) или идентификатором, а также простым выражением, в котором указанные элементы связаны символами арифметических операций: +, -, * и /. Идентификатор (с соответствующим именем, например, const) должен быть предварительно описан в программе директивой типа: const equ 1024 или const = 1024.

Примеры непосредственной адресации:

MOV AX, 1024D; MOV AL, 64; MOV AX, const; MOV AX, 156*10H/2

и т. п.

Следует помнить, что диапазон чисел, посылаемых в регистры, ограничивается вместимостью последнего: в 1-байтовый регистр (AH, AL, BH и т.д.) можно посылать числа в диапазоне от 0 до +255 (целое без знака) или от –128 до +127 (целое со знаком); в 2-байтовый регистр (AX, BX, CX и т.д.)— от 0 до +65 535 (целое без знака) или от –32 768 до +32 767 (целое со знаком).