Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2856
Скачиваний: 1
MSP430x1xxFamily
*CLRZ |
Очистка бита нулевого результата |
||
Синтаксис |
CLRZ |
||
Операция |
0 → Z или (.NOT.src .AND. dst → dst) |
||
Эмуляция |
BIC #2, SR |
||
Константа 02h инвертируется (0FFFDh) и логически умножается (AND) с |
|||
Описание |
операндом получателя. Результат помещается в получатель. Команда очистки |
||
бита нуля – это команда-слово. |
|||
N: |
Не изменяется |
||
Биты статуса |
Z: |
Сбрасывается в «0» |
|
C: |
Не изменяется |
||
V: |
Не изменяется |
||
Биты режима |
Биты OSCOFF, CPUOFF и GIE не изменяются |
||
Пример |
Бит нуля в регистре статуса очищается. |
||
CLRZ |
|||
CMP[.W] |
Сравнение источника и получателя |
||||||
CMP.B |
Сравнение источника и получателя |
||||||
Синтаксис |
CMP src,dst или CMP.W src,dst |
||||||
CMP.B src, dst |
|||||||
Операция |
dst + .NOT.src + 1 или (dst – src) |
||||||
Операнд источника вычитается из операнда получателя. Это выполняется |
|||||||
Описание |
прибавлением дополнения до единицы операнда источника плюс 1. Оба |
||||||
операнда не изменяются, а результат не сохраняется, изменяются только |
|||||||
биты статуса. |
|||||||
N: |
Устанавливается, если результат отрицательный; сбрасывается, |
||||||
если положительный (src >= dst) |
|||||||
Z: |
Устанавливается, если результат «0», в противном случае сбрасыва- |
||||||
ется (src = dst) |
|||||||
Биты статуса |
|||||||
C: |
Устанавливается, если произошел перенос из MSB результата, в |
||||||
противном случае сбрасывается |
|||||||
V: |
Устанавливается, если произошло арифметическое переполнение, в |
||||||
противном случае сбрасывается |
|||||||
Биты режима |
Биты OSCOFF, CPUOFF и GIE не изменяются |
||||||
Сравнивается содержимое R5 и R6. Если оно одинаково, выполнение про- |
|||||||
Пример |
граммы продолжается с метки EQUAL. |
||||||
CMP R5,R6 |
;R5=R6? |
||||||
JEQ EQUAL |
;Да, переход к метке EQUAL |
||||||
Сравниваются два блока в ОЗУ. Если они не эквивалентны, программа пере- |
|||||||
ходит к метке ERROR. |
|||||||
Пример |
L$1 |
MOV #NUM, R5 |
;количество слов, которые |
||||
MOV #BLOCK1,R6 |
;будут сравниваться |
||||||
;начальный адрес BLOCK1 |
|||||||
;в регистр R6 |
|||||||
Библиотека Компэла |
|||||||
64 |
|||||||
Раздел III. |
16-разрядное RISC CPU |
|||||||
L$1 MOV #BLOCK2,R7 |
;начальный адрес BLOCK2 |
|||||||
CMP @R6+,0(R7) |
;в регистр R7 |
|||||||
;сравнение содержимого |
||||||||
;ячеек и инкремент R6 |
||||||||
Пример |
JNZ ERROR |
;если не равны, переход |
||||||
INCD R7 |
;к метке ERROR |
|||||||
;если равны инкремент R7 |
||||||||
DEC R5 |
;декрементировать R5 |
|||||||
JNZ L$1 |
;если сравнение не заверше- |
|||||||
;но – продолжить |
||||||||
Сравниваются байты в ОЗУ, адресованные метками EDE и TONI. Если они |
||||||||
Пример |
одинаковы, выполнение программы продолжается с метки EQUAL. |
|||||||
CMP.B EDE, TONI |
;MEM(EDE)=MEM(TONI)? |
|||||||
JEQ |
EQUAL |
;Да,переход к метке EQUAL |
||||||
*DADC[.W] |
Десятичное сложение переноса с получателем |
|||||||
*DADC.B |
Десятичное сложение переноса с получателем |
|||||||
Синтаксис |
DADC dst или DADC.W src,dst |
|||||||
DADC.B dst |
||||||||
Операция |
dst + C → dst (десятичное) |
|||||||
Эмуляция |
DADD |
#0, dst |
||||||
DADD.B #0, dst |
||||||||
Описание |
Бит переноса (С) десятично прибавляется к получателю |
|||||||
N: |
Устанавливается, если MSB равен «1» |
|||||||
Z: |
Устанавливается, если dst равен «0»; в противном случае сбрасы- |
|||||||
вается |
||||||||
Биты статуса |
Устанавливается, если получатель инкрементируется от 9999 до |
|||||||
0000; в противном случае сбрасывается. Устанавливается, если |
||||||||
C: |
||||||||
получатель инкрементируется от 99 до 00; в противном случае |
||||||||
сбрасывается |
||||||||
V: |
Не определено |
|||||||
Биты режима |
Биты OSCOFF, CPUOFF и GIE не изменяются |
|||||||
Десятичное число из четырех цифр, содержащееся в регистре R5 прибавля- |
||||||||
ется к десятичному числу из восьми цифр, указанному в регистре R8. |
||||||||
CLRС |
;сброс переноса |
|||||||
Пример |
;стартовое условие для следующих |
|||||||
DADD R5,0(R8) |
;команд задано |
|||||||
;сложение LCDs и переноса |
||||||||
DADC 2(R8) |
;прибавление переноса к MSD |
|||||||
Десятичное число из двух цифр, содержащееся в регистре R5 прибавляется к |
||||||||
десятичному числу из четырех цифр, указанному в регистре R8. |
||||||||
CLRС |
;сброс переноса |
|||||||
Пример |
;стартовое условие для следующих |
|||||||
;команд задано |
||||||||
DADD.B R5,0(R8) ;сложение LCDs и переноса |
||||||||
DADC 1(R8) |
;прибавление переноса к MSD |
|||||||
Библиотека Компэла |
||||||||
65 |
||||||||
MSP430x1xxFamily
DADD[.W] Десятичное сложение источника, переноса и получателя
DADD.B Десятичное сложение источника, переноса и получателя
DADD src,dst или DADD.W src,dst
Синтаксис
DADD.B src, dst
Операция src + dst + C → dst (десятичное)
Операнды источника и получателя обрабатываются как четыре двоичнодесятичных числа (BCD – Binary Coded Decimal) с положительными знаками.
Описание
Операнд источника и бит переноса (С) десятично прибавляются к операнду получателя. Операнд источника не изменяется. Предыдущее содержимое получателя теряется. Для чисел, представленных не в BCD-формате, результат не определен.
N: |
Устанавливается, если MSB равен «1»; сбрасывается в противном |
|
случае |
||
Z: |
Устанавливается, если результат равен «0»; в противном случае |
|
сбрасывается |
||
Биты статуса |
||
C: |
Устанавливается, если результат превышает 9999Устанавливается, |
|
если результат превышает 99 |
||
V: |
Не определено |
|
Биты режима Биты OSCOFF, CPUOFF и GIE не изменяются
BCD-число из восьми цифр, содержащееся в регистрах R5 и R6, десятично прибавляется к BCD-числу из восьми цифр, содержащемуся в регистрах R3 и R4 (регистры R6 и R4 содержат MSD).
Пример |
CLRС |
;очистка переноса |
||||
DADD R5,R3 |
;сложение LSDs |
|||||
DADD R6,R4 |
;сложение MSDs и переноса |
|||||
JC |
OVERFLOW |
;если произошел перенос, выполняется |
||||
;переход в подпрограмму обработки |
||||||
;ошибок |
||||||
Десятичный счетчик из двух цифр в байте ОЗУ с меткой «CNT» инкременти- |
||||||
руется на единицу. |
;сброс переноса |
|||||
CLRС |
#1,CNT |
|||||
Пример |
DADD.B |
;инкремент десятичного счетчика |
||||
или |
||||||
SETC |
#0,CNT |
;≡ DADC.B CNT |
||||
DADD.B |
||||||
*DEC[.W] |
Декремент получателя |
|||||
*DEC.B |
Декремент получателя |
|||||
Синтаксис |
DEC dst или DEC.W dst |
|||||
DEC.B dst |
||||||
Операция |
dst - 1 → dst |
|||||
Эмуляция |
SUB |
#1, dst |
||||
SUB.B #1, dst |
||||||
Библиотека Компэла |
||||||
66 |
||||||
Раздел III. |
16-разрядное RISC CPU |
Описание
Операнд получателя уменьшается (декрементируется) на единицу. Исходное содержимое теряется.
N: |
Устанавливается, если результат отрицательный; сбрасывается, |
|||
если положительный |
||||
Z: |
Устанавливается, если dst содержал «1»; в противном случае сбра- |
|||
сывается |
||||
C: |
Сбрасывается, если получатель содержал «0»; в противном случае |
|||
устанавливается |
||||
Биты статуса |
||||
Устанавливается, если произошло арифметическое переполнение; |
||||
в противном случае сбрасывается; |
||||
V: |
Устанавливается, если исходное значение получателя было 08000h, |
|||
в противном случае сбрасывается; |
||||
Устанавливается, если исходное значение получателя было 080h, в |
||||
противном случае сбрасывается |
||||
Биты режима Биты OSCOFF, CPUOFF и GIE не изменяются |
||||
Пример |
Содержимое регистра R10 декрементируется на 1. |
|||
DEC R10 |
;декремент R10 |
|||
Пересылка блока из 255 байт, расположенного в памяти начиная с адреса, указанного меткой EDE, в область памяти, начало которой указано меткой TONI. Таблицы не должны наложиться: стартовый адрес назначения TONI должен находиться вне диапазона от EDE до EDE+0FEh.
MOV #EDE,R6
MOV #255,R10
L$1 MOV.B @R6+,TONI-EDE-1(R6)
DEC R10
JNZ L$1
Не следует перемещать таблицы, используя приведенную выше подпрограмму; с перекрытием, показанным на рис. 3.12.
Рис. 3-12. Перекрытие (наложение) при декременте
Библиотека Компэла |
67 |
|
MSP430x1xxFamily
*DECD[.W] |
Двойной декремент получателя |
||||
*DECD.B |
Двойной декремент получателя |
||||
Синтаксис |
DECD |
dst или DECD.W dst |
|||
DECD.B dst |
|||||
Операция |
dst - 2 → dst |
||||
Эмуляция |
SUB |
#2, dst |
|||
SUB.B #2, dst |
|||||
Описание |
Операнд получателя уменьшается (декрементируется) на два. Исходное |
||||
содержимое теряется. |
|||||
N: |
Устанавливается, если результат отрицательный; сбрасывается, |
||||
если положительный |
|||||
Z: |
Устанавливается, если dst содержал «2»; в противном случае сбра- |
||||
сывается |
|||||
C: |
Сбрасывается, если получатель содержал «0»; в противном случае |
||||
Биты статуса |
устанавливается |
||||
Устанавливается, если произошло арифметическое переполнение; |
|||||
в противном случае сбрасывается; |
|||||
V: |
Устанавливается, если исходное значение получателя было 08001h |
||||
или 08000h, в противном случае сбрасывается; |
|||||
Устанавливается, если исходное значение получателя было 081h |
|||||
или 080h, в противном случае сбрасывается |
|||||
Биты режима |
Биты OSCOFF, CPUOFF и GIE не изменяются |
||||
Пример |
Содержимое регистра R10 декрементируется на 2. |
||||
DECD R10 |
;декремент R10 на два |
||||
Пересылка блока из 255 слов, расположенного в памяти начиная с адреса, указанного меткой |
|||||
EDE, в область памяти, начало которой указано меткой TONI. Таблицы не должны наложиться: |
|||||
стартовый адрес назначения TONI должен находиться вне диапазона от EDE до EDE+0FEh. |
|||||
MOV |
#EDE, R6 |
||||
MOV |
#510, R10 |
||||
L$1 MOV |
@R6+, TONI-EDE-2(R6) |
||||
DECD |
R10 |
||||
JNZ |
L$1 |
||||
Содержимое ячейки памяти LEO декрементируется на два. |
|||||
Пример |
DECD.B LEO |
;декремент MEM(LEO) |
|||
Декремент байта статуса STATUS на два. |
|||||
DECD.B STATUS |
|||||
*DINT |
Запрещение (общее) прерываний |
||
Синтаксис |
DINT |
||
Операция |
0 → GIE или (0FFF7h .AND. SR → SR/.NOT.src .AND. dst |
||
→ dst) |
|||
Эмуляция |
BIC #8,SR |
||
Библиотека Компэла |
|||
68 |
|||