Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие 51.doc
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
5.89 Mб
Скачать

Группа команд передачи управления

Мнемоника

Описание

Операция

Циклы

Флаги

RJMP k

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

PC = PC + k + 1

2

IJMP

Косвенный безусловный переход

PC = Z

2

JMP k

Абсолютный переход

PC = k

3

RCALL k

Относительный вызов подпрограммы

PC = PC + k + 1

3

ICALL

Косвенный вызов подпрограммы

PC = Z

3

CALL k

Абсолютный вызов подпрограммы

PC = k

4

RET

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

PC = STACK

4

RETI

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

PC = STACK

4

I

CP Rd,Rr

Сравнение РОН

Rd – Rr

1

Z, N, V, C, H

CPC Rd,Rr

Сравнение РОН с учетом переноса

Rd – Rr – C

1

Z, N, V, C, H

CPI Rd,K

Сравнение РОН с константой

Rd – K

1

Z, N, V, C, H

Продолжение табл. П1.5

Мнемоника

Описание

Операция

Циклы

Флаги

CPSE Rd,Rr

Сравнение и пропуск следующей команды при равенстве

Если Rd = Rr, то PC = PC + 2 (3)

1/2/3

SBRC Rr,b

Пропуск след. команды, если разряд РОН сброшен

Если Rr.b = 0, то PC = PC + 2 (3)

1/2/3

SBRS Rr,b

Пропуск след. команды, если разряд РОН установлен

Если Rr.b = 1, то PC = PC + 2 (3)

1/2/3

SBIC A,b

Пропуск след. команды, если разряд РВВ сброшен

Если A.b = 0, то PC = PC + 2 (3)

1/2/3

SBIS A,b

Пропуск след. команды, если разряд РВВ установлен

Если A.b = 1, то PC = PC + 2 (3)

1/2/3

BRBC s,k3

Переход, если флаг s регистра SREG сброшен

Если SREG.s = 0, то PC = PC + k + 1

1/2

BRBS s,k

Переход, если флаг s регистра SREG установлен

Если SREG.s = 1, то PC = PC + k + 1

1/2

BRCS k

Переход по переносу

Если C = 1, то PC = PC + k + 1

1/2

Продолжение табл. П1.5

Мнемоника

Описание

Операция

Циклы

Флаги

BRCC k

Переход, если нет переноса

Если C = 0, то PC = PC + k + 1

1/2

BREQ k

Переход по «равно»

Если Z = 1, то PC = PC + k + 1

1/2

BRNE k

Переход по «не равно»

Если Z = 0, то PC = PC + k + 1

1/2

BRSH k

Переход по «выше или равно»

Если C = 0, то PC = PC + k + 1

1/2

BRLO k

Переход по «меньше»

Если C = 1, то PC = PC + k + 1

1/2

BRMI

Переход по «отрицательное значение»

Если N = 1, то PC = PC + k + 1

1/2

BRPL

Переход по «положительное значение»

Если N = 0, то PC = PC + k + 1

1/2

BRGE

Переход по «больше или равно» (числа со знаком)

Если (N  V) = 0, то PC = PC + k + 1

1/2

BRLT

Переход по «меньше нуля» (числа со знаком)

Если (N  V) = 1, то PC = PC + k + 1

1/2

BRHS

Переход по половинному переносу

Если H = 1, то PC = PC + k + 1

1/2

Окончание табл. П1.5

Мнемоника

Описание

Операция

Циклы

Флаги

BRHC

Переход, если нет половинного переноса

Если H = 0, то PC = PC + k + 1

1/2

BRTS

Переход, если флаг T установлен

Если T = 1, то PC = PC + k + 1

1/2

BRTC

Переход, если флаг T сброшен

Если T = 0, то PC = PC + k + 1

1/2

BRVS

Переход по переполнению доп. кода

Если V = 1, то PC = PC + k + 1

1/2

BRVC

Переход, если нет переполнения доп. кода

Если V = 0, то PC = PC + k + 1

1/2

BRID

Переход, если прерывания запрещены

Если I = 0, то PC = PC + k + 1

1/2

BRIE

Переход, если прерывания разрешены

Если I = 1, то PC = PC + k + 1

1/2

Таблица П1.6

Группа команд управления системой

Мнемоника

Описание

Операция

Циклы

Флаги

NOP

Нет операции

1

SLEEP

Переход в «спящий» режим

3

WDR

Сброс сторожевого таймера

1

ПРИЛОЖЕНИЕ 2

Директивы ассемблера, используемые в данной работе

Компилятор поддерживает ряд директив. Все директивы предваряются точкой. Директивы не транслируются непосредственно в код – они используются для указания положения в программной памяти, определения макросов, инициализации памяти и т.д.

CSEG - Программный сегмент

Директива CSEG определяет начало программного сегмента. Исходный файл может состоять из нескольких программных сегментов, которые объединяются в один программный сегмент при компиляции. Программный сегмент является сегментом по умолчанию. Программные сегменты имеют свои собственные счётчики положения, которые считают не побайтно, а пословно. Для размещения кода и констант в необходимом месте сегмента может быть использована директива ORG. Директива CSEG не имеет параметров.

Синтаксис: .CSEG

Пример: .DSEG            ; Начало сегмента данных vartab: .BYTE 4   ; Резервирует 4 байта в ОЗУ

.CSEG             ; Начало кодового сегмента const:  .DW 2     ; Разместить константу 0x0002 ; в памяти программ         mov r1,r0 ; Выполнить действия

DEF - Назначить регистру символическое имя

Директива DEF позволяет ссылаться на регистр через некоторое символическое имя. Назначенное имя может использоваться во всей нижеследующей части программы для обращений к данному регистру. Регистр может иметь несколько различных имен. Символическое имя может быть переназначено позднее в программе.

Синтаксис: .DEF Символическое_имя = Регистр

Пример: .DEF temp=R16 .DEF ior=R0

.CSEG  ldi temp,0xf0 ; Загрузить 0xf0 в регистр temp (R16)  in ior,0x3f  ; Прочитать SREG в регистр ior (R0)  eor temp,ior  ; Регистры temp и ior складываются по . ; исключающему ИЛИ