16-разрядное RISC CPU
В этом разделе описывается ЦПУ MSP430, режимы адресации и набор команд.
3.1 Введение в ЦПУ
ЦПУ включает возможности, специально созданные для современных технологий программирования, таких как вычисляемое ветвление, обработка таблиц и использование языков высокого уровня, подобных языку C. ЦПУ может выполнять адресацию в полном адресном диапазоне без использования страниц памяти.
ЦПУ обладает следующими возможностями:
- RISC-архитектура с 27 командами и 7 режимами адресации;
- Ортогональная архитектура, при которой каждая команда пригодна для каждого режима адресации;
- Полный доступ ко всем регистрам, включая программный счетчик, регистры статуса и указатель стека;
- Однотактные регистровые операции;
- Большой 16-разрядный регистровый файл, уменьшающий количество обращений к памяти;
- 16-разрядная адресная шина, обеспечивающая прямой доступ и ветвление во всем диапазоне памяти;
- 16-разрядная шина данных, позволяющая напрямую манипулировать параметрами шириной в слово;
- Генератор констант немедленно предоставляет шесть используемых наиболее часто значений, уменьшая размер кода;
- Прямой обмен между ячейками памяти без промежуточной записи в регистр;
- Команды и адресация в форматах «слово» и «байт».
Блок-схема ЦПУ показана на рис.3.1.
3.2 Регистры ЦПУ
ЦПУ включает шестнадцать 16-разрядных регистров. Регистры R0, R1, R2 и R3 имеют специальное назначение. Регистры с R4 по R15 являются рабочими регистрами общего назначения.
3.2.1 Программный счетчик (PC)
16-разрядный программный счетчик (PC/R0) указывает на следующую команду, которая будет выполняться. Каждая команда состоит из четного числа байтов (два, четыре или шесть), поэтому PC инкрементируется соответственно. Команды доступа в адресном пространстве 64 кБайт выполняются к границам слов, поэтому PC выравнивается к четным адресам. На рис.3.2 показана организация программного счетчика.
Рис.3-2 Программный счетчик
Программный счетчик PC может быть адресован всеми командами и во всех адресных режимах. Некоторые примеры:
MOV #LABEL, PC ; Переход к адресу с меткой LABEL
MOV LABEL, PC ; Переход к адресу, содержащемуся в переменной LABEL
MOV @R14, PC ; Косвенный переход по косвенному содержимому R14
3.2.2 Указатель стека (SP)
Указатель стека (SP/R1) используется ЦПУ для хранения адресов возврата из подпрограмм и прерываний. Стек основан на предекрементной постинкрементной схеме. Кроме того, указатель стека SP может использоваться со всеми командами и во всех адресных режимах. На рис.3.3 показана организация SP. Указатель стека SP инициализируется в ОЗУ пользователем и выравнивается к четным адресам.
Рис.3-3 Указатель стека
Рис.3-4 Использование стека
Особенности использования «SP» в качестве аргумента команд PUSH и POP описаны и показаны на рис.3.5.
Рис.3-5 Последовательность PUSH SP – POP SP
Указатель стека изменяется после выполнения команды PUSH SP. |
Указатель стека не изменяется после команды POP SP. Команда POP SP помещает SP1 в указатель стека SP (SP2=SP1). |
3.2.3 Регистр статуса (SR)
Регистр статуса (SR/R2), используемый как регистр источника или получателя, может адресоваться в регистровом режиме только с помощью команд-слов. Прочие комбинации режимов адресации используются для поддержки генератора констант. На рис.3.6 показаны биты регистра статуса SR.
Рис.3-6 Биты регистра статуса
В таблице 3.1 приведено описание битов регистра статуса.
Таблица 3.1. Описание битов регистра статуса
Бит |
Описание |
V |
Бит переполнения. Этот бит устанавливается, если результат арифметической операции имеет переполнение в области знаковых переменных.
ADD(.B),ADDC(.B) |
Устанавливается, когда:
Положительный + Положительный = Отрицательный
Отрицательный + Отрицательный = Положительный
в противном случае сбрасывается |
SUB(.B),SUBC(.B),CMP(.B) |
Устанавливается, когда:
Положительный – Отрицательный = Отрицательный
Отрицательный – Положительный = Позитивный
в противном случае сбрасывается |
|
SCG1 |
Системный тактовый генератор 1. Когда этот бит установлен, SMCLK выключен. |
SCG0 |
Системный тактовый генератор 0. Когда этот бит установлен, генератор DCO выключен, если DCOCLK не используется для MCLK или SMCLK. |
OSCOFF |
Выключение осциллятора. Когда этот бит установлен, осциллятор LFXT1, использующий кристалл, выключен, если LFXT1CLK не используется для MCLK или SMCLK. |
CPUOFF |
Выключение ЦПУ. Когда этот бит установлен, ЦПУ выключено. |
GIE |
Общий бит разрешения прерываний. Когда этот бит установлен, маскируемые прерывания разрешены. Когда сброшен, все маскируемые прерывания запрещены. |
N |
Бит отрицательного результата. Этот бит устанавливается, когда результат операции с байтом или словом отрицательный и сбрасывается, когда результат не отрицательный.
Операции со словами: N устанавливается по значению бита 15 результата
Операции с байтами: N устанавливается по значению бита 7 результата |
Z |
Бит нуля. Этот бит устанавливается, когда результат операции с байтом или словом равен «0» и очищается, если результат не равен «0». |
C |
Бит переноса. Этот бит устанавливается, когда результат операции с байтом или словом имеет перенос и очищается, когда переноса нет. |
3.2.4 Регистры генератора констант CG1 и CG2
Шесть обычно используемых констант генерируются с помощью регистров R2 и R3 генератора констант, что исключает необходимость использования дополнительного 16-разрядного слова в программном коде. Константы выбираются путем изменения режима адресации (As) регистра-источника, в соответствии с таблицей 3.2.
Таблица 3.2. Значения генераторов констант CG1, CG2
Регистр |
As |
Константа |
Комментарий |
R2 |
00 |
- - - - - |
Регистровый режим |
R2 |
01 |
(0) |
Режим абсолютной (безусловной) адресации |
R2 |
10 |
00004h |
+4, побитовая обработка |
R2 |
11 |
00008h |
+8, побитовая обработка |
R3 |
00 |
00000h |
0, обработка по словам |
R3 |
01 |
00001h |
+1 |
R3 |
10 |
00002h |
+2, побитовая обработка |
R3 |
11 |
0FFFFh |
-1, обработка по словам |
Генератор констант обладает следующими преимуществами:
- Не требуются особые команды
- Код не содержит дополнительного слова для шести констант
- Не требуется код (команда) доступа к памяти для получения константы
Ассемблер автоматически использует генератор констант, если одна из шести констант используется как непосредственный исходный операнд. При использовании регистров R2 и R3 в режиме генерации констант, адресация к ним не может быть явной – они действуют только как регистры-источники.
Генератор команд – расширенная система команд
Набор RISС-команд семейства MSP430 состоит только из 27 команд. Однако, генератор констант позволяет поддерживать MSP430-ассемблеру 24 дополнительные эмулированные команды. К примеру, команда с одним операндом:
CLR dst
эмулируется командой с двумя операндами такой же длины:
MOV R3,dst
где #0 замещается ассемблером, а R3 используется в режиме As=00
Команда INC dst замещается командой ADD 0(R3),dst
3.2.5 Регистры общего назначения R4-R15
Двенадцать регистров с R4 по R15 являются регистрами общего назначения. Все эти регистры могут быть использованы в качестве регистров данных, указателей адресов или индексных значений и доступны с помощью команд работы с байтами или словами, как показано на рис.3.7.
Пример операции регистр-байт
R5=0A28Fh
R6=0203h
Mem(0203h)=012h
ADD.B R5,0(R6)
08Fh
+012h
0A1h
Mem(0203h)=0A1h
C=0, Z=0, N=1
(младший байт регистра)
+ (адресуемый байт)
-------------------------
->(адресуемый байт)
|
Пример операции байт-регистр
R5=01202Fh
R6=0223h
Mem(0223h)=05Fh
ADD.B @R6,R5
05Fh
+002h
00061h
R5=00061h
C=0, Z=0, N=0
(адресуемый байт)
+ (младший байт регистра)
-------------------------
->(младший байт регистра,
ноль в старшем байте)
|
Рис.3-7 Операции регистр-байт / байт-регистр
Для бизнесменов недвижимость Чехия - выгодная инвестиция
|