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

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

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

Таблица 3. Группа команд арифметических операций

Название команды Мнемокод КОП Т Б Ц Операция
Сложение аккумулятора с регистром (n = 0 - 7) ADD A, Rn 00101rrr       (A) = (A) + (Rn)
Сложение аккумулятора с прямоадресуемым байтом ADD A, ad         (A) = (A) + (ad)
Сложение аккумулятора с байтом из РПД (i = 0, 1) ADD A, @Ri 0010011i       (A) = (A) + ((Ri))
Сложение аккумулятора с константой ADD A, #d         (A) = (A) + #d
Сложение аккумулятора с регистром и переносом ADDC A, Rn 00111rrr       (A) = (A) + (Rn) + (C)
Сложение аккумулятора с прямоадресуемым байтом и переносом ADDC A, ad         (A) = (A) + (ad) + (C)
Сложение аккумулятора с байтом из РПД и переносом ADDC A, @Ri 0011011i       (A) = (A) + ((Ri)) + (C)
Сложение аккумулятора с константой и переносом ADDC A, #d         (A) = (A) + #d + (C)
Десятичная коррекция аккумулятора DA A         Если (A0-3) > 9 \/ ((AC) = 1), то (A0-3) = (A0-3) + 6, затем если (A4-7) > 9 \/ ((C) = 1), то (A4-7) = (A4-7) + 6
Вычитание из аккумулятора регистра и заема SUBB A, Rn 10011rrr       (A) = (A) - (C) - (Rn)
Вычитание из аккумулятора прямоадресуемого байта и заема SUBB A, ad         (A) = (A) - (C) - ((ad))
Вычитание из аккумулятора байта РПД и заема SUBB A, @Ri 1001011i       (A) = (A) - (C) - ((Ri))
Вычитание из аккумулятора константы и заема SUBB A, #d         (A) = (A) - (C) - #d
Инкремент аккумулятора INC A         (A) = (A) + 1
Инкремент регистра INC Rn 00001rrr       (Rn) = (Rn) + 1
Инкремент прямоадресуемого байта INC ad         (ad) = (ad) + 1
Инкремент байта в РПД INC @Ri 0000011i       ((Ri)) = ((Ri)) +1
Инкремент указателя данных INC DPTR         (DPTR) = (DPTR) + 1
Декремент аккумулятора DEC A         (A) = (A) - 1
Декремент регистра DEC Rn 00011rrr       (Rn) = (Rn) - 1
Декремент прямоадресуемого байта DEC ad         (ad) = (ad) - 1
Декремент байта в РПД DEC @Ri 0001011i       ((Ri)) = ((Ri)) -1
Умножение аккумуллятора на регистр B MUL AB         (B)(A) = (A)*(B)
Деление аккумулятора на регистр B DIV AB         (A).(B) = (A)/(B)

Команды ADD и ADDC аналогичны командам сложения МК48, но допускают сложение аккумулятора с большим числом операндов. Аналогично командам ADDC существуют четыре команды SUBB, что позволяет более просто, чем в МК48, производить вычитание байтов и многобайтных двоичных чисел. В MCS-51 реализуется расширенный (по сравнению с МК48) список команд инкремента/декремента байтов, введена команда инкремента 16-битного регистра-указателя данных.

Данную группу образуют 25 команд (табл. 4).

Название команды Мнемокод КОП Т Б Ц Операция
Логическое И аккумулятора и регистра ANL A, Rn 01011rrr       (A) = (A) /\ (Rn)
Логическое И аккумулятора и прямоадресуемого байта ANL A, ad         (A) = (A) /\ (ad)
Логическое И аккумулятора и байта из РПД ANL A, @Ri 0101011i       (A) = (A) /\ ((Ri))
Логическое И аккумулятора и константы ANL A, #d         (A) = (A) /\ #d
Логическое И прямоадресуемого байта и аккумулятора ANL ad, A         (ad) = (ad) /\ (A)
Логическое И прямоадресуемого байта и константы ANL ad, #d         (ad) = (ad) /\ #d
Логическое ИЛИ аккумулятора и регистра ORL A, Rn 01001rrr       (A) = (A) \/ (Rn)
Логическое ИЛИ аккумулятора и прямоадресуемого байта ORL A, ad         (A) = (A) \/ (ad)
Логическое ИЛИ аккумулятора и байта из РПД ORL A, @Ri 0100011i       (A) = (A) \/ ((Ri))
Логическое ИЛИ аккумулятора и константы ORL A, #d         (A) = (A) \/ #d
Логическое ИЛИ прямоадресуемого байта и аккумулятора ORL ad, A         (ad) = (ad) \/ (A)
Логическое ИЛИ прямоадресуемого байта и константы ORL ad, #d         (ad) = (ad) \/ #d
Исключающее ИЛИ аккумулятора и регистра XRL A, Rn 01101rrr       (A) = (A) \/ (Rn)
Исключающее ИЛИ аккумулятора и прямоадресуемого байта XRL A, ad         (A) = (A) \/ (ad)
Исключающее ИЛИ аккумулятора и байта из РПД XRL A, @Ri 0110011i       (A) = (A) \/ ((Ri))
Исключающее ИЛИ аккумулятора и константы XRL A, #d         (A) = (A) \/ #d
Исключающее ИЛИ прямоадресуемого байта и аккумулятора XRL ad, A         (ad) = (ad) \/ (A)
Исключающее ИЛИ прямоадресуемого байта и константы XRL ad, #d         (ad) = (ad) \/ #d
Сброс аккумулятора CLR A         (A) = 0
Инверсия аккумулятора CPL A         (A) = (¬A)
Сдвиг аккумулятора влево циклически RL A         (An+1) = (An), n = 0? 6, (A0) = (A7)
Сдвиг аккумулятора влево через перенос RLC A         (An+1) = (An), n = 0? 6, (A0) = (C), (C) = (A7)
Сдвиг аккумулятора вправо циклически RR A         (A n) = (A n+1), n = 0? 6, (A7) = (A0)
Сдвиг аккумулятора вправо через перенос RRC A         (A n) = (A n+1), n = 0? 6, (A7) = (C), (C) = (A0)
Обмен местами тетрад в аккумуляторе SWAP A         (A0-3) <-> (A4-7)

Имеется возможность производить операцию "исключающее ИЛИ" с содержимым портов. Команда XRL может быть эффективно использована для инверсии отдельных бит портов.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: