Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
01.05.2014
Размер:
33.28 Кб
Скачать

Система команд МК51

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

Система команд МК51 много мощнее и шире системы команд МК48, так как кроме всех команд МК48 в ее состав входят команды умножения, деления, вычитания, операций над битами, операций со стеком и расширенный набор команд передачи управления. Большинство команд (94) имеют формат один или два байта и выполняются за один или два машинных цикла. При тактовой частоте 2 МГц длительность машинного цикла составляет 1 мкс. Первый байт команды любых типа и формата всегда содержит код операции (КОП). Второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.

Состав операндов МК51 шире, чем МК48, и включает в себя операнды четырех типов: биты, 4-битные цифры, байты и 16-битные слова.

В отличие от МК48, который имеет только три битовых флага, МК51 имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных бит блока регистров специальных функций и портов.

Способы адресации данных. В МК51 используются такие же способы адресации данных, как и в МК48: прямая, непосредственная, косвенная и неявная. Следует отметить, что при косвенном способе адресации РПД в отличие от МК48 используются все восемь бит адресных регистров R0 и R1.

Группа команд пересылки данных

Большую часть команд данной группы (табл. 3.2) составляют команды передачи и обмена байтов. Команды пересылки бит представлены в группе команд битовых операций.

Примеры команд:

- Пересылка в аккумулятор из регистра (MOV A, Rn)

- Пересылка в аккумулятор прямоадресуемого байта (MOV A, ad)

- Пересылка в аккумулятор байта из РДП (MOV A, @Ri)

- Загрузка в аккумулятор константы (MOV A, #d)

и так далее.

Группа команд арифметических операций

Данную группу образуют 24 команды, выполняющие операции сложения, десятичной коррекции, инкремента/декремента байтов. Дополнительно по сравнению с МК48 введены команды вычитания, умножения и деления байтов.

Примеры команд:

- Сложение аккумулятора с регистром (ADD A, Rn)

- Сложение аккумулятора с прямоадресуемым байтом (ADD A, ad)

- Сложение аккумулятора с байтом из РПД (ADD A, @Ri)

- Сложение аккумулятора с константой (ADD A, #d)

- Вычитание из аккумулятора регистра и заема (SUBB A, Rn)

- Инкремент аккумулятора (INC A)

- Декремент аккумулятора (DEC A)

- Умножение аккумуллятора на регистр B (MUL AB)

- Деление аккумулятора на регистр B (DIV AB)

Группа команд логических операций

Данную группу образуют 25 команд (табл. 3.4), реализующих те же логические операции над байтами, что и в МК48. Однако в МК51 значительно расширено число типов операндов, участвующих в операциях.

Примеры команд:

- Логическое И аккумулятора и регистра (ANL A, Rn)

- Логическое ИЛИ аккумулятора и регистра (ORL A, Rn)

- Исключающее ИЛИ аккумулятора и регистра (XRL A, Rn)

- Сброс аккумулятора (CLR A)

- Инверсия аккумулятора (CPL A)

- Сдвиг аккумулятора влево циклически (RL A)

- Сдвиг аккумулятора влево через перенос (RLC A)

- Сдвиг аккумулятора вправо циклически (RR A)

- Сдвиг аккумулятора вправо через перенос (RRC A)

Группа команд операций с битами

Отличительной особенностью данной группы команд (табл. 3.5) является то, что они оперируют с однобитными операндами. В качестве таких операндов могут выступать отдельные биты некоторых регистров специальных функций (РСФ) и портов, а также 128 программных флагов пользователя.

Примеры команд:

- Сброс переноса (CLR C)

- Установка переноса (SETB C)

- Инверсия переноса (CPL C)

и так далее.

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

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

Примеры команд:

- Переход, если аккумулятор равен нулю (JZ rel)

- Переход, если аккумулятор не равен нулю (JNZ rel)

- Переход, если перенос равен единице (JC rel)

- Переход, если перенос равен нулю (JNC rel)

и так далее.

Бывают следующие виды переходов:

- длинные переходы (переход по всему адресному пространству ПП),

- абсолютные переходы (переход в пределах одной страницы памяти программ),

- относительные (позволяет передать управление в пределах -128 - +127 байт относительно адреса следующей команды),

- косвенные (передача управления по косвенному адресу),

- условные (осуществление ветвления по определенным условиям),

- переход из подпрограммы (используются для возврата из подпрограммы).

Соседние файлы в папке MPS_shprots