Скачиваний:
401
Добавлен:
22.01.2014
Размер:
3.74 Mб
Скачать

7.3 Многокомпонентные способы адресации.

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

- прямая + косвенная регистровая;

- косвенная регистровая + косвенная регистровая.

Схемы двухкомпонентных способов адресации приведены на рис. 7.5.

В случае адресации по базе исполнительный адрес формируется по схеме, приведенной на рис.7.5.а,

Пример:

Адресация по базе необходима для организации доступа к конкретным полям блока данных, адреса которого могут быть неизвестены во время написания программы. Например, размещение блока данных определяется только в момент загрузки. В такой ситуации переменный адрес начала блока (базу) удобно располагать в регистре brеg (базовом), а известный относительный адрес элемента (индекс) хранить непосредственно в команде.

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

Пример:

Однако методика ее использования иная.

Рис.7.5.

Индексная адресация применяется при последовательном доступе к элементам структурированных данных (массив, таблица, очередь и т.д.), начальный адрес размещения которых (база) известен. При этом номер элемента структуры (индекс) является переменной, вычисляемой во время исполнения программы, поэтому индекс удобно хранить в регистре ireg (индексном), а базу - в объектном коде команды.

Отличие индексной адресации от адресации по базе состоит в том, что в объектном коде должен храниться полный адрес памяти base=еа.

Разновидностью адресации по базе является относительная адресация (рис.7.5.в).

В этом случае в качестве базового регистра breg используется РС, указываемый неявно. Данный способ адресации используется, например, в командах безусловного перехода:

В командах хранится смещение относительно текущего значения РС.

Относительная адресация применяется для создания позиционно-независимых программ, т.е. программ, работа которых не зависит от их размещения в памяти.

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

Лекция №8 основы проограммирования на языке ассемблера для мп i8086.

План лекции

1. Понятие встроенного ассемблера.

2. Формат команд на языке встроенного ассемблера.

3. Архитектура МП i8086.

4. Основные команды ассемблера.

5. Примеры простых программ.

8.1. Формат команд на языке встроенного ассемблера.

Для программирования задач реального времени (разработки управляющих программ), как правило, пользуются языком программирования низкого уровня - Ассемблер. Это вызвано рядом причин:

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

- во-вторых, возможность управления всеми ресурсами вычислительной системы;

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

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

- язык программирования высокого уровня для ввода исходных данных и вывода результата;

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

В данном разделе рассмотрены основы построения программ с использованием языков Турбо Паскаль и Ассемблер для ПК типа IBM PC/AT. Начиная с версии 6.0, Турбо Паскаль имеет так называемый встроенный Ассемблер, позволяющий писать программы или их части на языке Ассемблера. Фрагменты, написанные на языке Ассемблера, могут произвольным образом чередоваться с частями, написанными на Турбо Паскале, однако программист должен строго соблюдать следующее условие: к моменту завершения ассемблерной части содержимое регистров BP, SP, SS, DS МП должно быть точно таким, каким оно было при входе в ассемблерную часть программы.

Ассемблерная часть начинается зарезервированным словом asm и заканчивается словом end; между этими словами могут размещаться одно или несколько предложений языка Ассемблера:

asm

< предложения языка Ассемблера>

end;

Каждое предложение размещается на отдельной строке. Допускается также размещать несколько предложений на отдельной строке, разделяя их символами “;” .

В общем случае, каждое предложение имеет следующую структуру:

<метка> <код инструкции> <операнды>.

Любая из этих частей может быть опущена .

Часть <метка> - именует команду программы и определяет локальную метку. Метки используются в качестве операндов в командах передачи управления. Локальные метки начинаются символом @, они легко распознаются Ассемблером и не нуждаются в предварительном описании. В конце локальной метки ставится символ “:”.

Часть <код инструкции> определяет код команды центрального процессора ПК и/или арифметического сопроцессора (Intel 8086, 8088, 80286, 80287 и т.д.).

Часть <операнды> содержит необходимые операнды данной команды процессора (сопроцессора).

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

Язык Ассемблера является машинноориентированным языком, это означает, что он определяется типом процессора. Вследствие этого, для того чтобы научиться писать программы на Ассемблере для МПС, необходимо прежде всего познакомиться с архитектурой МП.

МП Intel 8086 из всего семейства МП фирмы Intel 80x86 обладает наиболее простой архитектурой и кроме того, при его разработке были использованы основные принципы, которые в дальнейших версиях МП получили свое развитие.

Поэтому знакомство с Ассемблером для ПЭВМ фирмы Intel IBM PC/АТ мы начнем с рассмотрения архитектуры МП i8086 .