Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
всё.doc
Скачиваний:
30
Добавлен:
11.03.2015
Размер:
742.4 Кб
Скачать

7.3. Система команд языка Ассемблер микроконтроллера

Система команд MCS-51 поддерживает единый набор инструкций, который предназначен для реализации алгоритмов управления исполни-тельными устройствами. Существует возможность использования быстрых методов адресации к внутреннему ОЗУ, осуществление битовых операций над небольшими структурами данных. Имеется развернутая система адресации однобитовых переменных, как самостоятельного типа данных, позволяющая использовать отдельные биты в логических и уп-равляющих командах булевой алгебры. Ниже представлен обзор инструкций с кратким описанием их использования. Все ссылки на язык ассемблера приводятся применительно к продукту «Intel’s MCS-51 Macro Assembler ASM51».

7.3.1. Режимы адресации

Набор команд MCS-51 поддерживает следующие режимы адресации:

Прямая адресация (Direct addressing). Операнд определяется 8-битным адресом в инструкции. Прямая адресация используется только для внутренней памяти данных и регистров SFR.

Косвенная адресация (Indirect addressing). В этом случае инструк-ция адресует регистр, содержащий адрес операнда. Данный вид адреса-ции используется для внешнего и верхней половины внутреннего ОЗУ.

Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP. Для 16-битной адресации используется только «регистр указателя данных» (DPTR).

Регистровые инструкции (Register instruction). Регистры R0-R7 текущего регистрового банка, могут быть адресованы через конкретные инструкции, содержащие 3-битовое поле, указывающее номер регистра в самой инструкции. Эти команды эффективны с точки зрения размера кода, поскольку не содержат адреса байта. Во время их выполнения осущест-вляется доступ к одному из восьми регистров выбранного банка. Посредством битов выбора банка, в PSW может осуществляться выбор одного из четырех имеющихся регистровых банков (в момент выполнения программы).

Некоторые инструкции используют индивидуальные регистры. Например, операции с аккумулятором, DPTR и т.д. Данные регистры не имеют адреса, указывающего не них; это заложено в код операции.

Непосредственная адресация (Immediate addressing). Константа может находиться в программе за кодом операции, например:

MOV A , #100

Команда производит загрузку аккумулятора десятичным числом 100. Применительно к языку ассемблера, числа также могут быть представлены в двоичном, десятичном и шестнадцатиричном выражении, например 64h.

Индексная адресация (Indexed addressing). Индексная адресация может использоваться только для доступа к программной памяти и толь-ко в режиме чтения. В этом режиме осуществляется просмотр таблиц в памяти программ. Шестнадцатибитовый регистр (DPTR или программный счетчик) указывает базовый адрес требуемой таблицы, а аккумуляторна точку входа в нее. Адрес таблицы располагается в программной памяти и складывается из значений аккумулятора и регистра.

Другой метод индексной адресации предназначен для «перехода по выбору» (Case jump). При этом адрес инструкции перехода вычисляется как сумма базового указателя и аккумулятора.