
- •Архитектура микроконтроллеров семейства lpc2000
- •Функциональное описание микроконтроллера lpc2148. Обзор архитектуры
- •Описание ядра
- •Режимы работы и регистровые модели arm7tdmi
- •Способы адресации и система команд
- •Типы данных
- •Режимы адресации
- •Система команд
- •Внутренние периферийные устройства
- •Таймеры
- •Задания на лабораторные работы
- •Список литературы
- •Содержание
Способы адресации и система команд
Типы данных
Процессор ARM7TDMI поддерживает следующие типы данных:
слова: 32 бит;
полуслова: 16 бит;
байты: 8 бит.
Их необходимо выровнять следующим образом:
Значения слов необходимо выровнять в пределах 4 байт
Значения полуслов необходимо выровнять в пределах 2 байт
Значения байт могут располагаться в любых пределах байта.
Системы памяти, как правило, поддерживают все типы данных. В частности, система должна поддерживать запись подслов без повреждения смежных байт в слове.
Режимы адресации
Процессор ARM7TDMI поддерживает 5 режимов адресации:
Режим 1 - Сдвиговые операнды для инструкций обработки данных.
Режим 2 - Чтение и запись слова или беззнакового байта.
Режим 3 - Чтение и запись полуслова или загрузка знакового байта.
Режим 4 - Множественные чтение и запись.
Режим 5 - Чтение и запись сопроцессора.
Режимы адресации с указанием их типов и мнемонических кодов представлены в табл. 4.
Таблица 4. Режимы адресации
Режим адресации |
Тип или режим адресации |
Мнемонический код или тип стека |
Режим 2 <a_mode2> |
Константа смещения |
[Rn, #+/-12bit_Offset] |
Регистр смещения |
[Rn, +/-Rm] | |
Масштабный регистр смещения |
[Rn, +/-Rm, LSL #5bit_shift_imm] | |
[Rn, +/-Rm, LSR #5bit_shift_imm] | ||
[Rn, +/-Rm, ASR #5bit_shift_imm] | ||
[Rn, +/-Rm, ROR #5bit_shift_imm] | ||
[Rn, +/-Rm, RRX] | ||
Предварительное индексированное смещение |
- | |
Константа |
[Rn, #+/-12bit_Offset]! | |
Регистр |
[Rn, +/-Rm]! | |
Масштабный регистр |
[Rn, +/-Rm, LSL #5bit_shift_imm]! | |
[Rn, +/-Rm, LSR #5bit_shift_imm]! | ||
[Rn, +/-Rm, ASR #5bit_shift_imm]! | ||
[Rn, +/-Rm, ROR #5bit_shift_imm]! | ||
[Rn, +/-Rm, RRX]! | ||
Смещение с последующим индексированием |
- | |
Константа |
[Rn], #+/-12bit_Offset | |
Регистр |
[Rn], +/-Rm | |
Масштабный регистр |
[Rn], +/-Rm, LSL #5bit_shift_imm | |
[Rn], +/-Rm, LSR #5bit_shift_imm | ||
[Rn], +/-Rm, ASR #5bit_shift_imm | ||
[Rn], +/-Rm, ROR #5bit_shift_imm | ||
[Rn, +/-Rm, RRX] | ||
Режим 2, привилегированный <a_mode2P> |
Константа смещения |
[Rn, #+/-12bit_Offset] |
Регистр смещения |
[Rn, +/-Rm] | |
Масштабный регистр смещения |
[Rn, +/-Rm, LSL #5bit_shift_imm] | |
[Rn, +/-Rm, LSR #5bit_shift_imm] | ||
[Rn, +/-Rm, ASR #5bit_shift_imm] | ||
[Rn, +/-Rm, ROR #5bit_shift_imm] | ||
[Rn, +/-Rm, RRX] | ||
Смещение с последующим индексированием |
- | |
Константа |
[Rn], #+/-12bit_Offset | |
Регистр |
[Rn], +/-Rm | |
Масштабный регистр |
[Rn], +/-Rm, LSL #5bit_shift_imm | |
[Rn], +/-Rm, LSR #5bit_shift_imm | ||
[Rn], +/-Rm, ASR #5bit_shift_imm | ||
[Rn], +/-Rm, ROR #5bit_shift_imm | ||
[Rn, +/-Rm, RRX] | ||
Режим 3, <a_mode3>> |
Константа смещения |
[Rn, #+/-8bit_Offset] |
Предварительное индексирование |
[Rn, #+/-8bit_Offset]! | |
Последующее индексирование |
[Rn], #+/-8bit_Offset | |
Регистр |
[Rn, +/-Rm] | |
Предварительное индексирование |
[Rn, +/-Rm]! | |
Последующее индексирование |
[Rn], +/-Rm | |
Режим 4, чтение <a_mode4L> |
IA, последующий инкремент |
FD, full descending |
IB, предварительный инкремент |
ED, empty descending | |
DA, последующий декремент |
FA, full ascending | |
DB предварительный декремент |
EA, empty ascending | |
Режим 4, запись <a_mode4S> |
IA, последующий инкремент |
FD, full descending |
IB, предварительный инкремент |
ED, empty descending | |
DA, последующий декремент |
FA, full ascending | |
DB предварительный декремент |
EA, empty ascending | |
Режим 5, передача данных сопроцессора <a_mode5> |
Константа смещения |
[Rn, #+/-(8bit_Offset*4)] |
Предварительное индексирование |
[Rn, #+/-(8bit_Offset*4)]! | |
Последующее индексирование |
[Rn], #+/-(8bit_Offset*4) |