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

11. Применение косвенной адресации

Косвенная адресация позволяет преобразовать данные в адрес. Особенно часто возникает, когда адрес-переменная величина. Для косвенной адресации адрес записывается в одном из регистров.

Например:

Mov # OFFo8h, R5 OFF08h R5

Значение адреса памяти

Mov R4, @ R5 R4 M

Косвенная адресация

Пример: записать нулевое значение во все регистры общего назначения.

R4 R15 0000

12. Команды процессора и эмулируемые команды

MSP430 имеет архитектуру с единым адресным пространством для команд и данных. Память может адресоваться как побайтово, так и пословно. Порядок хранения 16-разрядных слов — от младшего к старшему.

Процессор содержит 16 16-разрядных регистров. Регистр R0 используется как программный указатель, регистр R1 как указатель, регистр R2 как регистр статуса, а R3 как специальный регистр (генератор констант) , R2 также может использоваться в качестве генератора констант. Генератор констант используется для сокращения общей длины команды вследствие неявного представления константы в коде операции. Регистры с R4 по R15 используются как регистры общего назначения.

Система команд является полностью ортогональной, то есть любую команду можно применять к любым из внутренних регистров, применяя различные способы адресации(регистровый, абсолютный, косвенный, непосредственный и т.д.).

Составляя программу, следует размещать данные во внутренних регистрах микроконтроллера и памяти с учетом организации адресного пространства.

Система команд содержит операции пересылки, арифметические и логические операции, а так же команды перехода. Арифметические команды это суммирование, вычитание и декрементирование. Умножение выполняется посредством обращения к аппаратному умножителю.

При составлении программы можно использовать операции с 16-разрядными словами и байтами. Байтовые команды должны иметь расширение мнемокода .b, например, mov.b R11,R12.

Адрес 16 разрядного слова всегда четный, причем по четному адресу хранится младший байт слова. Данные величиной в байт могут иметь как четный, так и нечетный адрес.

Выполнение команд условных переходов зависит от состояния флагов, хранящихся в регистре состояния SR, а флаги отображают свойства последнего результата работы АЛУ.

Система команд MSP430

Мнемокод

Комментарии

Команды с 2 операндами

MOV s,d

ADD s,d

ADDC s,d

SUB s,d

SUBC s,d

CMP s,d

DADD s,d

BIT s,d

BIC s,d

BIS s,d

XOR s,d

AND s,d

s→d

s+d→d

s+d+c→d

d-s→d

d-s+c-1→d

d-s→установка флагов

s+d+c→d

s∩d→установка флагов

∩d→ d

sUd→d

s d→d

s∩d→d

Команды с 1 операндом

RRC d

RRA d

PUSH s

SWPB d

CALL d

RETI d

SXT d

Сдвиг вправо через перенос

Сдвиг вправо, мл. байт в перенос

Запись в стек

Перестановка байтов

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

возврат

Заполнение знаком

Команды перехода

JZ m

JNZ m

JC m

JNC m

JN m

JGE m

JL m

JMP m

Если 0,(z=1)

Если не 0,(z=0)

Если перенос,(с=1)

Если не перенос,(с=0)

Если отрицательно,(N=1)

Если N V=0

Если N V=1

Без условия

Другие команды, поддерживаемые ассемблером MSP430, образуются из основных и именуются эмулируемыми

CLRZ - очистка флага Z регистра состояния процессора (PSW) ( BIC #2,SR )

CLRN - очистка флага N регистра состояния процессора (PSW) ( BIC #4,SR )

CLRC - очистка флага C регистра состояния процессора (PSW) ( BIC #1,SR )

SETZ - установка флага Z регистра состояния процессора (PSW) ( BIS #2,SR )

SETN - установка флага N регистра состояния процессора (PSW) ( BIS #4,SR )

SETC - установка флага C регистра состояния процессора (PSW) ( BIS #1,SR )

EINT - разрешение прерываний ( BIC #8,SR )

DINT - запрещение прерываний ( BIS #8,SR )

CLR dst - очистка операнда ( MOV #0,dst )

TST dst - проверка операнда на ноль ( CMP #0,dst )

INV dst - инвертирование битов операнда ( XOR #-1,dst )

ADC dst - прибавление переноса к операнду ( ADDC #0,dst )

DADC dst - десятичное сложение переноса с получателем ( DADD #0,dst )

SBC dst - вычитание переноса из операнда ( SUBC #0,dst)

INC dst - инкремент операнда ( ADD #1,dst )

DEC dst - декремент операнда ( SUB #1,dst )

INCD dst - увеличение на 2 операнда ( ADD #2,dst )

DECD dst - уменьшение на 2 операнда ( SUB #2,dst )

RLA dst - сдвиг влево операнда, флаг переноса заполняется из старшего бита, а младший бит результата -0 ( ADD dst,dst )

RLC dst - сдвиг влево операнда с использование переноса ( ADDC dst,dst )

RET - возврат из подпрограммы ( MOV @sp+,pc )

POP dst - извлечение операнд из стека ( MOV @sp+,dst )

BR dst - переход в программе используя операнд ( MOV dst,pc)

NOP - нет операции ( MOV r3,r3 )

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