КИПиА ЯМАЛ
Электронная библиотека учебной документации КИПиА
6-й разряд · МДК.01.02 · Билет № 2 · Вопрос 3

Содержание и формат команд AVR-ассемблера.

Ответ

Ответ на вопрос

Содержание и формат команд AVR-ассемблера

Команда AVR-ассемблера состоит из мнемоники операции и, при необходимости, операндов. Мнемоника показывает, что должен выполнить микроконтроллер, а операнды указывают, с какими данными выполняется операция.

Общий формат команды

Обычно строка программы имеет вид:

метка: мнемоника операнды ; комментарий

Например:

loop: INC R16 ; увеличить R16 на 1 CPI R16, 10 ; сравнить R16 с 10 BRNE loop ; перейти, если не равно

Элементы строки:

  • loop: — метка;

  • INC, CPI, BRNE — мнемоники команд;

  • R16, 10, loop — операнды;

  • текст после ; — комментарий.

Содержание команды

Машинная команда AVR содержит информацию о:

  • коде выполняемой операции;

  • регистрах, участвующих в операции;

  • непосредственном числовом значении, если оно используется;

  • адресе памяти;

  • адресе или смещении перехода;

  • отдельных битах регистров.

После трансляции ассемблер превращает мнемоническую запись в машинный двоичный код, понятный процессору.

Например:

LDI R16, 25

означает: загрузить число 25 в регистр R16.

Основные форматы команд

1. Команды без операндов

Некоторые команды не требуют явно записанных операндов:

NOP RET RETI
  • NOP — нет операции;

  • RET — возврат из подпрограммы;

  • RETI — возврат из прерывания.

2. Команды с одним операндом

INC R16 DEC R17 COM R18

Например:

INC R16

увеличивает содержимое регистра R16 на единицу.

3. Команды с двумя операндами

Наиболее распространённый формат:

ADD R16, R17 MOV R18, R19 CPI R20, 100

Например:

ADD R16, R17

выполняет:

R16=R16+R17R16 = R16 + R17

Первый операнд обычно является приёмником результата.

4. Команды с непосредственным операндом

В качестве одного из операндов используется число:

LDI R16, 0xFF CPI R16, 10 ANDI R16, 0x0F

Например:

LDI R16, 0xFF

загружает шестнадцатеричное значение FF в регистр R16.

5. Команды переходов

Операндом является метка или адрес:

RJMP loop BREQ equal CALL subroutine

Например:

RJMP start

осуществляет безусловный переход к метке start.

Форматы чисел

В AVR-ассемблере могут применяться разные системы счисления:

LDI R16, 25 ; десятичное число LDI R16, 0x19 ; шестнадцатеричное LDI R16, 0b00011001 ; двоичное

Во всех трёх случаях в R16 будет записано одно и то же число — 25.

Регистры в командах

AVR имеет 32 регистра общего назначения:

R0 ... R31

Например:

MOV R16, R17

копирует содержимое R17 в R16.

Некоторые команды имеют ограничения на используемые регистры. Например, команда LDI применяется к регистрам R16–R31:

LDI R16, 100

Пример фрагмента программы

LDI R16, 0 LDI R17, 10 loop: INC R16 CP R16, R17 BRNE loop

Здесь:

  1. в R16 записывается 0;

  2. в R17 записывается 10;

  3. R16 увеличивается на 1;

  4. регистры сравниваются;

  5. цикл выполняется, пока значения не станут равными.

Кратко для ответа по билету

Команда AVR-ассемблера состоит из мнемоники и операндов. Строка программы может содержать метку, команду, операнды и комментарий. Команды бывают без операндов, с одним или двумя операндами, с непосредственным числом, адресом памяти или меткой перехода. Ассемблер преобразует такую запись в машинный двоичный код микроконтроллера.

Этот вопрос используется в билетах