Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
15.04.2015
Размер:
1.15 Mб
Скачать
  1. Организация памяти (реальный режим)

Особенности организации памяти в реальном режиме

  1. Память сегментирована. Каждый сегмент может занимать до 64 Кбайт оперативной памяти.

  2. Весь диапазон оперативной памяти – 1Мбайт.

  3. Для обращения к конкретному физическому адресу в ОП необходимо определить адрес начала сегмента и смещения внутри сегмента.

Недостатки такой адресации:

    1. Сегменты не защищены

    2. Программа может обращаться по любым адресам. Сегменты имеют максимальный размер 64 Кбайт.

    3. Сегменты могут перекрываться с другими сегментами.

Формирование физического адреса:

Эффективный адрес Линейный адрес

Смещение

Страничное

BX BP ∑ преобразование.

SI DI x16

Физический адрес

15 0

CS

DS

SS

(*)

FS

ES

GS

Каждый сегмент начинается на границе параграфа. При вычислении эффективного адреса участвует один из сегментных регистров. Каждый сегментный регистр имеет 16 разрядов. Умножение на 16 эквивалентно добавлению четырех младших разрядов к адресу сегмента. Таким образом, мы получим 20 разрядов и адресное пространство 1Мбайт. Если устройство страничного преобразования не используется, то физический адрес равен линейному.

Пример:

DS=015FH, Смещение=2845H

Эффективный адрес операнда в памяти:

015F0H

+2845H

03E35H

  1. Элементы синтаксиса Ассемблера

Ассемблер уникален для каждого типа МП. Программа может состоять из одного или нескольких сегментов. Каждая строка программы содержит одно предложение. Предложения бывают 4-х типов:

  • Команды МП

  • Макрокоманды

  • Директивы транслятору

  • Строки комментариев

Допустимые символы при написании программ:

    • Латинские буквы (большие и маленькие)

    • Цифры (от 0 до 9)

    • Знаки ? @ $ _ &

    • Разделители : , . [ ] ( ) < > { } + / * % ! “ “ \ = ≠ ^ ‘ ‘

Предложение Ассемблера формируется из лексема (- это последовательность символов имеющих смысл для транслятора).

Примеры лексем:

  • Идентификаторы – это последовательность допустимых символов, которые используются для обозначения имен переменных и меток (первый не должен быть цифрой);

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

  • Целые числа в определенной системе исчисления (если 16-ричное число начинается с буквы, то слева надо ставить 0).

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

  1. Постоянные или непосредственные операнды – это число, строка, имя или выражение имеющее некоторое фиксированное значение (например, константа)

num equ 5

imd = num -2

mov al, num ; пересылка const в регистр al

add [SI], imd ; сложение, результат - по адресу SI

mov al, 5

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

mov ax, es : 0025h

mov ax , [bx]

  1. Перемещаемые операнды – это любые символьные адреса представляющие адреса в памяти

lea ax, mas ; загрузить адрес массива mas в ax

mas – перемещаемый операнд

  1. Счетчик адреса обозначается $ - вместо знака $ транслятор подставляет текущее значение счетчика адреса, которое может быть использовано в командах МП. Счетчик адреса – значение смещения текущей машинной команды относительно начала сегмента кода.

Например:

jmp $+3 – перейти на команду, адрес которой увеличивается на 3 относительно адреса текущей команды.

  1. Регистровый операнд – это имя регистра

mov al, 4

al – регистровый операнд

  1. Структурные операнды – используются для доступа к конкретному Элементу структуры (записи).

  1. Базовый и индексный регистры, которые используются для базовой/индексной адресации

Трансляторы TASM и MASM допускают использование выражений.

Выражение – это комбинация операндов и операторов, рассматриваемых как единое целое.