8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 71 72 73 74 75 76 77 ... 195

RET

Возврат из подпрограммы

Операция

SP = SP + 2(3); PC = STACK

Код операции

1001 0101 0000 1000

1 слово (2 байта)

Операнды

Нет операндов

Описание

Возврат из подпрограммы. Выполняет возврат в была вызвана

то место, откуда подпрограмма

Регистр SREG

I

T

H

S

V

N

Z

С

-

-

-

-

-

-

-

-

Число тактов

4(в моделях с PC < 16 битов)

5(в моделях с PC > 16 битов)

rcall routine ;

Вызвать

подпрограмму

Пример

routine push

rl4

; Сохранить rl4

pop ret

r!4

;

Восстановить rl4 Возврат из подпрограммы

RETI

Возврат из подпрограммы обработки прерывания

Операция

SP = SP + 2(3); PC

= STACK

Код операции

10010101 0001 1000

1 слово (2 байта)

Операнды

Нет операндов

Описание

Возврат из подпрограммы обработки прерывания. Выполняет возврат в то место, в котором выполнение программы было прервано в результате возникновения прерывания. Следует обратить внимание, что контекст программы (регистр состояния SREG) не сохраняется при вызове подпрограммы обработки прерывания и соответственно не восстанавливается при выходе из нее. В связи с этим сохранение и восстановление этого регистра необходимо выполнять самостоятельно

Регистр SREG

I

T

H

S

V

N

Z

С

1

-

-

-

-

-

-

-

Число тактов

4(в моделях с PC < 16 битов)

5(в моделях с PC > 16 битов)

Пример

extint: push

rO

Сохранить rO

pop rO

reti ;

Восстановить rO Возврат из подпрограммы


RJMPk

Относительный безусловный переход

Операция

РС = РС + к+1;

Код операции

1100 kkkk kkkk kkkk 1 слово (2 байта)

Операнды

-2047 < к < 2047

Описание

Команда относительного безусловного перехода. Выполняет переход по адресу, равному сумме содержимого счетчика команд и константы к. На практике вместо числовых значений смещения используются метки (см. пример)

Регистр SREG

I Т H S V N Z С

-------

Число тактов

2

Пример

cpi г16, $42 ; Сравнить г1б с числом $42 brne error ; Перейти, если г1б * $42 rjmp ok ; Безусловный переход error:

add rl6, rl7 ; Прибавить rl6 к rl7 inc rl6 ; rl6 = rl6 + 1

ok:

ROL Rd

Сдвиг влево через перенос

Операция

С <- Ь7...............................ЬО <- С

Код операции

0001 1 ldd dddd dddd 1 слово (2 байта)

Операнды

0 < d < 31

Описание

Сдвигает содержимое регистра Rd влево на один бит. В бит Ь0 заносится содержимое флага С регистра SREG, а бит Ь7 загружается в флаг С. В комбинации с командой LSL данная команда может использоваться для умножения многобайтных чисел (как знаковых, так и беззнаковых) на два. Эквивалентна команде ADC Rd, Rd. Значение флага Vравно «Исключающему ИЛИ» флагов N и С после сдвига

Регистр SREG

I Т H S V N Z С

--<=><=><=><=><=><=>

Число тактов

1

Пример

; Умножить регистровую пару г19:г18 на 2: lsl г18 ; г18 = г18 * 2 rol г19 ; г!9:г18 - 16-битное целое


ROR Rd

Сдвиг вправо через перенос

Операция

С -► Ь7...............................ЬО -► С

Код операции

1001 010d dddd 0111 1 слово (2 байта)

Операнды

0<d < 31

Описание

Сдвигает содержимое регистра Rd вправо на один бит. В бит Ь7 заносится содержимое флага С регистра SREG, а бит ЬО загружается в флаг С. В комбинации с командой ASR данная команда может использоваться для деления многобайтных знаковых чисел на два, а в комбинации с командой LSR — для деления многобайтных беззнаковых чисел на два. Значение флага V равно «Исключающему ИЛИ» флагов N и С после сдвига

Регистр SREG

I Т Н S V N Z С

-

— о о о о о

Число тактов

1

Пример

lsr г19 гог г18 asr г17 гог г1б

; Разделить регистровую пару г19:г18 на 2 ; г19:г18 - 16-битное целое без знака ; Разделить регистровую пару г17:г16 на 2 ; г17:г16 - 16-битное целое со знаком

SBC Rd, Rr

Вычитание с заемом

Операция

Rd = Rd

-Rr-C

Код операции

0000 10rd dddd rrrr

1 слово (2 байта)

Операнды

0 d 31,0<r< 31

Описание

Вычитает из регистра Rd содержимое регистра Rr. Если флаг переноса С установлен, полученная разность уменьшается на 1. Результат помещается в регистр Rd. Если результат вычитания не равен нулю, флаг нуля Z сбрасывается в 0, в противном случае он остается без изменений

Регистр SREG

I

Т

Н

S

V

N

Z

С

-

-

<=>

<=>

<=>

<=>

<=>

<=>

Число тактов

1

Пример

; Вычитание регистровой пары Rl:R0 из R3:R2 sub r2,r0 ; Вычесть младшие байты sbc гЗ, rl ; Вычесть старшие байты с учетом переноса



0 ... 71 72 73 74 75 76 77 ... 195