В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная > Обзоры по типам > Микроконтроллеры > ARM > Система команд
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Переход (B) и Переход со ссылкой (BL)

Эта команда будет выполнена, если условие истинно. Все различные условия перечислены в табл. 6. Машинные коды обеих команд приведены на рис.12.

Команда перехода
Рис 12. Команда перехода

Команда перехода содержит знаковое 24-битное смещение, дополненное до 2-х. По-сути происходит умножение смещения на 4 и добавление к регистру PC с учетом знака. Таким образом, возможен переход в диапазоне +32 Мбайта.

Переходы за пределы +32 Мбайта должны использовать смещение или абсолютный адрес, который был предварительно загружен в регистр. В этом случае необходимо PC сохранить вручную в регистре R14 (если используется команда "переход со ссылкой").

Бит ссылки (link bit)

Переход со ссылкой (BL) сохраняет прежнее значение регистра PC в регистре ссылки (R14) текущего банка. Значение регистра PC, сохраненное в R14 (оно корректируется таким образом, чтобы осуществить предвыборку), и содержит адрес команды, следующей за командой перехода со ссылкой (BL). При этом CPSR не сохраняется вместе с PC, поэтому биты R14[1:0] всегда равны нулю.

Возврат из подпрограммы, вызываемой командой "переход со ссылкой", использует команду MOV PC,R14 (если содержимое R14 неискаженно) или команду LDM Rn!,{..PC} (R14 сохранен в стеке, указанном через регистр Rn).

Число машинных тактов выполнения

Обе команды перехода и перехода со ссылкой выполняется за 2S+1N машинных такта, где S и N зависят от типа тактов.

Синтаксис в ассемблере

Элемент {} может отсутствовать, но элемент <> - обязателен.

B{L}{cond} <выражение>

{L}: используется для указания того, что команда перехода будет осуществлена со ссылкой, в противном случае регистр R14 командой не используется.
{cond}: двухсимвольная мнемоника условия (см. табл. 6). При отсутствии заменяется на AL (всегда).
<выражение>: выражение для вычисления смещения перехода.

Пример

here    BAL    here           ; бесконечный цикл (машинный код: 0xEAFFFFFE)

        B      there          ; Условие AL используется по-умолчению (тоже что и BAL)

        CMP    R1,#0          ; Если R1 равно нулю,
        BEQ    fred           ; то перейти к freq,
        BL     sub+ROM        ; иначе вызвать подпрограмму,
                              ; заранее вычислив ее адрес (sub+ROM).
        ADDS   R1,#1          ; Прибавить к R1 единицу (воздействует на флаги CPSR)
        BLCC   sub            ; Если флаг переноса C сброшен (R1 не переполнен), 
                              ; то вызвать подпрограмму по адресу со смещением (sub).


<---- Вернуться к Системе команд --->