Микропроцессорная техника / Семейство микроконтроллеров MSP430x2xx_
.pdf
|
|
|
|
|
|
|
|
|
|
3.3. Режимы адресации 41 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
3.3.3. Относительный режим адресации |
|
|
|
|
|
|||||||
Относительный режим адресации описан в Табл. 3.6. |
|
|||||||||||
Таблица 3.6. Описание относительного режима адресации |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
Ассемблерный код |
|
Содержимое ПЗУ |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
||
MOV EDE,TONI |
|
|
|
MOV X(PC),Y(PC) |
|
|||||||
|
|
|
|
|
|
|
X = EDE PC |
|
|
|
|
|
|
|
|
|
|
|
|
Y = TONI PC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Длина |
|
Два или три слова |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
||||
Операция |
|
Пересылка значения с исходного адреса EDE (содержимое PC + X) по адресу на |
||||||||||
|
|
значения TONI (содержимое PC + Y). Слова, расположенные после команды, со |
||||||||||
|
|
держат разности между PC и адресами источника или приёмника. Ассемблер авто |
||||||||||
|
|
матически вычисляет смещения X и Y и вставляет их в код. При использовании |
||||||||||
|
|
относительного режима адресации счётчик команд автоматически инкрементиру |
||||||||||
|
|
ется таким образом, чтобы выполнение программы продолжилось со следующей |
||||||||||
|
|
команды |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
Комментарий |
Допускается для источника и приёмника |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|||
Пример |
|
MOV |
EDE,TONI ; Адрес источника EDE = 0F016h |
|||||||||
|
|
|
|
|
; Адрес приёмника TONI = 01114h |
|||||||
|
|
|
|
|
|
|
|
|
|
|
||
До операции |
|
|
|
После операции |
||||||||
|
Адресное |
|
Регистры |
|
|
Адресное |
Регистры |
|||||
пространство |
пространство |
|||||||||||
0FF16h |
|
|
|
|
|
|
0FF16h |
|
|
0xxxxh |
|
PC |
|
|
|
|
|
|
|
|
|||||
011FEh |
|
|
|
|
|
|
011FEh |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF14h |
0F102h |
|
|
|
|
0FF14h |
|
|
0F102h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF12h |
04090h |
|
PC |
0FF12h |
|
|
04090h |
|
|
|||
|
|
|
|
|
0FF14h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
0F018h |
0xxxxh |
|
|
+0F102h |
0F018h |
|
|
0xxxxh |
|
|
||
|
|
|
|
|
0F016h |
|
|
|
|
|
|
|
0F016h |
0A123h |
|
0F016h |
|
|
0A123h |
|
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
0F014h |
0xxxxh |
|
|
|
|
0F014h |
|
|
0xxxxh |
|
|
|
|
|
|
|
|
0FF16h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|||
01116h |
0xxxxh |
|
|
+011FEh |
01116h |
|
|
0xxxxh |
|
|
||
|
|
|
|
|
01114h |
|
|
|
|
|
|
|
01114h |
05555h |
|
01114h |
|
|
0A123h |
|
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
01112h |
0xxxxh |
|
|
|
|
01112h |
|
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 Глава 3. 16#битное RISC ЦПУ MSP430
3.3.4. Абсолютный режим адресации
Абсолютный режим адресации описан в Табл. 3.7.
Таблица 3.7. Описание абсолютного режима адресации
|
|
Ассемблерный код |
|
|
Содержимое ПЗУ |
||||||
|
|
|
|
|
|
|
|
|
|||
MOV &EDE,&TONI |
|
|
MOV X(0),Y(0) |
|
|||||||
|
|
|
|
|
|
X = EDE |
|
|
|
|
|
|
|
|
|
|
|
Y = TONI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Длина |
|
Два или три слова |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||||
Операция |
|
Пересылка значения с исходного адреса EDE по адресу назначения TONI. Слова, |
|||||||||
|
|
|
расположенные после команды, содержат абсолютные значения адресов. При ис |
||||||||
|
|
|
пользовании абсолютного режима адресации счётчик команд автоматически инк |
||||||||
|
|
|
рементируется таким образом, чтобы выполнение программы продолжилось со |
||||||||
|
|
|
следующей команды |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Комментарий |
|
Допускается для источника и приёмника |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||
Пример |
|
MOV |
&EDE,&TONI |
; Адрес источника EDE = 0F016h |
|||||||
|
|
|
|
|
; Адрес приёмника TONI = 01114h |
||||||
|
|
|
|
|
|
|
|
|
|||
До операции |
|
После операции |
|||||||||
|
Адресное |
Регистры |
|
|
|
Адресное |
Регистры |
||||
пространство |
|
пространство |
|||||||||
|
|
|
|
|
|
|
|
|
0xxxxh |
|
PC |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
0FF16h |
|
01114h |
|
|
0FF16h |
|
|
01114h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF14h |
|
0F016h |
|
|
0FF14h |
|
|
0F016h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF12h |
|
04292h |
PC |
|
0FF12h |
|
|
04292h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
0F018h |
|
0xxxxh |
|
|
0F018h |
|
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0F016h |
|
0A123h |
|
|
0F016h |
|
|
0A123h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0F014h |
|
0xxxxh |
|
|
0F014h |
|
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
01116h |
|
|
|
|
|
01116h |
|
|
|
|
|
|
0xxxxh |
|
|
|
|
0xxxxh |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
01114h |
|
01234h |
|
|
01114h |
|
|
0A123h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01112h |
|
0xxxxh |
|
|
01112h |
|
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.3. Режимы адресации 43
3.3.5. Косвенный регистровый режим адресации
Косвенный регистровый режим адресации описан в Табл. 3.8.
Таблица 3.8. Описание косвенного регистрового режима адресации
|
|
Ассемблерный код |
|
|
Содержимое ПЗУ |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
MOV @R10,0(R11) |
|
|
|
|
MOV @R10,0(R11) |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Длина |
|
Одно или два слова |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Операция |
|
Пересылка значения с исходного адреса (содержится в R10) по адресу назначения |
||||||||||||||
|
|
|
(содержится в R11). Содержимое регистров не изменяется |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||
Комментарий |
Допускается только для операнда источника. Для операнда приёмника использу |
|||||||||||||||
|
|
|
ется 0(Rd) |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пример |
|
MOV |
@R10,0(R11) |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
До операции |
|
|
|
|
После операции |
|
|
|||||||||
|
Адресное |
|
Регистры |
|
Адресное |
Регистры |
||||||||||
пространство |
|
|
|
|
пространство |
|
|
|||||||||
0FF16h |
|
0xxxxh |
|
|
|
|
|
|
0FF16h |
|
0xxxxh |
|
PC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
0000h |
|
|
R10 |
|
0FA33h |
|
|
0000h |
|
R10 |
0FA33h |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
0FF14h |
04AEBh |
|
PC R11 |
002A7h |
|
0FF14h |
|
04AEBh |
|
R11 |
002A7h |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF12h |
|
0xxxxh |
|
|
|
|
|
|
0FF12h |
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
0FA34h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0xxxxh |
|
|
|
|
|
|
0FA34h |
|
0xxxxh |
|
|
|
|
||
0FA32h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
05BC1h |
|
|
|
|
|
|
0FA32h |
|
05BC1h |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FA30h |
|
0xxxxh |
|
|
|
|
|
|
0FA30h |
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
002A8h |
|
|
|
|
|
|
|
|
|
002A8h |
|
|
|
|
|
|
|
0xxh |
|
|
|
|
|
|
|
0xxh |
|
|
|
|
|||
002A7h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
012h |
|
|
|
|
|
|
002A7h |
|
05Bh |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
002A6h |
|
0xxh |
|
|
|
|
|
|
002A6h |
|
0xxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 Глава 3. 16#битное RISC ЦПУ MSP430
3.3.6.Косвенный регистровый режим адресации с автоинкрементом
Косвенный регистровый режим адресации с автоинкерментом описан в Табл. 3.9.
Таблица 3.9. Описание косвенного регистрового режима адресации с автоинкрементом
|
Ассемблерный код |
|
Содержимое ПЗУ |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
MOV @R10+,0(R11) |
|
|
MOV @R10+,0(R11) |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
Длина |
|
Одно или два слова. |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||
Операция |
|
Пересылка значения с исходного адреса (содержится в R10) по адресу назначения |
|||||||||
|
|
(содержится в R11). После выборки пересылаемого значения содержимое R10 уве |
|||||||||
|
|
личивается на 1 (при однобайтной операции) или на 2 (при двухбайтной операции), |
|||||||||
|
|
указывая на следующий адрес. Эта команда полезна при реализации табличных вы |
|||||||||
|
|
числений |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Комментарий |
Допускается только для операнда источника. Для операнда приёмника использу |
||||||||||
|
|
ется 0(Rd) и добавляется вторая команда INC Rd |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Пример |
|
MOV |
@R10+,0(R11) |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
До операции |
|
|
После операции |
|
|
||||||
|
Адресное |
Регистры |
|
Адресное |
|
Регистры |
|||||
пространство |
|
|
пространство |
|
|
||||||
|
|
|
|
|
|
|
|
PC |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0FF18h |
0xxxxh |
|
|
|
0FF18h |
0xxxxh |
|
|
|
||
0FF16h |
00000h |
R10 |
0FA32h |
|
0FF16h |
00000h |
|
R10 |
0FA34h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF14h |
04ABBh |
PC R11 |
010A8h |
|
0FF14h |
04ABBh |
|
R11 |
010A8h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF12h |
0xxxxh |
|
|
|
0FF12h |
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FA34h |
0xxxxh |
|
|
|
0FA34h |
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FA32h |
05BC1h |
|
|
|
0FA32h |
05BC1h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FA30h |
0xxxxh |
|
|
|
0FA30h |
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
010AAh |
0xxxxh |
|
|
|
010AAh |
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
010A8h |
01234h |
|
|
|
010A8h |
05BC1h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
010A6h |
0xxxxh |
|
|
|
010A6h |
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Автоинкрементирование содержимого регистра производится после выборки операнда из памяти (Рис. 3.8).
Команда |
Адрес |
Операнд |
+1/ +2
Рис. 3.8. Выборка операнда.
|
|
|
|
|
|
|
|
3.4. Система команд 45 |
||
|
|
|
|
|
|
|
|
|
|
|
3.3.7. Непосредственный режим адресации |
|
|||||||||
Непосредственный режим адресации описан в Табл. 3.10. |
|
|||||||||
Таблица 3.10. Описание непосредственного режима адресации |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
||
|
Ассемблерный код |
Содержимое ПЗУ |
||||||||
|
|
|
|
|
|
|
|
|
||
MOV #45h,TONI |
|
|
|
MOV @PC+,X(PC) |
|
|||||
|
|
|
|
|
|
45 |
|
|
|
|
|
|
|
|
|
|
X = TONI – PC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Длина |
|
Два или три слова. |
|
|
|
|
|
|||
|
|
На одно слово меньше при использовании генератора констант |
|
|||||||
|
|
|
|
|
|
|
|
|||
Операция |
|
Пересылка константы, находящейся в слове, следующем за командой, по адресу |
||||||||
|
|
назначения TONI. После выборки пересылаемого значения счётчик команд указы |
||||||||
|
|
вает на слово, расположенное после команды, и значение пересылается по указан |
||||||||
|
|
ному адресу |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Комментарий |
Допускается только для операнда источника |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
Пример |
|
MOV |
#45h,TONI |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
До операции |
После операции |
|||||||||
|
Адресное |
|
Регистры |
|
Адресное |
Регистры |
||||
пространство |
пространство |
|||||||||
|
|
|
|
|
|
0FF18h |
|
0xxxxh |
|
PC |
|
|
|
|
|
|
|
|
|||
0FF16h |
01192h |
|
|
|
0FF16h |
|
01192h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF14h |
00045h |
|
|
|
0FF14h |
|
00045h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0FF12h |
040B0h |
PC |
0FF12h |
|
040B0h |
|
|
|||
|
|
|
|
0FF16h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|||
010AAh |
0xxxxh |
|
+01192h |
010AAh |
|
0xxxxh |
|
|
||
|
|
|
|
010A8h |
|
010A8h |
|
|
|
|
010A8h |
01234h |
|
00045h |
|
|
|||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
010A6h |
0xxxxh |
|
|
|
010A6h |
|
0xxxxh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.4.Система команд
В общей сложности набор команд ЦПУ MSP430 включает в себя 27 команд ядра и 24 эмулируемых команды. Команды ядра — это команды, которые имеют уникальные коды операций, декодируемые ЦПУ. Эмулируемые команды облег чают создание и чтение кода, но не имеют собственных кодов операций, а авто матически заменяются ассемблером на эквивалентные команды ядра. Использо вание эмулируемых команд не приводит к увеличению размера кода или сниже нию производительности.
Существует три формата команд ядра:
команды с двумя операндами;
команды с одним операндом;
команды перехода.
Все одно и двухоперандные команды могут работать как с однобайтными, так и с двухбайтными значениями, используя расширения .B и .W соответствен но. Команды, оперирующие байтами, используются для работы с однобайтными данными или доступа к 8 битным периферийным модулям. Команды, оперирую щие словами, используются для работы с двухбайтными данными или доступа к
46 Глава 3. 16#битное RISC ЦПУ MSP430
16 битным периферийным модулям. Если расширение команды не указано, то она использует 2 байтные операнды.
Источник и приёмник в команде определяются следующими полями:
src |
Операнд источник, определяемый битами As и S reg |
|
dst |
Операнд приёмник, определяемый битами Ad и D reg |
|
As |
Биты, определяющие режим адресации источника (src) |
|
S reg |
Рабочий регистр, используемый в качестве источника (src) |
|
Ad |
Биты, определяющие режим адресации приёмника (dst) |
|
D reg |
Рабочий регистр, используемый в качестве приёмника (dst) |
|
B/W |
Одно или двухбайтная операция: |
|
|
0 |
— двухбайтная операция |
|
1 |
— однобайтная операция |
Примечание. Адрес назначения
Адрес назначения может быть любым в пределах адресного пространства. Тем не менее, при использовании команды, изменяющей содержимое приёмника, необ ходимо убедиться, что адрес назначения доступен для записи. К примеру, адрес, находящийся в диапазоне адресов масочного ПЗУ, будет корректным адресом на значения, однако его содержимое не может быть изменено, поэтому результат вы полнения команды будет утерян.
3.4.1. Команды с двумя операндами (формат I)
Формат команды с двумя операндами представлен на Рис. 3.9.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Код |
операции |
|
S Reg |
|
Ad |
B/W |
|
As |
|
D Reg |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 3.9. Формат команды с двумя операндами.
Перечень и краткое описание команд с двумя операндами приведены в
Табл. 3.11.
Примечание. Команды CMP и SUB
Команды CMP и SUB идентичны, за исключением возможности сохранения резуль тата. Это справедливо и для команд BIT и AND.
3.4.2. Команды с одним операндом (формат II)
Формат команды с одним операндом представлен на Рис. 3.10.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
Код операции |
|
|
|
B/W |
|
Ad |
|
D/S Reg |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 3.10. Формат команды с одним операндом.
3.4. Система команд 47
Таблица 3.11. Команды с двумя операндами
Мнемоника |
S reg, |
Операция |
Биты состояния |
|
|
||||
D reg |
V N Z C |
|||
|
|
|||
|
|
|
MOV(.B) |
src,dst |
src dst |
– |
– |
– |
– |
|
|
|
|
|
|
|
ADD(.B) |
src,dst src + dst dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
ADDC(.B) |
src,dst src + dst + C dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
SUB(.B) |
src,dst dst + .not.src + 1 dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
SUBC(.B) |
src,dst dst + .not.src + C dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
CMP(.B) |
src,dst |
dst – src |
* |
* |
* |
* |
|
|
|
|
|
|
|
DADD(.B) |
src,dst src + dst + C dst (BCD арифметика) |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
BIT(.B) |
src,dst |
src .and. dst |
0 |
* |
* |
* |
|
|
|
|
|
|
|
BIC(.B) |
src,dst not.src .and. dst dst |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
BIS(.B) |
src,dst src .or. dst dst |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
XOR(.B) |
src,dst src .xor. dst dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
AND(.B) |
src,dst src .and. dst dst |
0 |
* |
* |
* |
* Влияет на бит состояния
– Не влияет на бит состояния 0 Бит состояния сбрасывается
1 Бит состояния устанавливается
Перечень и краткое описание команд с одним операндом приведены в
Табл. 3.12.
Таблица 3.12. Команды с одним операндом
Мнемоника |
S reg, |
Операция |
|
Биты состояния |
|
|||
|
|
|
|
|
|
|||
D reg |
V |
|
N |
Z |
|
C |
||
|
|
|
|
|||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
RRC(.B) |
dst |
C MSB .......LSB C |
* |
|
* |
* |
|
* |
|
|
|
|
|
|
|
|
|
RRA(.B) |
dst |
MSB MSB ....LSB C |
0 |
|
* |
* |
|
* |
|
|
|
|
|
|
|
|
|
PUSH(.B) |
src |
SP – 2 SP, src @SP |
– |
|
– |
– |
|
– |
|
|
|
|
|
|
|
|
|
SWPB |
dst |
Перестановка байтов местами |
– |
|
– |
– |
|
– |
|
|
|
|
|
|
|
|
|
CALL |
dst |
SP – 2 SP, PC+2 @SP |
– |
|
– |
– |
|
– |
|
|
dst PC |
|
|
|
|
|
|
RETI |
dst |
TOS SR, SP + 2 SP |
* |
|
* |
* |
|
* |
|
|
TOS PC,SP + 2 SP |
|
|
|
|
|
|
SXT |
dst |
Бит 7 Бит 8........Бит 15 |
0 |
|
* |
* |
|
* |
|
|
|
|
|
|
|
|
|
*Влияет на бит состояния
–Не влияет на бит состояния 0 Бит состояния сбрасывается
1 Бит состояния устанавливается
Скомандой CALL можно использовать любые режимы адресации. При ис пользовании относительного (ADDRESS), непосредственного (#N), абсолютно го (&EDE) или индексного x(RN) режимов адресации значение адреса содержит ся в слове, расположенном после слова команды.
48 Глава 3. 16#битное RISC ЦПУ MSP430
3.4.3. Команды перехода
Формат команд перехода представлен на Рис. 3.11.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Код операции |
|
C |
|
|
|
10 битное смещение PC |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 3.11. Формат команды перехода.
Перечень и краткое описание команд перехода приведены в Табл. 3.13.
Таблица 3.13. Команды перехода
Мнемоника |
S reg, |
|
Операция |
D reg |
|
||
|
|
|
|
|
|
|
|
JEQ/JZ |
Метка |
Переход к метке, если бит нуля (Z) установлен |
|
|
|
|
|
JNE/JNZ |
Метка |
Переход к метке, если бит нуля (Z) сброшен |
|
|
|
|
|
JC |
Метка |
Переход к метке, если бит переноса (C) установлен |
|
|
|
|
|
JNC |
Метка |
Переход к метке, если бит переноса (C) сброшен |
|
|
|
|
|
JN |
Метка |
Переход к метке, если бит отрицательного значения (N) установлен |
|
|
|
|
|
JGE |
Метка |
Переход к метке, если (N .XOR. V) = 0 |
|
|
|
|
|
JL |
Метка |
Переход к метке, если (N .XOR. V) = 1 |
|
|
|
|
|
JMP |
Метка |
Безусловный переход к метке |
|
|
|
|
|
Команды условного перехода осуществляют относительный переход по за данному смещению и не влияют на биты состояния ЦПУ. Переход может осу ществляться в пределах от –511 до +512 слов относительно текущего значения PC. Величина смещения интерпретируется как 10 битное значение со знаком, которое удваивается и прибавляется к содержимому счётчика команд:
PCнов = PCстар + 2 + PCсмещ 2.
3.4. Система команд 49
* ADC[.W], * ADC.B
Сложение переноса с операндом
Синтаксис |
ADC |
dst или ADC.W |
dst |
|
|
ADC.B |
dst |
|
|
|
|
|
|
|
Операция |
dst + C dst |
|
|
|
|
|
|
|
|
Эмуляция |
ADDC |
#0,dst |
|
|
|
ADDC.B #0,dst |
|
|
|
|
|
|||
Описание |
Бит переноса (C) прибавляется к операнду приёмнику. Предыдущее содержимое опе |
|||
|
ранда теряется |
|
|
|
|
|
|||
Биты |
N: Устанавливается, если результат отрицательный, сбрасывается — если положитель |
|||
состояния |
ный. |
|
|
|
|
Z: Устанавливается, если результат нулевой, иначе сбрасывается. |
|||
|
C: Устанавливается, если dst изменился с 0FFFFh до 0000, иначе сбрасывается. |
|||
|
Устанавливается, если dst изменился с 0FFh до 00, иначе сбрасывается. |
|||
|
V: Устанавливается, если произошло переполнение, иначе сбрасывается. |
|||
|
|
|||
Биты |
OSCOFF, CPUOFF и GIE не изменяются |
|||
режима |
|
|
|
|
|
|
|||
Пример 1 |
16 битный счётчик, на который указывает R13, прибавляется к 32 битному счётчику, на |
|||
|
который указывает R12. |
|
|
|
|
ADD |
@R13,0(R12) |
; Складываем младшие слова |
|
|
ADC |
2(R12) |
; Прибавляем перенос к старшему слову |
|
|
|
|||
Пример 2 |
8 битный счётчик, на который указывает R13, прибавляется к 16 битному счётчику, на |
|||
|
который указывает R12. |
|
|
|
|
ADD.B |
@R13,0(R12) |
; Складываем младшие байты |
|
|
ADC.B |
1(R12) |
; Прибавляем перенос к старшему байту |
|
|
|
|
|
|
50 Глава 3. 16#битное RISC ЦПУ MSP430
ADD[.W], ADD.B Сложение двух операндов
Синтаксис |
ADD |
|
src,dst |
или ADD.W |
src,dst |
|
|
ADD.B |
|
src,dst |
|
|
|
|
|
|
|
|
||
Операция |
src + dst dst |
|
|
|
||
|
|
|||||
Описание |
Операнд источник прибавляется к операнду приёмнику. Содержимое операнда источ |
|||||
|
ника не изменяется. Предыдущее содержимое операнда приёмника теряется |
|||||
|
|
|||||
Биты |
N: Устанавливается, если результат отрицательный, сбрасывается — если положитель |
|||||
состояния |
ный. |
|
|
|
|
|
|
Z: Устанавливается, если результат нулевой, иначе сбрасывается. |
|||||
|
C: Устанавливается, если произошёл перенос, иначе сбрасывается. |
|||||
|
V: Устанавливается, если произошло переполнение, иначе сбрасывается. |
|||||
|
|
|||||
Биты |
OSCOFF, CPUOFF и GIE не изменяются. |
|||||
режима |
|
|
|
|
|
|
|
|
|||||
Пример 1 |
Регистр R5 увеличивается на 10. В случае переноса осуществляется переход к метке |
|||||
|
TONI. |
|
|
|
|
|
|
ADD |
#10,R5 |
|
|
|
|
|
JC |
TONI |
; Был перенос |
|
||
|
...... |
|
; Нет переноса |
|
||
|
|
|||||
Пример 2 |
Регистр R5 увеличивается на 10. В случае переноса осуществляется переход к метке |
|||||
|
TONI. |
|
|
|
|
|
|
ADD.B |
|
#10,R5 |
; Прибавляем 10 к младшему байту регистра R5 |
||
|
JC |
|
TONI |
|
; Перенос произойдёт, если (R5) 246 [0Ah+0F6h] |
|
|
...... |
|
|
; Нет переноса |
||
|
|
|
|
|
|
|