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