logo
Кафедра “Системы автоматического управления”

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 .