Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
assembler_v0.1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
42.98 Кб
Скачать

9. Виды операндов

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

Виды операндов:

  1. Операнд, заданный неявно на микропроцессорном уровне – команды используют некоторые объекты по умолчанию. (AAD), div BX

  2. Непосредственные операнды. Задаются в самой команде. Непосредственный операнд может быть только вторым операндом.

add sum, 2

mov ax, 10

  1. Адресные операнды. Задают физическое расположение операнда в памяти путем указания двух составляющих адресов сегмента и смещения.

mov ah, 0000h

mov ds, ax

mov ax, ds:0000h

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

data segment

mas_w dw 25 dup (0)

code segment

leq S1, mas_w

mas_w – символьное имя, значением которого является адрес первого байта области размером в 25 двойных слов. Счетчик адреса обозначается «$». Когда транслятор TASM встречает символ «$», то он подставляет текущее значение счетчика адресов.

Jmp $+3

Cld

Mov al,1

5. Регистровый операнд

17. Команды передачи управления

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

  1. Команды безусловной передачи управления:

    1. Безусловного перехода

    2. Вызов и возврат программ из процедур

    3. Вызов программы прерываний

    4. Возврат из программы прерываний

  2. Команды условной передачи управления:

    1. Команда перехода по результату команды сравнения

    2. Переход по состоянию определенного флага

    3. Переход по содержимому регистра ECX/CX

  3. Команды управления циклом:

    1. Организация цикла со счетчиком ECX/CX

    2. Организация цикла со счетчиком ECX/CX с возможностью досрочного выхода из цикла по дополнительному условию

В TASM то место, куда необходимо передать управление определяется с помощью меток. Метку можно определить двумя способами: оператором «:» или с помощью делителя «label». Транслятор присылает метке три атрибута:

  1. Имя сегмента кода, где эта метка описана

  2. Смещение расстояния в байтах от начала сегмента кода, в котором описана метка

  3. Тип или атрибут расстояния метки:

    1. Ближайший (near) – переход возможен только в пределах сегмента кода, где эта метка описана

    2. На расстоянии (far) – переход возможен в результате межсегментной передачи управления. Требуется изменение содержимого регистров EIP и CS

С помощью оператора «:» можно определить то, что метку near можно использовать в качестве операнда условного перехода или безусловного перехода (jmp, call). Для директивы «label» тип метки может применять значение near или far:

m:

mov ax, pole_1

m1 label near

mov al, pole_1

Для того, чтобы сделать видимыми извне метки, применяется директива public:

M_far label far

public M_far

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]