Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Arkhitektura_EVM.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
466 Кб
Скачать
☆
  1. Организация сегментов: сегменты и их значения, порядок следования и синтаксис

Сегмент – кусок кода программы. Виды сегментов:

1. Сегмент кода – содержит машинные команды для выполнения.

2. Сегмент данных – содержит данные, константы и рабочие области, необходимые программе.

3. Сегмент стека - содержит адреса возврата как для программы , так и для вызовов подпрограмм, а также используется для передачи параметров в процедуры.

Сегмент программы описывается директивами SEGMENT и ENDS.

Базовый синтаксис:

имя_сегмента segment readonly выравн. тип разряд 'класс'

...

имя_сегмента ends

Имя сегмента — метка для получения сегментного адреса, а также для комбинирования сегментов в группы.

Выравнивание. Указывает ассемблеру и компоновщику, с какого адреса может начинаться сегмент. Значения этого операнда:

BYTE — с любого адреса;

WORD — с четного адреса;

DWORD — с адреса, кратного 4;

PARA — с адреса, кратного 16 (граница параграфа);

PAGE — с адреса, кратного 256.

Тип. Выбирает один из возможных типов комбинирования сегментов:

  • тип PUBLIC (все такие сегменты с одинаковым именем, но разными классами будут объединены в один);

  • тип STACK — загоняет все сегменты в стек

  • PRIVATE (значение по умолчанию) — сегмент такого типа не объединяется с другими сегментами.

Разрядность определяет максимальный разряд сегмента.

• USE16 ( до 64 Кб)

• USE32. (до 4 Гб)

Класс сегмента — это любая метка, взятая в одинарные кавычки.

Для обращения к любому сегменту следует сначала загрузить его сегментный адрес в какой-нибудь сегментный регистр.

assume регистр:связь...

Директива ASSUME указывает ассемблеру, с каким сегментом или группой сегментов связан тот или иной сегментный регистр.

  1. Выражения, операторы <>,(), арифметические операторы

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

Оператор <>(угловые скобки). Часть выражения, заключенная в угловые скобки, не вычисляется, а применяется как строка символов.

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

mov al, 2*(3+4) ;

mov al,14

Арифметические операторы: + (плюс), – (минус), * (умножение), / (целочисленное деление), MOD (остаток от деления). Они выполняют соответствующие арифметические действия.

Кроме того, к арифметическим операторам относится унарный минус — минус, который ставят перед отрицательным числом.

Операторы сравнения: EQ (равно), GE (больше или равно), GT (больше), LE (меньше или равно), LT (меньше), NE (не равно). Результат действия каждого из этих операторов — 1, если условие выполняется, и 0 — если не выполняется.

  1. Оператор, операнд. Операторы адресации

Операнд– объект, над которым выполняется машинная команда или оператор языка программирования.

Команда может иметь один или два операнда, или вообще не иметь операндов. Число операндов неявно задается кодом команды.

В качестве операндов могут выступать

  • идентификаторы;

  • цепочки символов, заключенных в одинарные или двойные кавычки;

  • целые числа в двоичной, восьмеричной, десятичной или шестнадцатеричной системе счисления.

Операторы адресации:

SEG выражение — сегментный адрес;

OFFSET выражение — смещение;

THIS тип — текущий адрес (MASM и TASM);

Тип PTR выражение — переопределение типа;

LARGE выражение — 32-битное смещение (TASM и WASM);

SMALL выражение — 16-битное смещение (TASM и WASM);

SHORT выражение — 8-битное смещение.

SEG и OFFSET возвращают соответствующую часть адреса своего аргумента:

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

PTR создает аргумент, адресом которого является значение выражения, а тип указан явно:

LARGE, SMALL и SHORT используются с командами передачи управления, если возникают двусмысленности при косвенных переходах.

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