Ответы на вопросы (953577), страница 16
Текст из файла (страница 16)
Команды арифметических операций 8051.
В данную группу входят 24 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Сложение аккумулятора с регистром (n=0÷7) | ADD A, Rn | 00l01rrr | 1 | 1 | 1 | (A) (A) + (Rn) |
Сложение аккумулятора с прямоадресуемым байтом | ADD A, ad | 00100101 | 3 | 2 | 1 | (A) (A) + (ad) |
Сложение аккумулятора с байтом из РПД (i = 0,1) | ADD A, @Ri | 0010011i | 1 | 1 | 1 | (A) (A) + ((Ri)) |
Сложение аккумулятора с константой | ADD A, #d | 00100100 | 2 | 2 | 1 | (A) (A) + #d |
Сложение аккумулятора с регистром и переносом | ADDC A, Rn | 00111rrr | 1 | 1 | 1 | (A) (A) + (Rn) + (C) |
Сложение аккумулятора с прямоадресуемым байтом и переносом | ADDC A, ad | 00110101 | 3 | 2 | 1 | (A) (A) + (ad) + (C) |
Сложение аккумулятора с байтом из РПД и переносом | ADDC A, @Ri | 0011011i | 1 | 1 | 1 | (A) (A) + ((Ri)) + (C) |
Сложение аккумулятора с константой и переносом | ADDC A, #d | 00110100 | 2 | 2 | 1 | (A) (A) + # d + (C) |
Десятичная коррекция аккумулятора | DA A | 11010100 | 1 | 1 | 1 | Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7) + 6 |
Вычитание из аккумулятора регистра и заёма | SUBB A, Rn | 10011rrr | 1 | 1 | 1 | (A) (A) - (C) - (Rn) |
Вычитание из аккумулятора прямоадресуемого байта и заема | SUBB A, ad | 10010101 | 3 | 2 | 1 | (A) (A) - (C) - ((ad)) |
Вычитание из аккумулятора байта РПД и заема | SUBB А, @Ri | 1001011i | 1 | 1 | 1 | (A) (A) - (C) - ((Ri)) |
Вычитание из аккумулятора константы и заема | SUBB А, d | 10010100 | 2 | 2 | 1 | (A) (A) - (C) - #d |
Инкремент аккумулятора | INC А | 00000100 | 1 | 1 | 1 | (A) (A) + 1 |
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Инкремент регистра | INC Rn | 00001rrr | 1 | 1 | 1 | (Rn) (Rn) + 1 |
Инкремент прямоадресуемого байта | INC ad | 00000101 | 3 | 2 | 1 | (ad) (ad) + 1 |
Инкремент байта в РПД | INC @Ri | 0000011i | 1 | 1 | 1 | ((Ri)) ((Ri)) + 1 |
Инкремент указателя данных | INC DPTR | 10100011 | 1 | 1 | 2 | (DPTR ) (DPTR) + 1 |
Декремент аккумулятора | DEC A | 00010100 | 1 | 1 | 1 | (A) (A) – 1 |
Декремент регистра | DEC Rn | 00011rrr | 1 | 1 | 1 | (Rn) (Rn) – 1 |
Декремент прямоадресуемого байта | DEC ad | 00010101 | 3 | 2 | 1 | (ad) (ad) – 1 |
Декремент байта в РПД | DEC @Ri | 0001011i | 1 | 1 | 1 | ((Ri)) ((Ri)) - 1 |
Умножение аккумулятора на регистр В | MUL AB | 10100100 | 1 | 1 | 4 | (B)(A) (A)*(В) |
Деление аккумулятора на регистр В | DIV AB | 10000100 | 1 | 1 | 4 | (B).(A) (A)/(В) |
По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице.
Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.
Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.
Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.
Команды логических операций микроконтроллера 8051.
В этой группе 25 команд, их краткое описание приведено в таблице. Нетрудно видеть, что эти команды позволяют выполнять операции над байтами: логическое И (/\ ), логическое ИЛИ ( \/), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Логическое И аккумулятора и регистра | ANL A, Rn | 01011rrr | 1 | 1 | 1 | (A) (A) AND (Rn) |
Логическое И аккумулятора и прямоадресуемого байта | ANL A, ad | 01010101 | 3 | 2 | 1 | (A) (A) AND (ad) |
Логическое И аккумулятора и байта из РПД | ANL A, @Ri | 0101011i | 1 | 1 | 1 | (A) (A) AND ((Ri)) |
Логическое И аккумулятора и константы | ANL A, #d | 01010100 | 2 | 2 | 1 | (A) (A) AND #d |
Логическое И прямоадресуемого байта и аккумулятора | ANL ad, A | 01010010 | 3 | 2 | 1 | (ad) (ad) AND (A) |
Логическое И прямоадресуемого байта и константы | ANL ad, #d | 01010011 | 7 | 3 | 2 | (ad) (ad) AND #d |
Логическое ИЛИ аккумулятора и регистра | ORL A, Rn | 01001rrr | 1 | 1 | 1 | (A) (A) OR (Rn) |
Логическое ИЛИ аккумулятора и прямоадресуемого байта | ORL A, ad | 01000101 | 3 | 2 | 1 | (A) (A) OR (ad) |
Логическое ИЛИ аккумулятора и байта из РПД | ORL A, @Ri | 0100011i | 1 | 1 | 1 | (A) (A) OR ((Ri)) |
Логическое ИЛИ аккумулятора и константы | ORL A, #d | 01000100 | 2 | 2 | 1 | (A) (A) OR #d |
Логическое ИЛИ прямоадресуемого байта и аккумулятора | ORL ad, A | 01000010 | 3 | 2 | 1 | (ad) (ad) OR (A) |
Логическое ИЛИ прямоадресуемого байта и константы | ORL ad, #d | 01000011 | 7 | 3 | 2 | (ad) (ad) OR #d |
Исключающее ИЛИ аккумулятора и регистра | XRL A, Rn | 01101rrr | 1 | 1 | 1 | (A) (A) XOR (Rn) |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта | XRL A, ad | 01100101 | 3 | 2 | 1 | (A) (A) XOR (ad) |
Исключающее ИЛИ аккумулятора и байта из РПД | XRL A, @Ri | 0110011i | 1 | 1 | 1 | (A) (A) XOR ((Ri)) |
Исключающее ИЛИ аккумулятора и константы | XRL A, #d | 01100100 | 2 | 2 | 1 | (A) (A) XOR #d |
Исключающее ИЛИ прямоадресуемого байта и аккумулятора | XRL ad, A | 01100010 | 3 | 2 | 1 | (ad) (ad) XOR (A) |
Исключающее ИЛИ прямоадресуемого байта и константы | XRL ad, #d | 01100011 | 7 | 3 | 2 | (ad) (ad) XOR #d |
Сброс аккумулятора | CLR A | 11100100 | 1 | 1 | 1 | (A) 0 |
Инверсия аккумулятора | CPL A | 11110100 | 1 | 1 | 1 | (A) NOT(A) |
Сдвиг аккумулятора влево циклический | RL A | 00100011 | 1 | 1 | 1 | (An+1) (An), n=0÷6, (A0) (A7) |
Сдвиг аккумулятора влево через перенос | RLC A | 00110011 | 1 | 1 | 1 | (An+1) (An), n=0÷6 (A0) (C), (C) (A7) |
Сдвиг аккумулятора вправо циклический | RR A | 00000011 | 1 | 1 | 1 | (An) (An+1), n=0÷6, (A7) (A0) |
Сдвиг аккумулятора вправо через перенос | RRC A | 00010011 | 1 | 1 | 1 | (An) (An+1), n=0÷6 (A7) (C), (C) (A0) |
Обмен местами тетрад в аккумуляторе | SWAP A | 11000100 | 1 | 1 | 1 | (A0…3) ↔ (A4…7) |
Команды операций над битами микроконтроллера 8051.