Мнемоническое обозначение
Описание команды
Число байтов
Число циклов
SETB C
Установка флага переноса
1
SETB bit
Установка бита
2
CLRC
Сброс флага переноса
CLR bit
Сброс бита
CPL C
Инверсия флага переноса
CPL bit
Инверсия бита
MOV C, bit
Пересылка бита во флаг переноса
MOV bit,C
Пересылка флага переноса в бит
ANL C, bit
"Логическое И" бита и флага переноса
ANL. C, /bit
"Логическое И" инверсии бита и флага переноса
ORL C, bit
"Логическое ИЛИ" бита и флага переноса
ORL C,/bit
"Логическое ИЛИ" инверсии бита и флага переноса
JC rel8
Переход, если флаг переноса установлен
JNC rel8
Переход, если флаг переноса сброшен
JB bit,rel8
Переход, если бит установлен
3
JNB bit,rel8
Переход, если бит сброшен
JBC bit,rel8
Переход, если бит установлен, и сброс этого бита
ОБОЗНАЧЕНИЯ:
С - флаг переноса;
bit - 128 программно-доступных битов, любой I/O вывод, бит управления или состояния;
/bit - 128 программно-доступных битов, любой I/O вывод, бит управления или состояния, взятые с инверсией;
rel8- байт относительного смещения (условный переход осуществляется в диапазоне от -128 до +127 байтов относительно адреса первого байта следующей команды).
Эти команды в зависимости от выполняемой функции могут быть одно-, двух- или трехбайтные. Те из них, которые оперируют с флагом переноса, имеют однобайтный код или код, за которым следует байт смещения, использующийся для вычисления адреса условного перехода (рис. 4.а). В более обобщенных командах битовых операций после кода добавляется байт адреса прямоадресуемого бита, образуя двух- или трехбайтные команды (рис. 4.б). На рис. 4 для справки приведены коды этих команд.
С помощью указанных команд можно обращаться непосредственно к 128 битам внутреннего ОЗУ и к 83 битам одиннадцати восьмиразрядных регистров ОМЭВМ.
Код команды:
SETB С
11010011В (D3H)
CLR С
11000011В (С3Н)
CPL С
10110011В(В3Н)
Код команды
Смещение
JC
<ге18>
01000000В (40Н)
JNC
01010000В (50Н)
а) Команды проверки и управления флагом переноса
Адрес бита
SETB
<bit>
11010010B (D2H)
CLR
11000010В (С2Н)
CPL
10110010В (В2Н)
MOV С,
10100010В (А2Н)
MOV
<bit>, С
10010010В (92Н)
ANL С,
10000010В (82Н)
</bit>
10110000В (В0Н)
ORL С,
01110010В(72Н)
10100000В (А0Н)
Адрес бита 1
JB
<bit>,
00100000В (20Н)
JNB
00010000В (10H)
00110000В (30Н)
JBC
б) Команды проверки и операций с битами
Рисунок 4 - Форматы команд операций над битами
В зависимости от значения байта адреса прямо адресуемый бит выбирается из двух групп битов. Значения адреса от 0 (00Н) до 127 (7FH) определяют биты в 16-байтном блоке внутреннего ОЗУ между адресами 20Н и 2FH (см. рис.5а). Они пронумерованы последовательно от младшего бита младшего байта к старшему биту старшего байта. Адреса битов от 128 (80Н) до 255 (0FFH) соответствуют битам регистров специальных функций. Адреса этих битов вычисляются иначе, чем адреса ячеек ОЗУ: пять старших битов адреса совпадают с собственными адресами регистров, а три младших бита адреса идентифицируют позицию бита в пределах регистра (см. рис.5б).
Хотя MCS-51 имеет 20 регистров специальных функций, побитовый доступ обеспечен только для 11 (PSW, АСС, В, P0, P1, P2, P3, TCON, SCON, IE, IP). У 6 из них (PSW, Р3, TCON, SCON, IE, IP) разряды имеют собственные символические имена (рис.6).
Команды общего назначения, адресующиеся непосредственно к битам, могут обращаться к ним (в том числе и к биту переноса), используя соответствующую мнемонику: CY, AC, F0 и т.д.
К битам всех 11 регистров также можно обратиться, используя соответствующее позиционное обозначение: PSW.1, АСС.2, В.З, Р0.4 и т.д.
Регистр АСС (аккумулятор) и регистр В относятся к байтовой арифметике, но их отдельные биты могут использоваться в программе в качестве произвольных 16 флагов. В сумме со 128 ячейками ОЗУ это дает 144 битовые ячейки общего назначения для хранения переменных или программных флагов.
Рисунок 5 - Адреса прямо адресуемых битов
Все 32 вывода портов Р0-РЗ могут индивидуально адресоваться как вход, выход или вход/выход в любой комбинации. Любой вывод может служить программно реализуемым стробом, тестовым входом или последовательным каналом ввода/вывода.
Страницы: 1, 2, 3, 4, 5