Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_НВВ.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.51 Mб
Скачать

1.3. Байтовая и словная формы инструкций.

16-ти разрядное арифметико-логическое устройство процессора имеет возможность оперировать как с 16-ти разрядными, так и с 8-ми разрядными данными. Для того чтобы показать, с данными какой разрядности должен работать процессор, большинство команд (инструкций процессора) имеют байтовую (8 бит) и словную (16 бит) формы. Для этого используются суффиксы ‘b (byte) и ‘w (word), записываемые после мнемоники инструкции и отделенные от нее десятичной точкой. Например, запись ‘mov.bопределяет байтовую, а запись ‘mov.w’ – словную форму команды ‘mov’. В том случае, если после мнемоники команды суффикс вообще не ставится, по умолчанию, подразумевает словная форма.

Все ячейки памяти ОЗУ могут быть рассмотрены как массив байт, в случае обращения к ним с использования байтовой формы инструкции или как массив слов – для словной формы. То же самое можно сказать о Flash памяти, т.к. для микроконтроллеров с фон-неймановской архитектурой, по крайней мере, чтение данных из памяти программ, ничем не отличается от чтения ОЗУ. Однако адресация памяти в MSP микроконтроллерах всегда производится побайтно. При этом младшие байты 16-ти разрядных слов всегда должны иметь четные адреса, а старшие байты – адрес на единицу больше адреса его младшего байта. Адрес 16-ти разрядной ячейки памяти совпадает с адресом ее младшего байта. Например, словная ячейка памяти с адресом 200h состоит из младшего байта, который также имеет адрес 200h, и старшего байта с адресом 201h. Использование словных инструкций применительно к ячейкам памяти с нечетными адресами может вызвать либо ошибку трансляции при явном определении адреса, либо непредсказуемое поведении процессора при косвенной адресации.

Регистры регистрового файла не имеют деления на старший и младший байты и всегда воспринимаются как 16-ти разрядные. Однако это не значит, что к ним не применимы байтовые формы инструкций, при этом регистр может выступать как в качестве источника данных, так и в качестве приемника. В том случае, если регистр выступает в качестве источника в байтовой инструкции, используется только содержимое его младших 8-ми бит, при этом содержимое всего регистра не меняется. Если регистр используется как приемник, данные записываются в его младшие 8 разрядов, при этом старшие разряды обнуляются.

Пример.

Пусть изначально регистр R4 содержит шестнадцатеричное значение 1234h, байт с адресом 200h – ABh, а байт с адресом 201h – значение 89h.

Если при этих исходных данных содержимое регистра R4 переслать как байт (команда mov.b) по адресу 200h, то содержимое этой ячейки станет 34h. Содержимое ячейки по адресу 201h не изменится.

Если содержимое R4 переслать как слово (команда mov.w), ячейка с адресом 200h будет содержать значение 34h, а 201h – 12h.

Если байт с адресом 200h пересылается в R4, регистр после операции будет содержать значение ABh. Если использовать словную пересылку, содержимое регистра будет равно 89ABh.

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

Микроконтроллеры MSP имеют ортогональную систему команд. Это означает, что каждая команда может адресовать данные, используя любой доступный режим адресации. Поэтому, прежде чем рассматривать систему команд, необходимо описать все режимы адресации к данным. Как указывается в технической документации Texas Instruments, MSP микроконтроллеры поддерживают следующие режимы адресации к данным:

- регистровый;

- индексный;

- символьный;

- абсолютный;

- косвенный;

- косвенный с автоинкрементом;

- непосредственный.

При этом для источника данных доступны все режимы адресации, а для приемника – только четыре первых режима. Следует заметить, однако, что символьный и абсолютный режимы адресации являются частными случаями более общего индексного режима, а непосредственный кодируется с помощью автоинкрементного косвенного режима.

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

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