Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2843

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

MSP430x1xxFamily

Эмуляция

MOV @SP+, dst или MOV.W @SP+, dst MOV.B @SP+, dst

Описание

Содержимое стека, на которое указывает указатель стека (TOS) помещается в

получатель. Затем указатель стека инкрементируется на два.

Биты статуса

Биты статуса не изменяются

Восстановление из стека содержимого регистра R7 и регистра статуса.

Пример

POP

R7

;Восстановление R7

POP

SR

;Восстановление регистра статуса

Пример

Восстановление из стека содержимого байта ОЗУ LEO.

POP.B

LEO

;Младший байт помещается из стека в LEO

Восстановление из стека содержимого регистра R7.

Пример

POP.B

R7

;Младший байт помещается из стека в R7,

;старший байт регистра R7 равен 00h

Восстановление из стека содержимого ячейки памяти, указанной в регистре

R7 и содержимого регистра статуса.

POP.B

0(R7)

;Младший байт помещается из стека

;в байт, который указан в регистре R7

;Пример:

R7=203h

Пример

;

Mem(R7) = младший байт

;

системного стека

;Пример:

R7=20Ah

;

Mem(R7) = младший байт

POP

SR

;

системного стека

Примечание: указатель системного стека

Указатель системного стека (SP) всегда инкрементируется на два, независимо от наличия суффикса байта.

PUSH[.W]

Помещение слова в стек

PUSH.B

Помещение байта в стек

Синтаксис

PUSH src или PUSH.W src PUSH.B src

Операция

SP - 2 → SP

src → @SP

Описание

Указатель стека декрементируется на два, затем операнд источника помеща-

ется в слово ОЗУ, адрес которого содержит указатель стека (TOS).

Биты статуса

Биты статуса не изменяются

Биты режима

Биты OSCOFF, CPUOFF и GIE не изменяются

Содержимое регистра статуса и регистра R8 сохраняются в стеке.

Пример

PUSH

SR

;сохранение регистра статуса

PUSH

R8

;сохранение регистра R8

Сохранение содержимого периферии TCDAT в стеке.

Пример

PUSH.B

&TCDAT

;сохранение в стеке данных

;из 8-разрядного периферийного

;модуля, адресованного TCDAT

Примечание: указатель системного стека

Указатель системного стека (SP) всегда декрементируется на два, незави-

симо от наличия суффикса байта.

78

Библиотека Компэла


Раздел III.

16-разрядное RISC CPU

*RET

Возврат из подпрограммы

Синтаксис

RET

Операция

@SP → PC

SP + 2 → SP

Эмуляция

MOV @SP+, PC

Адрес возврата, помещенный в стек командой CALL посылается в счетчик

Описание

команд. Программа продолжается с адреса кода, следующего за адресом

команды вызова подпрограммы.

Биты статуса

Биты статуса не изменяются

RETI

Возврат из прерывания

Синтаксис

RETI

Операция

TOS → SR, SP + 2 → SP, TOS → PC, SP + 2 → SP

Регистр состояния восстанавливает свое исходное значение, существовавшее

до начала процедуры обработки прерывания, замещая текущее содержимое

SR содержимым TOS. Указатель стека (SP) инкрементируется на два. Счетчик

Описание

команд восстанавливает свое исходное значение, имевшееся до начала об-

работки прерывания. Это следующий шаг после прерывания нормального

хода программы. Восстановление выполняется путем замещения текущего

содержимого PC содержимым TOS. Указатель стека (SP) инкрементируется.

N:восстанавливается из системного стека

Z:восстанавливается из системного стека

Биты статуса

C:восстанавливается из системного стека

V:восстанавливается из системного стека

Биты режима Биты OSCOFF, CPUOFF и GIE восстанавливаются из системного стека

*RLA[.W] Арифметическая ротация влево

*RLA.B Арифметическая ротация влево

RLA dst или RLA.W dst

Синтаксис

RLA.B dst

Операция C ← MSB ← MSB–1 … LSB+1 ← LSB ← 0

ADD dst, dst

Эмуляция

ADD.B dst, dst

Операнд получателя сдвигается влево на одну позицию, как показано на рис. 3.14. Старший бит MSB сдвигается в бит переноса (С), а в младший бит LSB

Описание записывается «0». Команда RLA действует как умножение со знаком на 2. Переполнение происходит, если dst ≥ 04000h и dst < 0C000h перед выполнением операции: результат меняет знак.

Библиотека Компэла

79


MSP430x1xxFamily

Рис. 3-13. Прерывание главной программы

N:

Устанавливается, если результат отрицательный; сбрасывается,

если положительный

Z:

Устанавливается, если результат «0», в противном случае сбрасы-

вается

Биты статуса

C:

Загружается из MSB

Устанавливается, если произошло арифметическое переполнение:

исходное значение 04000h ≤ dst < 0C000h; в противном случае

V:

сбрасывается

Устанавливается, если произошло арифметическое переполнение:

исходное значение 040h ≤ dst <0C0h; в противном случае сбрасы-

вается

Биты режима

Биты OSCOFF, CPUOFF и GIE не изменяются

Рис. 3-14. Операнд получателя – арифметический сдвиг влево

80

Библиотека Компэла


Раздел III.

16-разрядное RISC CPU

Пример

Содержимое регистра R7 умножается на 2.

RLA R7

;Сдвиг влево R7 (умножение на 2)

Младший байт регистра R7 умножается на 4.

RLA.B R7

;Сдвиг влево младшего байта R7

Пример

RLA.B R7

;(умножение на 2)

;Сдвиг влево младшего байта R7

;(умножение на 4)

Примечание: замена RLA

Ассемблер не распознает команду:

RLA @R5+ и RLA.B @R5+

Вместо неё должна использоваться следующая команда:

ADD @R5+,-2(R5) и ADD.B @R5+,-1(R5)

*RLС[.W] Арифметическая ротация влево через перенос

*RLС.B Арифметическая ротация влево через перенос

RLС dst или RLС.W dst

Синтаксис

RLС.B dst

Операция C ← MSB ← MSB–1 … LSB+1 ← LSB ← С

Эмуляция ADDС dst, dst

Операнд получателя сдвигается влево на одну позицию, как показано на Описание рис. 3.15. Бит переноса (С) сдвигается в младший бит LSB, а старший бит

MSB сдвигается в бит переноса (С).

N:

Устанавливается, если результат отрицательный; сбрасывается,

если положительный

Z:

Устанавливается, если результат «0», в противном случае сбрасы-

вается

Биты статуса

C:

Загружается из MSB

Устанавливается, если произошло арифметическое переполнени-

еисходное значение 04000h ≤ dst < 0C000h; в противном случае

V:

сбрасывается

Устанавливается, если произошло арифметическое переполне-

ниеисходное значение 040h ≤ dst < 0C0h; в противном случае

сбрасывается

Рис. 3-15. Операнд получателя – сдвиг влево через перенос

Библиотека Компэла

81