Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кормилин_2003_Устрой.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
576 Кб
Скачать
☆
    1. Система команд оэвм кр1816ве51

Система команд МК51 содержит 111 базовых команд. По функциональному признаку команды можно разделить на пять групп:

  1. команды передачи данных;

  2. арифметические команды;

  3. логические команды;

  4. команды передачи управления;

  5. команды операций с битами.

Большинство команд (94) имеют формат один или два байта и выполняются за один или два машинных цикла. Остальные команды - трехбайтные и выполняются за два машинных цикла. Только на выполнение команд умножения и деления требуется четыре машинных цикла.

Первый байт всех 13 типов команд (рисунок 4.18) содержит код операции (КОП). Второй и третий байты содержат либо адреса операндов, либо непосредственные данные.

Рисунок 4.18 - Типы операндов в МК51

В системе команд МК51 используется четыре способа адресации данных.

  1. Регистровая адресация. В команде указано символическое название регистра.

  2. Прямая адресация. В команде явно указан адрес операнда в памяти.

  3. Непосредственная адресация. В команде задан сам операнд.

  4. Косвенная адресация. В команде задано имя регистра или регистровой пары, в которых содержится адрес, по которому и происходит обращение к операнду в памяти.

В системе команд используются следующие обозначения (в скобках показаны варианты обозначений, встречающиеся в командах, с буквой h обозначаются старшие байты слов, с буквой l - младшие байты слов):

Rn, n=0,7 - регистры R0-R7 текущего выбранного банка регистров;

direct (ad, add, ads) - 8-битный прямой адрес ячейки резидентной памяти данных (0-127) или регистра специальных функций (128-255);

@Ri, i=0,1 - 8-битная ячейка РПД или регистра специальных функций, косвенно адресуемая через регистр R0 или R1;

#data (#d) - 8-битная константа, входящая в состав команды;

#data16 (#d16h, #d16l) - 16-битная константа, входящая в состав команды (непосредственная адресация);

addr16 (ad16h, ad16l), ad16 - 16-битовый адрес назначения в командах длинного перехода LJMP и вызова подпрограмм LCALL, позволяющий охватить полное адресное пространство (64 К);

addr11, ad11 - 11-битовый адрес назначения в командах абсолютного перехода АJMP и вызова подпрограмм АCALL, позволяющий выполнить переход в пределах 2 К страницы от адреса текущей команды;

rel - 8-битное значение смещения со знаком. Смещение с учетом знака суммируется с текущим содержимым счетчика команд и позволяет выполнить переход в пределах -128 +127 байт относительно текущего адреса;

bit - 8-битовый прямой адрес адресуемого бита, находящегося в РПД (0-127) или в регистре специальных функций (128-255).

Микроконтроллер оперирует данными четырех типов: биты, тетрады (4-битовые цифры), байты и 16-битовые слова.

Биты. В МК51 определены 256 битов, из них 128 находятся в РПД и используются как флаги пользователя, а остальные 128 битов расположены в блоке регистров специальных функций и входят в состав некоторых регистров этого блока. Для обращения к битам используется прямой 8-битный адрес (bit).

Тетрады. Операции с тетрадами определены только в командах обмена тетрад в аккумуляторе и между регистром и аккумулятором.

Байты. Байтовым операндом может быть адрес внутренней и внешней памяти данных и программ, непосредственный операнд, константа, адрес регистра специальных функций или порта ввода/вывода.

Слова. Двухбайтовые операнды могут быть или константами, или прямыми адресами памяти и занимают второй и третий байты команды.

В слове состояния процессора (PSW, таблица 4.2) имеются четыре флага, отражающие результат операции в АЛУ: C - перенос, AC - вспомогательный перенос, OV - переполнение и P - паритет. Только некоторые команды изменяют флаги результата (таблица 4.13).

Таблица 4.13 - Команды, изменяющие флаги результата

Команды

Флаги

Команды

Флаги

ADD

C, OV, AC

CLR C

C=0

ADDC

C, OV, AC

CPL C

C=

SUBB

C, OV, AC

ANL C,b

C

MUL

C=0, OV

ANL C,/b

C

DIV

C=0, OV

ORL C,b

C

DA

C

ORL C,/b

C

RRC

C

MOV C,b

C

RLC

C

CJNE

C

SETB C

C=1

Флаги C, AC, OV связаны с состоянием АЛУ и не изменяются в операциях, минующих использование АЛУ. Состояние этих флагов можно изменять и прямой записью соответствующих битов в регистре PSW. Флаг паритета Р изменяется любой командой, изменяющей аккумулятор. Прямое изменение флага P не вызовет сообщения об ошибке, но его значение останется соответствующим состоянию аккумулятора.