В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве

текст еще



Активизация автоинкремента и автодекремента

Указатель аккумулятора АР может быть установлен в режим автоматического инкремента или декремента после выполнения каждой арифметической или логической операции. Это полезно при выполнении операций с несколькими регистрами, например, при сложении или вычитании двух многобайтовых целых чисел. Если активизирован автоматический инкремент/декремент, то регистр АР увеличивается или уменьшается после любого из следующих действий:

  • ADD src (сложение источника с активным аккумулятором)
  • ADDC src (сложения источника с активным аккумулятором с переносом)
  • SUB src (вычитание источника из активного аккумулятора)
  • SUBB src (вычитание источника из активного аккумулятора с заемом)
  • AND src (логическое умножение активного аккумулятора с источником)
  • OR src (логическое сложение активного аккумулятора с источником)
  • XOR src (логическое суммирование по модулю два активного аккумулятора с источником)
  • CPL (поразрядное дополнение активного аккумулятора)
  • NEG (инверсия активного аккумулятора)
  • SLA (арифметический сдвиг влево активного аккумулятора)
  • SLA2 (арифметический сдвиг влево активного аккумулятора на две позиции)
  • SLA4 (арифметический сдвиг влево активного аккумулятора на четыре позиции)
  • SRA (арифметический сдвиг вправо активного аккумулятора)
  • SRA2 (арифметический сдвиг вправо активного аккумулятора на две позиции)
  • SRA4 (арифметический сдвиг вправо активного аккумулятора на четыре позиции)
  • RL (сдвиг активного аккумулятора влево)
  • RLC (сдвиг активного аккумулятора влево через флаг переноса)
  • RR (сдвиг активного аккумулятора вправо)
  • RRC (сдвиг активного аккумулятора вправо через флаг переноса)
  • SR (логический сдвиг активного аккумулятора вправо)
  • MOVE Acc, src (копирование данных из источника в активный аккумулятор)
  • MOVE dst, Acc (копирование данных из активного аккумулятора в получатель)
  • MOVE Acc, Acc (обновление содержимого активного аккумулятора)
  • XCHN (обмен полубайтами в пределах каждого байта активного аккумулятора)
  • XCH (обмен байтов активного аккумулятора) (только у MAXQ20)

Активный аккумулятор не может быть источников в команде, для которой он является неявным получателем.

Есть дополнительная система обозначений, которая может использоваться для отнесения активного аккумулятора в команде "MOVE dst, Acc". Если команда записана в виде "MOVE dst, А[АР]", то в качестве источника будет выступать активный аккумулятор, но автоматического инкремента или декремента АР не будет даже при условии, что эта функция активна. Обратите внимание, что активный аккумулятор не может быть получателем для команды MOVE dst, А[АР] (то есть команда MOVE Acc, А[АР] запрещена).

Таким образом две команды:

    move    A[7], Acc
    move    A[7], A[AP]

являются эквивалентными, за исключением того, что первая команда выполнит автоматический декремент/инкремент (если эта функция активна), а вторая - нет.

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

Таблица 3. Установки регистра управления указателем аккумулятора

APC.2(MOD2) APC.1(MOD1) APC.0(MOD0) APC.6(IDS) APC Установки автоматического инкремента/декремента
0 0 0 X 00h Отсутствие автоматического инкремента/декремента (режим по умолчанию)
0 0 1 0 01h Увеличение бита 0 регистра AP (по модулю 2)
0 0 1 1 41h Уменьшение бита 0 регистра AP (по модулю 2)
0 1 0 0 02h Увеличение битов [1:0] регистра AP (по модулю 4)
0 1 0 1 42h Уменьшение битов [1:0] регистра AP (по модулю 4)
0 1 1 0 03h Увеличение битов [2:0] регистра AP (по модулю 8)
0 1 1 1 43h Уменьшение битов [2:0] регистра AP (по модулю 8)
1 0 0 0 04h Увеличение всех четырех битов регистра AP (по модулю 16)
1 0 0 1 44h Уменьшение всех четырех битов регистра AP (по модулю 16)

Для увеличения или уменьшения модуля выбранный диапазон битов в регистре АР увеличивается или уменьшается. Однако, если эти биты выходят за пределы диапазона, то изменения в указатель аккумулятора они вносить не будут. Ниже приведены основные операции:

  • Увеличение по модулю 2: AP = AP[3:1] + ((AP[0] + 1) mod 2)
  • Уменьшение по модулю 2: AP = AP[3:1] + ((AP[0] - 1) mod 2)
  • Увеличение по модулю 4: AP = AP[3:2] + ((AP[1:0] + 1) mod 4)
  • Уменьшение по модулю 4: AP = AP[3:2] + ((AP[1:0] - 1) mod 4)
  • Увеличение по модулю 8: AP = AP[3] + ((AP[2:0] + 1) mod 8)
  • Уменьшение по модулю 8: AP = AP[3] + ((AP[2:0] - 1) mod 8)
  • Увеличение по модулю 16: AP = (AP + 1) mod 16
  • Уменьшение по модулю 16: AP = (AP - 1) mod 16

В приведенном ниже примере подразумевается, что все 16 аккумуляторов были предварительно обнулены.

    move    AP, #02h    ; выбор аккумулятора A[2] в качестве активного
    move    APC, #02h   ; автоматический инкремент указателя аккумулятора AP[1:0] по модулю 4
                        ; AP    A[0]*   A[1]*   A[2]*   A[3]*
                        ; 02    0000    0000    0000    0000
    add     #01h        ; 03    0000    0000    0001    0000
    add     #02h        ; 00    0000    0000    0001    0002
    add     #03h        ; 01    0003    0000    0001    0002
    add     #04h        ; 02    0003    0004    0001    0002
    add     #05h        ; 03    0003    0004    0006    0002
                        ;
                        ; *старший #00h байт каждого аккумулятора 
                        ; имеется только у микроконтроллеров семейства MAXQ20


<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники