
- •Система командMcs-51 Система команд микроконтроллера семейства 8051. .Общая характеристика.
- •.Типы команд
- •.Типы операндов
- •Группы команд.
- •.Oбозначения, используемые при описании команд.
- •.Команды пересылки данных микроконтроллера 8051.
- •Команды арифметических операций 8051.
- •Регистр флагов (psw).
- •Команды логических операций микроконтроллера 8051.
- •Пример: rl a циклический сдвиг содержимого аккумулятора влево
- •.Команды операций над битами микроконтроллера 8051.
- •.Команды передачи управления микроконтроллера 8051.
- •Система прерываний микроконтроллера 8051.
- •3.6.1.Регистр масок прерывания (ie).
- •3.6.2.Регистр приоритетов прерываний (ip).
- •Выполнение подпрограммы прерывания.
- •Программные симуляторы.
- •Программные средства для микроконтроллеров семейства mcs-51.
- •.Дизассемблеры mcs-51.
- •..Компиляторы с языка ассемблер для микроконтроллеров семейства mcs-51.
- •.Список литературы.
Регистр флагов (psw).
Символ |
Позиция |
Имя и назначение |
||||||||||||||||||||
P |
PSW.0 |
Флаг приоритета. Устанавливается и сбрасывается аппаратурно в каждом цикле команды и фиксирует нечетное/четное число единичных бит в аккумуляторе |
||||||||||||||||||||
- |
PSW.1 |
Не используется |
||||||||||||||||||||
OV |
PSW.2 |
Флаг переполнения. Устанавливается и сбрасывается аппаратурно при выполнении арифметических операций |
||||||||||||||||||||
RS0 - RS1 |
PSW.3 - PSW.4 |
Биты выбора используемого банка регистров. Могут быть изменены программным путем
|
||||||||||||||||||||
F0 |
PSW.5 |
Флаг пользователя. Может быть установлен, сброшен или проверен программой пользователя |
||||||||||||||||||||
АС |
PSW.6 |
Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратными средствами при выполнении команд сложения и вычитания и сигнализирует о переносе или заеме в бите 3 аккумулятора |
||||||||||||||||||||
C |
PSW.7 |
Флаг переноса. Устанавливается и сбрасывается как аппаратурно, так и программным путем |
Таблица. Перечень флагов, их символические имена и условия формирования
Наиболее “активным” флагом PSW является флаг переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (C) выполняет функции “булева аккумулятора” в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование арифметики в дополнительных кодах. ALU не управляет флагами селекции банка регистров (RS0, RS1), их значение полностью определяется прикладной программой и используется для выбора одного из четырёх регистровых банков.
В микропроцессорах, архитектура которых опирается на аккумулятор, большинство команд работают с ним, используя неявную адресацию. В Intel 8051 дело обстоит иначе. Хотя процессор имеет в своей основе аккумулятор, он может выполнять множество команд и без его участия. Например, данные могут быть переданы из любой ячейки RDM в любой регистр, любой регистр может быть загружен непосредственным операндом и т.д. Многие логические операции могут быть выполнены без участия аккумулятора. Кроме того, переменные могут быть инкрементированы, декрементированы и проверены без использования аккумулятора. Флаги и управляющие биты могут быть проверены и изменены аналогично.
По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице.
Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.
Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.
Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.
Пример: Сложить 85H и 90H . Результат поместить в регистры R5, R6.
MOV A, #85H; A=85H
ADD A,#90H; A=15H [CF=1]
MOV R5,A; R5=15H
MOV A,#0; A=0
ADDC A,#0; A=1
MOV R6,A; R6=1