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

1.4.7 Непосредственная адресация

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

Пример

mov #1234, R12

В этом примере число 1234 загружается в регистр R12.

Абсолютная адресация не является самостоятельным типом. При кодировке данной команды ассемблер заменяет эту инструкцию следующей последовательностью:

mov @PC+, R12

dw 1234

В данной реализации код команды mov занимает в памяти два байта. После вычитывания кода команды содержимое регистра PC автоматически увеличивается на 2, после чего PC содержит адрес, по которому располагается константа 1234. Согласно алгоритму работы косвенной адресации, содержимое ячейки памяти, адрес которой находится в PC (т.е. значение 1234), пересылается в R12, после чего содержимое PC опять увеличивается на 2, т.к. задан режим с автоинкрементом. Таким образом, после исполнения команды PC будет содержать адрес следующей за директивой dw инструкции.

Следует заметить, однако, что в том случае, если в качестве константы в программе указано одно из значений, генерируемых генератором констант, ассемблер автоматически подставит более короткий код, со ссылкой на регистры R2/R3 в зависимости от значения этой константы.

2. Система команд msp микроконтроллеров

Все команды MSP можно разделить на основные (базовые) и эмулированные. Основные команды – это инструкции, которые собственно исполняет процессор. Эмулированные команды представляют собой мнемоники, которые на этапе компиляции автоматически заменяются ассемблером на ту или другую команду из основного набора. Всего имеется 27 базовых команд и 24 эмулируемых.

Базовые команды условно делятся на 3 группы: это двухадресные команды, одноадресные команды и команды переходов.

Для описания действий процессора при исполнении инструкций введем некоторые обозначения:

src (source) – операнд источник, может быть представлен любым типом адресации;

dst (destination) – операнд приемник, может быть представлен регистровым, индексным, символьным или абсолютным режимами адресации;

label – метка в теле программы;

LSB (less significant bit) - младший значащий бит;

MSB (most significant bit) - старший значащий бит;

+ операция арифметического сложения;

- операция арифметического вычитания;

& операция ЛОГИЧЕСКОЕ И;

| операция ЛОГИЧЕСКОЕ ИЛИ;

^ операция ИСКЛЮЧАЮЩЕЕ ИЛИ;

~ операция ЛОГИЧЕСКОЙ ИНВЕРСИИ;

 операция записи.

2.1. Двухадресные команды

  • Команда: MOV - MOVe – пересылка.

Синтаксис: mov src, dst

Операция: dst src

Описание: Содержимое src записывается в dst

Флаги: Не модифицируются

Пример: Переслать содержимое R8 в ячейку памяти, адрес которой хранится в R12

mov R8, 0(R12)

  • Команда: ADD - прибавить

Синтаксис: add src, dst

Операция: dst dst+src

Описание: Содержимое src прибавляется к содержимому dst

Флаги: флаги CZNV модифицируются согласно результату операции

Пример: Прибавить число 35 к содержимому ячейки памяти с адресом 200h

add #35, &200h

  • Команда: ADDC - ADD with Carry - прибавить с учетом переноса

Синтаксис: addс src, dst

Операция: dst st+src+С

Описание: К содержимому dst прибавляется содержимое src и флаг C.

Флаги: флаги CZNV модифицируются согласно результату операции

  • Команда: SUB - SUBtract - вычесть

Синтаксис: sub src, dst

Операция: dstdst-src

Описание: Из содержимого dst вычитается содержимое src

Флаги: флаги CZNV модифицируются согласно результату операции

Пример : Из содержимого R12 вычесть содержимое ячейки памяти с адресом 22Ah

sub &22Ah, R12

  • Команда: SUBC - SUBtract with Carry - вычесть c учетом переноса

Синтаксис: subс src, dst

Операция: dstdst-src-1+C

Описание: Из содержимого dst вычитается содержимое src и инверсия C

Флаги: флаги CZNV модифицируются согласно результату операции

  • Команда: CMP - CoMPare - сравнить

Синтаксис: cmp src, dst

Операция: dst-src

Описание: Из содержимого dst вычитается содержимое src, результат никуда не заносится

Флаги: флаги CZNV модифицируются согласно результату операции

Пример : Сравнить содержимое ячейки памяти, адрес которой находится в регистре R12 с числом 100

cmp #100, 0(R12)

  • Команда: DADD - Decimal ADDition - сложение операндов в BCD формате с учетом переноса

Синтаксис: dadd src, dst

Операция: dst dst + src + C

Описание: Команда используется в предположении, что оба операнда имеют двоично-десятичную кодировку - BCD (Binary Coded Decimal). BCD кодировка используется в основном для подготовки числовых данных, поразрядно выводимых на индикатор.

BCD кодировка предполагает, что в каждом полубайте операнда может находиться число в диапазоне 0 - 9. При сложении двух BCD чисел результатом исполнения команды является также правильное BCD число.

Флаги: флаги CZNV модифицируются согласно результату операции

Пример : Пусть R5 содержит значение 1234h, а R6 – 6789h. При выполнении команды

dadd R5, R6

регистр R6 получит значение 8023h. Т.е. шестнадцатеричные цифры трактуются как десятичные. В противоположность этому при тех же исходных условиях команда

add R5, R6

загрузит в R6 значение 79BDh. Это происходит потому, что

1234h+6789h=4660+26505=31165=79BDh

  • Команда: AND - логическое И

Синтаксис: and src, dst

Операция: dst dst & src

Описание: В операнд приемник записывается значение побитной операции ЛОГИЧЕСКОЕ И между содержимым источника src и приемника dst.

Флаги: флаги ZN модифицируются согласно результату операции, С = ~Z, V=0

Пример: Сбросить 7, 6 и 4 биты в регистре R12

and #2Fh, R12

  • Команда: BIT - BIt Test - тестирование бит

Синтаксис: bit src, dst

Операция: dst & src

Описание: Выполняет те же действия, что и команда AND, однако результат никуда не записывается

Флаги: флаги ZN модифицируются согласно результату операции, С = ~Z, V=0

Пример: Проверить состояние младшего бита регистра R12

bit #1, R12

  • Команда: BIS - BIt Set - установка бит

Синтаксис: bis src, dst

Операция: dst src | dst

Описание: В приемнике dst устанавливаются в единицы те биты, которые были установлены в источнике src. Фактически выполняется операция ЛОГИЧЕСКОЕ ИЛИ.

Флаги: Не модифицируются

Пример: Установить 7-й и 1-й бит в регистре R12

bis.b #82h, R12

  • Команда: BIC - BIt Clear - сброс бит

Синтаксис: biс src, dst

Операция: dst ~src & dst

Описание: В приемнике dst сбрасываются в ноль те биты, которые были установлены в источнике src. Фактически выполняется операция ЛОГИЧЕСКОЕ И между приемником и битовой инверсией источника

Флаги: Не модифицируются

  • Команда: XOR - eXlusive OR - логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ

Синтаксис: xor src, dst

Операция: dst src ^ dst

Описание: В операнд приемник записывается значение побитной операции ИСКЛЮЧАЮЩЕЕ ИЛИ между содержимым источника и приемника.

Флаги: флаги ZN модифицируются согласно результату операции,

С = ~Z,

V=1, если оба операнда отрицательные, в противном случае V=0.

Все двухадресные команды поддерживают как байтовую, так и словную форму.

Объем памяти, занимаемый двухадресными командами, а также скорость их исполнения не зависит от конкретной команды, а определяется исключительно режимом адресации приемника и источника. В таблице 2 приведены значения скорости исполнения команды и объем памяти, занимаемый командой, в зависимости от режима адресации источника/приемника. В числителе приведена скорость исполнения в машинных циклах, в знаменателе – объем памяти в байтах.

Таблица 2

Регистровый

Индексный

Символьный

Абсолютный

Регистровый

1 / 2

4 / 4

4 / 4

4 / 4

Индексный

3 / 4

6 / 6

6 / 6

6 / 6

Символьный

3 / 4

6 / 6

6 / 6

6 / 6

Абсолютный

3 / 4

6 / 6

6 / 6

6 / 6

Косвенный

2 /2

5 / 4

5 / 4

5 / 4

Косв. с автоинк.

2 / 2

5 / 4

5 / 4

5 / 4

Непосредственный

2 /4

5 / 6

5 / 6

5 / 6

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