Микроконтроллеры семейства MCS51 Intel
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
Инструкции MCS51TM Intel
Инструкции, модифицирующие флаги (1)
Инструкция C OV AC Инструкция C OV ACADD X X XCLR C OADDC X X XCPL C XSUBB X X XANL C,bit XMUL O XANL C,/bit XDIV O XORL C,bit XDA XORL C, bit XRRC XMOV C,bit XRLC XCJNE XSETB C 1Замечание. Операции с регистром специальных функций с регистром PSW или с его битами также модифицируют флаги.
Условные обозначения операндов:
Rn Регистр R7-R0 текущего банка рабочих регистров
direct 8-bit прямой адрес. Это может быть ячейка внутреннего ОЗУ данных (0-7F h) или SFR (7Fh - 0FFh).
@Ri 8-bit косвенный адрес внутреннего ОЗУ (00 - 0ffh) равен содержимому указателя R0 или R1.
#data 8-bit непосредственная константа, включенная в инструкцию.
#data 16 16-bit непосредственная константа, включенная в инструкцию.
addr 16 16-bit адрес длинного перехода, используемый командами LCALL и LJMP.
addr 11 11-bit адрес относительного перехода, используемый командами ACALL и AJMP.
rel 8-bit смещение со знаком, используемое командой SJMP и командами условных переходов.
bit Прямой адрес бита внутреннего ОЗУ или SFR.
Таблица 1. Список инструкций MCS51TM Intel.
МнемоникаСодержаниеByte Tact1. Арифметические операции.ADD A,Rn (A) + (Rn) -> A Сложение112ADD A,direct(A) + (direct) -> A 212ADD A,@Ri (A) + ( (Ri) ) -> A112ADD A,#data (A) + #data -> A212ADDC A,Rn (A) + (Rn) + c -> A Сложение с учетом переноса112ADDC A,direct (A) + (direct) + c -> A 212ADDC A,@Ri (A) + ( (Ri) ) + c -> A112ADDC A,#data (A) - #data - c -> A212SUBB A,Rn (A) - (Rn) - c -> A Вычитание с учетом заема112SUBB A,direct (A) - (direct) - c -> A 212SUBB A,@Ri (A) - ( (Ri) ) - c -> A112SUBB A,#data (A) - #data - c -> A212INC A (A) + 1 -> A Инкремент ( увеличение на единицу )112INC Rn (Rn) + 1 -> Rn 112INC direct (direct) + 1 -> direct212INC @Ri( (Ri) ) + 1 -> ( Ri )112INC DPTR (DPTR) + 1 -> DPTR124DEC A (A) - 1 -> A Декремент ( уменьшение на единицу )112DEC Rn (Rn) - 1 -> Rn 112DEC direct (direct) - 1 -> direct212DEC @Ri ( (Ri) ) - 1 -> ( Ri )112MUL AB(A) * (B) -> AB Умножение (AB - произведение) 148DIV AB(A) / (B) -> AB Деление (A - частное B - остаток)148DA A Десятичная коррекция аккумулятора1122. Логические операции.ANL A,Rn (A) и (Rn) -> A Логическое побитовое И112ANL A,direct (A) и (direct) -> A212ANL A,@Ri (A) и ( (Ri) ) -> A 112ANL A,#data (A) и #data -> A212ANL direct,A (direct) и (A) -> direct212ANL direct,#data (direct) и #data -> direct324ORL A,Rn (A) или (Rn) -> A Логическое побитовое ИЛИ112ORL A,direct (A) или (direct) -> A212ORL A,@Ri (A) или ( (Ri) ) -> A 112ORL A,#data (A) или #data -> A212ORL direct,A (direct) или (A) -> direct212ORL direct,#data (direct) или #data -> direct324XRL A,Rn (A) ^ (Rn) -> A Логическое побитовое исключающее ИЛИ112XRL A,direct (A) ^ (direct) -> A212XRL A,@Ri (A) ^ ( (Ri) ) -> A 112XRL A,#data (A) ^ #data -> A212XRL direct,A (direct) ^ (A) -> direct212XRL direct,#data (direct) ^ #data -> direct324CLR A 00h -> A Обнуление 112МнемоникаСодержаниеByte TactCPL A not (A) -> A Инверсия112RL A Циклический сдвиг аккумулятора влево на один бит112RLC A Циклический сдвиг аккумулятора влево на один бит через бит переноса112RR A Циклический сдвиг аккумулятора вправо на один бит112RRC A Циклический сдвиг аккумулятора вправо на один бит через бит переноса112SWAP A Обмен тетрадами в аккумуляторе1123. Пересылка данных.MOV A,Rn (Rn) -> A112MOV A,direct (direct) -> A212MOV A,@Ri( (Ri) ) -> A112MOV A,#data #data -> A212MOV Rn,A (A) -> Rn112MOV Rn,direct (direct) -> Rn224MOV Rn,#data #data -> Rn212MOV direct,A (A) -> direct212MOV direct,Rn (Rn) -> direct224MOV direct,direct (direct) -> direct324MOV direct,@Ri ( (Ri) ) -> direct224MOV direct,#data #data -> direct324MOV @Ri,A (A) -> (Ri)112MOV @Ri,direct (direct) -> (Ri)224MOV @Ri,#data #data -> (Ri)212MOV DPTR,#data16 #data16 -> DPTR324MOVC A,@A+DPTR ( ( A) + ( DPTR ) ) -> A Обмен с внешне памятью программ 124MOVC A,@A+PC ( ( A) + ( PC ) ) -> A124MOVX A,@Ri ( ( Ri) ) -> A Обмен с внешней памятью данных124MOVX A,@DPTR ( ( DPTR ) ) -> A124MOVX @Ri,A (A) -> ( Ri) 124MOVX @DPTR,A (A) -> ( DPTR )124PUSH direct (direct) -> Stack Запись в стек224POP direct (Stack) -> direct Извлечение из стека224XCH A,Rn (A) bit 224JC rel если с = 1 , то переход по смещению rel224JNC rel если с = 0 , то переход по смещению rel224JB bit,rel если bit = 1 , то переход по смещению rel324JNB bit,rel если bit = 0 , то переход по смещению rel324JBC bit,rel если bit = 1 , то переход по смещению rel и сброс bit3245. Команды передачи управления.ACALL addr11 Вызов процедуры по адресу addr11224LCALL addr16 Вызов процедуры по адресу addr16324RET Возврат из процедуры124RETI Возврат из процедуры обработки прерывания124AJMP addr11 Безусловный переход по адресу addr11224LJMP addr16 Безусловный переход по адресу addr16324SJMP rel Безусловный переход по смещению rel224JMP @A+DPTR Безусловный переход по смещению (A) относительно (DPTR)124JZ rel Условный переход, если равно 0, по смещению rel224JNZ rel Условный переход, если не равно 0, по смещению rel224CJNE A,direct,rel Условный переход, если (A) не равно (direct), по смещению rel324CJNE A,#data,rel Условный переход, если (A) не равно #data, по смещению rel324CJNE Rn,#data,rel Условный переход, если (Rn) не равно #data, по смещению rel324CJNE @Ri,#data,rel Условный переход, если ( (Ri) ) не равно #data, по смещению rel324DJNZ Rn,rel Декремент Rn и условный переход, если не равно 0, по смещению rel224DJNZ direct,rel Декремент direct и условный переход, если не равно 0, по смещению rel324NOP Пустой оператор.112