Таблица 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) | |||
Исключающее ИЛИ аккумулятора и прямоадресуемого байта | XRL A, ad | (A) = (A) | ||||
Исключающее ИЛИ аккумулятора и байта из РПД | XRL A, @Ri | 0110011i | (A) = (A) | |||
Исключающее ИЛИ аккумулятора и константы | XRL A, #d | (A) = (A) | ||||
Исключающее ИЛИ прямоадресуемого байта и аккумулятора | XRL ad, A | (ad) = (ad) | ||||
Исключающее ИЛИ прямоадресуемого байта и константы | XRL ad, #d | (ad) = (ad) | ||||
Сброс аккумулятора | 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 программных флагов пользователя.