Команда "нет операции" выполняет холостой ход и не влияет на регистры и флаги, кроме как на счетчик команд (РС).
Ассемблер:
NOP
Код:
0 0 0 0 0 0 0 0
Время:
1 цикл
Алгоритм:
(PC):=(PC)+1
Пример:
Пусть требуется создать отрицательный выходной
импульс на порте P1[6] длительностью 3 цикла. Это
выполнит следующая последовательность команд:
CLR P1.6 ;P1[6]:=0
NOP
NOP
NOP
SETB P1.6 ;P1[6]:=1
Команда ORL <байт-назначения>, <байт-источникa>
Команда "логическое "ИЛИ" для переменных байтов" выполняет операцию логического "ИЛИ" над битами указанных переменных, записывая результат в байт назначения. Эта команда на флаги не влияет. Допускается шесть комбинаций режимов адресации:
если байтом назначения является аккумулятор :
регистровый
прямой
косвенно-регистровый
непосредственный
если байтом назначения является прямой адрес :
к аккумулятору
к константе
Рассмотрим их.
Ассемблер:
ORL A,Rn ; где n=0-7
Код:
0 1 0 0 1 rrr
, где rrr=000-111
Время:
1 цикл
Алгоритм:
(A) : = (A) OR (Rn), где OR - операция логического "ИЛИ"
Примечание. Если команда используется для работы с портом, величина, используемая в качестве исходных данных порта, считывается из "защелки" порта, а не с выводов БИС.
Команда ORL C, <бит источникa>
Команда "логическое "ИЛИ" для переменных битов" устанавливает флаг переноса С, если булева величина равна логической "1", в противном случае устанавлиается флаг С в "0". Косая дробь ("/") перед операндом на языке ассемблера указывает на то, что в качестве операнда используется логическое отрицание значения адресуемого бита, но сам бит источника не изменяется. Эта команда на другие флаги не влияет.
Команда "чтение из стека" считывает содержимое ячейки, которая адресуется с помощью указателя стека, в прямо адресуемую ячейку ОЗУ, при этом указатель стека уменьшается на единицу.
Эта команда не воздействует на флаги и часто используется для чтения из стека промежуточных данных.
Ассемблер:
POP <direct>
Код:
1 1 0 1 0 0 0 0
direct address
Время:
2 циклa
Алгоритм:
(direct):=((SP)), (SP):=(SP)-1
Пример:
;(SP)=32H, (DPH)=01, (DPL)=ABH,
;(ОЗУ[32])=12H, (ОЗУ[32])=56H,
POP DPH
POP DPL ;(SP)=30H, (DPH)=12H, (DPL)=56H,
;(ОЗУ[32])=12H, (ОЗУ[31])=56H
POP SP ;(SP)=20H, (ОЗУ[30])=20H
Команда PUSH <direct>
Команда "запись в стек" увеличивает указатель стека на единицу и после этого содержимое указанной прямо адресуемой перемнной копируется в ячейку внутреннего ОЗУ, адресуемого с помощью указателя стека. На флаги эта команда не влияет и используется для записи промежуточных данных в стек.