Файл: Семейство микроконтроллеров 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 |
|