- •Перечень сокращений
- •Предисловие
- •Введение
- •Часть 1. Архитектура и аппаратные средства микроконтроллера LPC214x
- •1.1 Общие сведения о микроконтроллерах LPC214x
- •1.2 Программистская модель процессорного ядра ARM7TDMI
- •1.2.1 Режимы работы ядра ARM7
- •1.2.2 Система регистров
- •1.2.3 Слово состояния программы
- •1.2.4 Организация памяти
- •1.3 Система команд
- •1.3.1 Команды арифметической и логической обработки
- •1.3.2 Команды умножения
- •1.3.3 Команды регистровой пересылки
- •1.3.4 Команды загрузки и сохранения регистров
- •1.3.5 Команды пакетного обмена с памятью
- •1.3.6 Команды передачи управления
- •1.3.7 Команды обращения к слову состояния программы
- •1.4 Методы адресации
- •1.4.1 Непосредственная адресация
- •1.4.2 Регистровая адресация
- •1.4.3 Косвенная адресация
- •1.4.4 Индексная адресация
- •1.5 Процедура начальной загрузки и режимы отображения памяти
- •1.6 Обработка исключительных ситуаций
- •1.7 Система тактирования
- •1.7.1 Выбор тактовой частоты микроконтроллера
- •1.7.2 Настройка тактирования периферийных устройств
- •1.8 Модуль ускорения памяти
- •1.9 Внешние выводы микроконтроллера
- •1.9.1 Служебные контакты
- •1.9.2 Программно-управляемые линии ввода-вывода
- •1.9.3 Альтернативные функции линий ввода вывода
- •1.10 Цифровые порты ввода-вывода
- •1.10.1 Управление портом через низкоскоростную шину
- •1.10.2 Управление портом через высокоскоростную шину
- •1.11 Система прерываний
- •1.11.1 Назначение системы прерываний
- •1.11.2 Процесс обработки прерываний IRQ
- •1.11.3 Процесс обработки быстрых прерываний FIQ
- •1.11.4 Регистры управления системой прерываний
- •1.11.5 Порядок настройки прерывания IRQ
- •1.11.6 Порядок настройки быстрого прерывания FIQ
- •1.11.7 Процедура обработки прерывания
- •1.11.8 Задержка обработки прерывания
- •1.12 Внешние прерывания
- •1.12.1 Регистры управления блоком внешних прерываний
- •1.12.2 Порядок настройки блока внешних прерываний
- •1.13 Таймеры-счетчики
- •1.13.1 Режим таймера и схема совпадения
- •1.13.2 Режим счетчика
- •1.13.3 Схема захвата
- •1.13.4 Управляющие регистры
- •1.13.5 Формирование интервалов времени через систему прерываний
- •1.13.6 Измерение периода и длительности импульса с помощью устройства захвата
- •1.13.7 Подсчет числа импульсов в единицу времени
- •1.14 Широтно-импульсный модулятор
- •1.14.1 Основы функционирования
- •1.14.2 Дополнительные возможности
- •1.14.3 Регистры управления ШИМ
- •1.14.4 Порядок настройки ШИМ
- •1.15 Аналого-цифровые преобразователи
- •1.15.1 Краткие сведения о встроенных АЦП
- •1.15.2 Общие рекомендации по использованию АЦП
- •1.15.3 Управляющие регистры
- •1.15.4 Порядок настройки АЦП
- •1.15.5 Программный запуск аналого-цифрового преобразователя
- •1.15.6 Запуск аналого-цифрового преобразователя по таймеру
- •1.15.7 Программный опрос готовности АЦП
- •1.15.8 Опрос готовности АЦП по прерыванию
- •1.15.9 Считывание и масштабирование результата АЦП
- •1.16 Цифро-аналоговый преобразователь
- •1.16.1 Регистр управления ЦАП
- •1.16.2 Рекомендации по применению ЦАП
- •1.17 Последовательный синхронный приемо-передатчик SPI
- •1.17.1 Назначение и основы функционирования интерфейса SPI
- •1.17.2 Управляющие регистры
- •1.17.3 Передача и прием данных в режиме ведущего
- •1.17.4 Передача и прием данных в режиме ведомого
- •1.18 Последовательный синхронный приемо-передатчик I2С
- •1.18.1 Назначение и основы функционирования интерфейса I2С
- •1.18.2 Управляющие регистры
- •1.18.3 Настройка модуля I2C
- •1.18.4 Типовые циклы обмена данными по шине I2C
- •1.19 Последовательный асинхронный приемопередатчик UART
- •1.19.1 Назначение и основы функционирования порта UART
- •1.19.2 Управляющие регистры
- •1.19.3 Настройка порта UART
- •1.19.4 Прием байта с опросом флага
- •1.19.5 Передача байта с опросом флага
- •1.19.6 Прием и передача данных с использованием прерываний
- •1.19.7 Прием и передача пакетов данных
- •1.19.8 Диагностика ошибок
- •1.19.9 Автоматическая настройка скорости
- •1.20 Часы реального времени
- •1.20.1 Основные возможности часов реального времени
- •1.20.2 Управляющие регистры
- •1.20.3 Рекомендации по применению
- •1.21 Управление питанием и идентификация источников сброса
- •1.21.1 Краткие сведения о мониторе питания
- •1.21.2 Управляющие регистры
- •Часть 2. Разработка и отладка программ с помощью современных инструментальных средств
- •2.1 Форматы представления чисел
- •2.1.1 Основные коды представления целых чисел
- •2.1.2 Форматы представление целых чисел, приятные в языке Си
- •2.1.3 Форматы чисел c плавающей точкой стандарта IEEE754
- •2.2 Основы программирования на языке Си
- •2.2.1 Структура программы
- •2.2.2 Числовые константы
- •2.2.3 Переменные и именованные константы
- •2.2.4 Оператор присваивания, выражения и операции
- •2.2.5 Условный оператор
- •2.2.6 Приведение и преобразование типов
- •2.2.7 Массивы
- •2.2.8 Строки символов
- •2.2.9 Структуры
- •2.2.10 Объединения
- •2.2.11 Указатели
- •2.2.12 Ветвление
- •2.2.13 Множественное ветвление
- •2.2.14 Цикл со счетчиком
- •2.2.15 Циклы с предусловием и постусловием
- •2.2.16 Функции
- •2.2.17 Некоторые директивы компилятора
- •2.2.18 Библиотека математических функций MATH.h
- •2.2.19 Функция создания форматированных строк SNPRINTF
- •2.2.20 Ассемблер в Си-программах
- •2.3 Интегрированная среда разработки Keil µVision 4
- •2.3.1 Создание проекта
- •2.3.2 Создание файла программы
- •2.3.3 Настройка проекта
- •2.3.4 Набор текста программы
- •2.3.5 Компиляция программы
- •2.3.6 Отладка программы
- •2.3.7 Основные отладочные инструменты среды Keil µVision 4
- •2.3.8 Управление распределением памяти
- •2.4 Методика отладки программ
- •2.4.1 Быстрый поиск ошибок
- •2.4.2 Ввод и вывод дискретных сигналов
- •2.4.3 Таймер-счетчик. Формирование интервалов времени
- •2.4.4 Таймер-счетчик. Формирование внешних сигналов совпадения
- •2.4.5 Таймер-счетчик. Счетчик внешних событий
- •2.4.6 Таймер-счетчик. Устройство захвата
- •2.4.7 Широтно-импульсный модулятор
- •2.4.8 Аналого-цифровой преобразователь
- •2.4.9 Цифро-аналоговый преобразователь
- •2.4.10 Приемопередатчик SPI
- •2.4.11 Приемопередатчик I2C
- •2.4.12 Приемопередатчик UART
- •2.4.13 Часы реального времени
- •2.5 О программировании ARM7 на ассемблере
- •2.5.1 Основные правила записи программ на ассемблере
- •2.5.2 Псевдокоманды
- •2.5.3 Директивы ассемблера
- •2.5.4 Макросы
- •2.5.5 Пример простой программы
- •2.6 Распространенные средства разработки и отладки
- •2.6.1 Демонстрационные платы EA-EDU-001 и EA-EDU-011
- •2.6.2 Внутрисхемный отладчик J-Link
- •2.6.3 Утилиты программирования ПЗУ LPC Flash Utility и FlashMagic
- •2.6.4 Программа-терминал 232Analyzer
- •2.6.5 Низкоуровневый редактор диска DMDE
- •Часть 3. Решение типовых задач локального управления
- •3.1 Формирование временной задержки с помощью цикла
- •3.1.1 Задание
- •3.1.2 Общие рекомендации
- •3.1.3 Алгоритм программы
- •3.1.4 Отладка
- •3.1.5 Дополнительные сведения о формировании временной задержки
- •3.2 Формирование дискретного сигнала с помощью таймера
- •3.2.1 Задание
- •3.2.2 Общие рекомендации
- •3.2.3 Алгоритм программы
- •3.3 Опрос дискретного датчика или кнопки
- •3.3.1 Задание
- •3.3.2 Общие рекомендации
- •3.3.3 Алгоритм программы
- •3.3.4 Отладка
- •3.4 Опрос состояния механических контактов с подавлением дребезга
- •3.4.1 Задание
- •3.4.2 Общие рекомендации
- •3.4.3 Алгоритм программы
- •3.4.4 Отладка
- •3.5 Опрос клавиатуры с автоповтором
- •3.5.1 Задание
- •3.5.2 Общие рекомендации
- •3.5.3 Алгоритм программы
- •3.5.4 Отладка
- •3.6 Формирование импульсного управляющего сигнала с помощью модуля ШИМ
- •3.6.1 Задание
- •3.6.2 Общие сведения
- •3.6.3 Алгоритм программы
- •3.6.4 Отладка
- •3.6.5 Синхронизация внешним сигналом
- •3.7 Формирование сигналов специальной формы с помощью ЦАП
- •3.7.1 Задание
- •3.7.2 Основы
- •3.7.3 Алгоритм программы
- •3.7.4 Повышение точности генерирования частоты
- •3.7.5 Выбор числа дискрет
- •3.8 Управление двухфазным шаговым двигателем
- •3.8.1 Задание
- •3.8.2 Общие сведения
- •3.8.3 Алгоритм программы
- •3.9 Применение ШИМ для формирования низкочастотных аналоговых сигналов
- •3.9.1 Задание
- •3.9.2 Основные сведения
- •3.9.3 Алгоритм основной программы
- •3.9.4 Алгоритм процедуры обработки прерывания
- •3.10 Управление символьным жидкокристаллическим индикатором
- •3.10.1 Задание
- •3.10.2 Управление модулем жидкокристаллической индикации
- •3.10.3 Разработка функции управления ЖКИ с ожиданием готовности
- •3.10.4 Функция вывода строки символов
- •3.10.5 Разработка функции инициализации модуля ЖКИ
- •3.10.6 Разработка тестовой программы
- •3.10.7 Управление ЖКИ с опросом флага готовности
- •3.10.8 Программирование произвольных символов
- •3.11 Управление матричным светодиодным индикатором
- •3.11.1 Задание
- •3.11.2 Основные рекомендации
- •3.11.3 Алгоритм основной программы
- •3.11.4 Алгоритм процедуры обработки прерывания
- •3.11.5 Реализация движения строки
- •3.12 Управление матричным жидкокристаллическим дисплеем
- •3.12.1 Управление дисплеем на основе контроллера PCF8833
- •3.12.2 Построение простейших геометрических фигур
- •3.13 Измерение постоянного напряжения
- •3.13.1 Задание
- •3.13.2 Основные рекомендации
- •3.13.3 Алгоритм основной программы
- •3.13.4 Алгоритм процедуры обработки прерывания от АЦП
- •3.13.5 АЦП с циклическим опросом нескольких каналов
- •3.13.6 Автоматический выбор пределов измерения
- •3.14 Измерение параметров уровня переменного напряжения
- •3.14.1 Задание
- •3.14.2 Основные рекомендации
- •3.14.3 Алгоритм основной программы
- •3.14.4 Алгоритм процедуры обработки прерывания
- •3.15 Измерение ускорения с помощью трехосевого акселерометра
- •3.16 Измерение интервалов времени с помощью таймера
- •3.16.1 Задание
- •3.16.2 Общие рекомендации
- •3.16.3 Алгоритм основной программы
- •3.16.4 Алгоритм процедуры обработки прерывания
- •3.16.5 Повышение разрешающей способности путем усреднения
- •3.16.6 Введение поправок
- •3.17 Измерение частоты с помощью счетчика
- •3.17.1 Задание
- •3.17.2 Основные рекомендации
- •3.17.3 Алгоритм программы
- •3.17.4 Повышение точности измерений
- •3.18 Опрос цифрового датчика температуры. Интерфейс I2C
- •3.18.1 Задание
- •3.18.2 Общие рекомендации
- •3.18.3 Алгоритм программы
- •3.20 Обмен данными с электрически перепрограммируемым ПЗУ
- •3.20.1 Задание
- •3.20.2 Общие сведения о микросхемах EEPROM
- •3.20.3 Адресация в микросхемах EEPROM
- •3.20.4 Порядок чтения EEPROM
- •3.20.5 Порядок записи EEPROM
- •3.20.6 Разработка программы чтения EEPROM
- •3.20.7 Разработка функции записи блока данных в EEPROM
- •3.21 Интерфейс RS-232. Прием и передача простых команд
- •3.21.1 Задание
- •3.21.2 Алгоритм программы
- •3.21.3 Автоматическая настройка скорости
- •3.22.1 Задание
- •3.22.2 Основные рекомендации
- •3.22.3 Алгоритм программы
- •3.23 Интерфейс RS-232. Прием пакета переменной длины
- •3.23.1 Задание
- •3.23.2 Основы реализации
- •3.23.3 Алгоритм программы
- •3.24 Обмен данными с картой памяти Secure Digital
- •3.24.1 Задание
- •3.24.2 Общие сведения о карах FLASH-памяти SD/MMC
- •3.24.3 Команды SD/MMC
- •3.24.4 Процедура инициализации карты
- •3.24.5 Чтение и запись данных
- •3.24.6 Обработка ошибок
- •3.24.7 Комментарии к алгоритму и программе
- •Алфавитный указатель управляющих регистров
- •Список литературы
- •Содержание
са выше 0xE0000000. Отдельная область памяти 0x3FFF8000–0x3FFFFFFF предназначена для регистров управления портами в быстром режиме.
Организация памяти в ARM7 байтовая. Это значит, что каждый адрес указывает на ячейку размером 1 байт. В то же время хранимые в памяти данные выравниваются соответственно их разрядности. Поэтому при обращении к 16-разрядному слову адрес должен быть четным; для 32-разрядного слова адрес должен быть кратным четырем (закачиваться на шестнадцатеричные цифры 0, 4, 8, С). Обращение в байтовом режиме возможно к любому адресу.
Данные, занимающие более одного байта, хранятся с обратным порядком байт. Младший байт размещается по адресу с меньшим номером; старший байт — по адресу с большим номером.
1.3 Система команд
Cведения системе команд и методах адресации (раздел 1.4) необходимы программисту в ходе отладки, так как время от времени приходится прибегать к чтению дизассемблированной программы. Основы программирования на ассемблере рассмотрены в разделе 2.5. Там же читатель найдет пример простой программы.
Система команд ядра ARM7 включает всего 44 инструкции (не считая NOP). Отличительная особенность в том, что все инструкции являются условными. Каждая команда может быть выполнена или пропущена в зависимости от флагов состояния программы. Для этого в коде команды предусмотрено поле условия. На языке ассемблера условие обозначается двумя буквами непосредственно после мнемоники команды (сливается с командой в одно слово). Допустимые условия приведены в таблице 1.3.1.
Таблица 1.3.1 – Обозначения условных полей
Обознач. |
Условие |
Описание |
EQ |
|
Равенство. Флаг нуля установлен |
NE |
|
Неравенство. Флаг нуля сброшен |
CS/HS |
|
Больше или равно (без знака). Перенос |
CC/LO |
|
Меньше (без знака). Флаг переноса сброшен |
MI |
|
Отрицательный результат |
PL |
|
Положительный или нулевой результат |
VS |
|
Флаг переполнения установлен |
VС |
|
Флаг переполнения сброшен |
HI |
|
Больше (без знака) |
LS |
|
Меньше или равно (без знака) |
GE |
|
Больше или равно (со знаком) |
LT |
|
Меньше (со знаком) |
GT |
|
Больше (со знаком) |
LE |
|
Меньше или равно (со знаком) |
AL |
|
Всегда (безусловное выполнение) |
NV |
|
Никогда |
14
Перечень команд, сгруппированных по выполняемым функциям, приведен в таблице 1.3.2 (см. также о псевдокомандах в разделе 2.5). Кратко рассмотрим каждую из групп.
1.3.1 Команды арифметической и логической обработки
Команды этой группы предназначены для выполнения арифметических действий (сложение, вычитание) с целыми числами, а также логических операций (конъюнкция, дизъюнкция, исключающее «ИЛИ»). Команды являются трехадресными и все имеют общий синтаксис:
Операция{Усл}{S} , ,
При этом Операция, определяемая мнемоническим обозначением, выполняется над операндами и . Результат операции помещается в .
Здесь , любые регистры общего назначения (R0–R15). , занимающий 12 разрядов в коде команды, может быть адресован непосредственным или регистровым методом (раздел 1.4.1 и таблица 1.4.1).
Операнд может отсутствовать или совпадать с . Эти случаи интерпретируются одинаково — служит и первым операндом, и приемником.
Имеется необязательный модификатор «S», который указывает на необходимость обновления флагов состояния программы. Без этого модификатора обновление не происходит. Независимо от результата выполнения команды флаги результат остаются неизменными.
Примеры:
ADD |
R0, R1, |
R2 |
; R0 |
= |
R1 |
+ |
R2 |
|
||
AND |
R0, R1, #0x80 |
; R0 |
= |
R1 |
& |
0x80 |
|
|||
ADD |
R0, |
R1 |
|
; |
R0 |
+= R1 |
|
|
|
|
ADDEQ |
R0, |
R1, R2 |
; |
if (Z) R0 |
= R1 |
+ R2 |
1.3.2 Команды умножения
Команды выполняют умножение 32-разрядных целых чисел. Операндами и приемником результата могут служат регистры общего назначения.
Имеются команды для умножения с накоплением. Результат может быть 32или 64-разрадным. Команды с 32-разрядным результатом отбрасывают старшую часть. 64-разрядный результат размещается в паре регистров общего назначения.
Примеры:
MUL |
R0, |
R1, |
R2 |
; |
R0 |
= |
(long)(R1 |
* |
R2) |
MLA |
R0, |
R1, |
R2, R3 |
; |
R0 |
= |
(long)(R1 |
* |
R2 + R3) |
Влияние команд на флаги состояния включается модификатором «S».
1.3.3 Команды регистровой пересылки
Команды пересылки предназначены для загрузки регистра короткой константой или для копирования содержимого одного регистра в другой. Команды двухадресные; второй операнд может быть задан непосредственно (константа) или адресован регистровым способом. При копировании возможна инверсия (команда MVN) или сдвиг.
15
Таблица 1.3.2 – Система команд процессорного ядра ARM7
Мнемоническое обозначение |
|
Операция |
Краткое описание |
|
|
|
|
Команды арифметической обработки |
|
ADD{Усл}{S} |
, , |
|
|
Арифметическое сложение |
ADC{Усл}{S} |
, , |
|
|
Арифметическое сложение с переносом |
SUB{Усл}{S} |
, , |
|
|
Вычитание |
SBC{Усл}{S} |
, , |
|
|
Вычитание с учетом заема |
RSB{Усл}{S} |
, , |
|
|
Обратное вычитание |
RSС{Усл}{S} |
, , |
|
|
Обратное вычитание с учетом заема |
|
|
|
Команды логической обработки |
|
AND{Усл}{S} |
, , |
|
|
Логическое умножение (И) |
ORR{Усл}{S} |
, , |
|
|
Логическое сложение (ИЛИ) |
EOR{Усл}{S} |
, , |
|
|
Исключающее ИЛИ (сложение по модулю 2) |
BIC{Усл}{S} |
, , |
|
|
Сброс битов в ноль |
|
|
|
Команды регистровой пересылки |
|
MOV{Усл}{S} |
, |
|
|
Копирование регистра или загрузка константы |
MVN{Усл}{S} |
, |
|
|
Копирование регистра или загрузка константы |
|
|
с инверсией |
||
|
|
|
|
|
|
|
|
Команды сравнения и тестирования |
|
CMN{Усл} |
, |
|
|
Сравнение с отрицательным числом |
CMP{Усл} |
, |
|
|
Сравнение с положительным числом |
TEQ{Усл} |
, |
|
|
Проверка равенства |
TST{Усл} |
, |
|
|
Тестирование |
|
|
Команды умножения c 32-разрядным результатом |
||
MUL{Усл}{S} |
, , |
|
|
Умножение (с учетом знаков) |
MLA{Усл}{S} |
, , , |
|
|
Умножение с накоплением (с учетом знаков) |
16
Таблица 1.3.2 – Продолжение
Мнемоническое обозначение |
|
Операция |
|
Краткое описание |
|
|
|
Команды умножения с 64-разрядным результатом |
|||
SMULL{Усл}{S} , , , |
|
|
|
Умножение учетом знака |
|
SMLAL{Усл}{S} , , , |
|
|
|
Умножение с накопл. (с учетом знака) |
|
UMULL{Усл}{S} , , , |
|
|
|
Умножение положительных чисел |
|
UMLAL{Усл}{S} , , , |
|
|
|
Умножение полож. чисел с накоплением |
|
|
|
|
Команды загрузки регистров из памяти |
|
|
LDR{Усл} |
, |
|
|
|
Загрузка регистра |
LDR{Усл}B |
, |
|
; |
|
Загрузка регистра байтом |
LDR{Усл}BT |
, |
|
; |
|
Загрузка регистра байтом |
|
|
c эмуляцией режима User |
|||
|
|
|
|
|
|
LDR{Усл}H |
, |
|
; |
|
Загрузка регистра двухбайтным словом |
LDR{Усл}SB |
, |
|
; |
|
Загрузка регистра байтом |
|
|
|
c дополнением знака |
||
|
|
|
|
|
|
LDR{Усл}SH |
, |
|
|
|
Загрузка регистра двухбайтовым словом |
|
|
|
c дополнением знака |
||
|
|
|
|
|
|
LDR{Усл}T |
, |
|
|
|
Загрузка регистра |
|
|
|
c эмуляцией режима User |
||
|
|
|
|
|
|
|
|
|
Команды сохранения регистров в память |
||
STR{Усл} |
, |
|
|
|
Сохранение регистра в память |
STR{Усл}B |
, |
|
|
|
Сохранение в память мл. байта регистра |
STR{Усл}BT |
, |
|
|
|
Сохранение в память младшего байта |
|
|
|
регистра с эмуляцией режима User |
||
|
|
|
|
|
|
STR{Усл}H |
, |
|
|
|
Сохранение в память мл. слова регистра |
STR{Усл}T |
, |
|
|
|
Сохранение регистра в память с эмуля- |
|
|
|
цией режима User |
||
|
|
|
|
|
17
Таблица 1.3.2 – Продолжение
Мнемоническое обозначение |
Операция |
Краткое описание |
|
||
|
|
Команды перестановки регистров и ячеек памяти |
|
||
SWP{Усл} |
, , [ ] |
; |
Обмен между регистрами и памятью |
||
SWP{Усл}B |
, , [ ] |
|
Обмен байтов между регистрами и памятью |
||
|
|
Команды пакетной пересылки |
|
||
LDM{Усл}IA |
{!}, |
Загрузить блок памяти |
Методы адресации: |
|
|
LDM{Усл}IB |
{!}, |
|
|||
с базовым адресом равным |
IA (FD) — постинкрементный; |
||||
LDM{Усл}DA |
{!}, |
||||
в список Регистров |
IB (ED) — преинкрементный; |
||||
LDM{Усл}DB |
{!}, |
||||
|
DA (FA) — постдекрементный; |
||||
STM{Усл}IA |
{!}, |
|
|||
Сохранить список Регистров |
DB (EA) — предекрементный. |
||||
STM{Усл}IB |
{!}, |
||||
в блок памяти, |
Список регистров задается в фигурных скобах через |
||||
STM{Усл}DA |
{!}, |
||||
начиная с адреса в |
запятую или тире, например, {R0–R3, R5} |
||||
STM{Усл}DB |
{!}, |
||||
|
|
|
|||
|
|
Команды передачи управления |
|
||
B{Усл} |
|
|
Передача управления по непосредственному адресу |
||
BL{Усл} |
|
; |
Передача управления с сохранением адреса возврата |
||
BX{Усл} |
|
|
Передача управления по адресу в регистре |
||
|
|
со сменой режима ARM/Thumb |
|||
|
|
|
|||
SWI{Усл} |
|
Вызов прерывания Software Interrupt; перевод процессора в режим ARM Supervisor |
|||
|
|
Команды обращения к слову состояния программы |
|
||
MRS{Усл}{S} |
, CPSR |
|
Сохранение |
или в регистр |
|
MRS{Усл}{S} |
, SPSR |
|
|||
|
|
|
|||
MSR{Усл} CPSR_Поля, # |
|
|
|
||
MSR{Усл} SPSR_Поля, # |
Запись константы или регистра в разряды флагов в |
или . |
|||
MSR{Усл} CPSR_Поля, |
Поля задают копируемые байты: c — 0, x — 1, s — 2, f — 3 |
||||
MSR{Усл} SPSR_Поля, |
|
|
|
18