Команды арифметических операций 8051
В данную группу входят 24 команды, краткое описание которых приведено в табл. 3.4. Из нее следует, что микро-ЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.
Арифметические операции.
Таблица 3.4
Название команды | Мнемокод | Т | Б | Ц | Операция |
Сложение аккумулятора с регистром (n=0÷7) | ADD A, Rn | A (A) + (Rn) | |||
Сложение аккумулятора с прямо адресуемым байтом | ADD A, ad | A (A) + (ad) | |||
Сложение аккумулятора с байтом из РПД (i = 0,1) | ADD A, @Ri | A (A) + ((Ri)) | |||
Сложение аккумулятора с константой | ADD A, #d | A (A) + #d | |||
Сложение аккумулятора с регистром и переносом | ADDC A, Rn | A (A) + (Rn) + (C) | |||
Сложение аккумулятора с прямо адресуемым байтом и переносом | ADDC A, ad | A (A)+ (ad)+ (C) | |||
Сложение аккумулятора с байтом из РПД и переносом | ADDC A, @Ri | A (A) + ((Ri)) + (C) | |||
Сложение аккумулятора с константой и переносом | ADDC A, #d | A (A) + # d + (C) | |||
Десятичная коррекция аккумулятора | DA A | Если (А0…3)>9 или ((AC)=1),то (А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7) + 6 | |||
Вычитание из аккумулятора регистра и заёма | SUBB A, Rn | A (A) - (C) - (Rn) | |||
Вычитание из аккумулятора прямо адресуемого байта и заема | SUBB A, ad | A (A) - (C) - ((ad)) | |||
Вычитание из аккумулятора байта РПД и заема | SUBB А, @Ri | A (A)-(C)-((Ri)) | |||
Вычитание из аккумулятора константы и заема | SUBB А, d | A (A) - (C) - #d | |||
Инкремент аккумулятора | INC А | A (A) + 1 | |||
Инкремент регистра | INC Rn | Rn (Rn) + 1 | |||
Инкремент прямо адресуемого байта | INC ad | ad (ad) + 1 | |||
Инкремент байта в РПД | INC @Ri | (Ri) ((Ri)) + 1 | |||
Инкремент указателя данных | INC DPTR | DPTR (DPTR)+1 | |||
Декремент аккумулятора | DEC A | A (A) – 1 | |||
Декремент регистра | DEC Rn | Rn (Rn) – 1 | |||
Декремент прямоадресуемого байта | DEC ad | ad (ad) – 1 | |||
Декремент байта в РПД | DEC @Ri | (Ri) ((Ri)) - 1 | |||
Умножение аккумулятора на регистр В | MUL AB | BA (A)*(В) | |||
Деление аккумулятора на регистр В | DIV AB | B.A (A)/(В) |
По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW. Формат PSW приведен в табл. 3.5.
Формат PSW
Таблица 3.5
Обознач. | Разряд | Наименование и назначение |
P | PSW.0 | Флаг паритета. Устанавливается и сбрасывается аппаратно: P=1, если в аккумуляторе нечетное число единиц; P=0, если в аккумуляторе четное число единиц |
– | PSW.1 | Флаг, определяемый пользователем. Устанавливается, сбрасывается и тестируется программно |
OV | PSW.2 | Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций. |
RS0 | PSW.3 | Выбор банка регистров. Устанавливаются и сбрасываются программно: RS1=0, RS0=0: Банк 0 (Адреса 00H ¸ 07H) RS1=0, RS0=1: Банк 1 (Адреса 08H ¸ 0FH) RS1=1, RS0=0: Банк 2 (Адреса 10H ¸ 17H) RS1=1, RS0=1: Банк 3 (Адреса 18H ¸ 1FH) |
RS1 | PSW.4 | |
F0 | PSW.5 | Флаг общего назначения. Устанавливается, сбрасывается и тестируется программно |
AC | PSW.6 | Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратно при выполнении команд сложения и вычитания и несет информацию о переносе или заеме в 3-ем разряде |
C | PSW.7 | Флаг переноса. Устанавливается и сбрасывается аппаратно (при выполнении арифметических и логических. операций) или программно. |
Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.
Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.
Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.
Единственная команда вычитания — «вычитание с заемом» SUBB, поэтому перед её использованием необходимо контролировать значение бита переноса C.
При умножении старший байт результата записывается в регистр-расширитель В, а младший — в А. Если содержимое А>256, то формируется флаг арифметического переполнения OV. Бит С всегда сбрасывается.
При делении частное записывается в А, а остаток — в В. Флаги переноса C и арифметического переполнения OV сбрасываются. Если (А)<(В), то флаг дополнительного переноса (АС) не сбрасывается. При делении на 0 устанавливается флаг OV.
Дата добавления: 2015-10-09; просмотров: 1152;