Группа команд арифметических операций
Данная группа состоит из 12 команд (таб. 6) и позволяет выполнять следующие операции над 8-битными целыми двоичными числами без знака: двоичное сложение (ADD), двоичное сложение с учетом переноса (ADDC), десятичная коррекция (DA), инкремент (INC) и декремент (DEC).
При сложении используется неявная адресация источника первого операнда и места назначения результата, в качестве которых выступает аккумулятор. Содержимое аккумулятора А можно сложить с регистром, константой и ячейкой РПД. В результате суммирования возможно появление переноса, который фиксируется в специальном триггере переноса (флаг С). Команда сложения с учетом переноса позволяет выполнять суммирование многобайтных чисел.
При неоходимости выполнять двоичное вычитание требуется перевести вычитаемое в дополнительный код и произвести сложение с уменьшаемым.
Все более сложные операции (умножение, деление) выполняются по подпрограммам.
Таблица 6. Группа команд арифметических операций
Название команды | Мнемокод | КОП | Т Б Ц | Операция |
Сложение регистра с аккумулятором | ADD А,Rn | 01101rrr | 1 1 1 | (A) = (A) + (Rn) |
Сложение байта из РПД с аккумулятором | ADD A,@Ri | 0110000i | 1 1 1 | (A) = (A) + ((Ri)) |
Сложение константы с аккумулятором | ADD A,#d | 2 2 2 | (А) = (A) +#d | |
Сложение регистра с аккумулятором и переносом | ADDC A,Rn | 01111rrr | 1 1 1 | (A) = (A) + (Rn) + (С) |
Сложение байта из РПД с аккумулятором и переносом | ADDC A,@Ri | 0111000i | 1 1 1 | (A) = (A) + ((Ri)) + (С) |
Сложение константы с аккумулятором и переносом | ADDC A,@d | 2 2 2 | (A) = (A) +#d+ (C) | |
Десятичная коррекция аккумулятора | DA А | 1 1 1 | если ((A0-3) >9) \/ ((AC) =1),то (A0-3) = (A0-3) +6 затем, если ((A4-7) >9) \/ ((C) = 1)), то (A4-7) = (A4-7) +6 | |
Инкремент аккумулятора | INC А | 1 1 1 | (А) = (А) +1 | |
Инкремент регистра | INC Rn | 00011rrr | 1 1 1 | (Rn) = (Rn) +l |
Инкремент байта в РПД | INC @Ri | 0001000i | 1 1 1 | ((Ri)) = ((Ri)) +l |
Декремент аккумулятора | DEC A | 1 1 1 | (A) = (A) -l | |
Декремент регистра | DEC Rn | 11001rrr | 1 1 1 | (Rn) = (Rn) -1 |
Группа команд логических операций
Данная группа состоит из 28 команд (таб. 7) и позволяет выполнять следующие операции над байтами: дизъюнкцию, конъюнкцию, исключающее ИЛИ, инверсию, сброс и сдвиг. Две команды (сброс и инверсия) позволяют выполнять операции над битами.
Широко используется неявная адресация аккумулятора в качестве источника операнда и места фиксации результата. Вторым операндом в командах может быть регистр, константа или ячейка РПД. Существуют команды (ANL, ORL), оперирующие с портами, что позволяет эффективно управлять значениями отдельных бит при вводе/выводе информации.
Таблица 7. Группа команд логических операций
Название команды | Мнемокод | КОП | Т Б Ц | Операция |
Логическое И регистра и аккумулятора | ANL A,Rn | 01011rrr | 1 1 1 | (А) = (А) /\ (Rn) |
Логическое И байта из РПД и аккумулятора | ANL A,@Ri | 0101000i | 1 1 1 | (A) = (A) /\ ( (Ri) ) |
Логическое И константы и аккумулятора | ANL А,#d | 2 2 2 | (А) = (А) /\#d | |
Логическое ИЛИ регистра и аккумулятора | ORL A,Rn | 01001rrr | 1 1 1 | (A) = (A) \/ (Rn) |
Логическое ИЛИ байта из РПД и аккумулятора | ORL A,@Ri | 0100000i | 1 1 1 | (A) = (A) \/ ( (Ri) ) |
Логическое ИЛИ константы и аккумулятора | ORL A,#d | 2 2 2 | (A) = (A) \/#d | |
Исключающее ИЛИ регистра и аккумулятора | XRL A,Rn | 11011rrr | 1 1 1 | (A) = (A) |
Исключающее ИЛИ байта из РПД и аккумулятора | XRL A,@Ri | 1101100i | 1 1 1 | (A) = (A) |
Исключающее ИЛИ константы и аккумулятора | XRL A,#d | 2 2 2 | (A) = (A) | |
Сброс аккумулятора | CLR A | 1 1 1 | (A) = 0 | |
Инверсия аккумулятора | CPL A | 1 1 1 | (A) = (не A) | |
Обмен тетрад в аккумуляторе | SWAP А | 1 1 1 | (А0-3) <-> (A4-7) | |
Циклический сдвиг влево аккумулятора | RL А | 1 1 1 | (An+1) = (An), n=0?6 (А0) = (А7) | |
Сдвиг влево аккумулятора через перенос | RLC А | 1 1 1 | (Аn+1) = (An), n=0?6 (А0) = (С) ; (С) = (А7) | |
Циклический сдвиг вправо аккумумулятора | RR А | 1 1 1 | (An) = (An+l), n=0?6 (A7) = (A0) | |
Сдвиг вправо аккумулятора через перенос | RRC A | 1 1 1 | (An) = (An+l), n=0?6 (A7) = (С) ; (С) = (A0) | |
Логическое И константы и порта Рр (p = 1,2) | ANL Pp,#d | 100110pp | 2 2 2 | (Pp) = (Pp) /\#d |
Логическое И константы и порта ВUS | ANL BUS,#d | 2 2 2 | (BUS) = (BUS) /\#d | |
Логическое И аккумулятора и порта Рр (p=4-7) | ANLD Pp,A | 100111pp | 1 1 2 | (Pp) = (Pp) /\ (A0-3) |
Логическое ИЛИ константы и порта ВUS | ORL BUS,#d | 2 2 2 | (BUS) = (BUS) \/#d | |
Логическое ИЛИ аккумулятора и порта Pp (p=4-7) | ORLD Pp,A | 100011pp | 1 1 2 | (Рр) = (Рр) \/ (А0-3) |
Сброс переноса | CLR С | 1 1 1 | (С) = 0 | |
Сброс флага F0 | CLR F0 | 1 1 1 | (F0) = 0 | |
Сброс флага F1 | CLR F1 | 1 1 1 | (F1) = 0 | |
Инверсия переноса | CPL С | 1 1 1 | (C) = (неC) | |
Инверсия флага F0 | CPL F0 | 1 1 1 | (F0) = (не F0) | |
Инверсия флага F1 | CPL F1 | 1 1 1 | (F1) = (не F1) |
Задание к лабораторной работе
1. Исследовать процесс выполнения арифметических команд.
2. Исследовать процесс выполнения логических команд.
3. Написать программу сложения массива однобайтовых чисел с получением двухбайтового результата. Слагаемые должны располагаться в последовательных адресах ВПД. Результат сложения в ячейках РПД. Алгоритм программы сложения состоит в том, что после представления каждого элемента массива определяется переполнение Акк, и если это имеет место, то содержимое ячейки старшего байта результата увеличивается на 1. Таким образом, за счет суммирования единиц переноса получается старший байт суммы.
4. Написать программу нахождения разности чисел, имеющих одинаковую длину. Входные параметры: регистр 1–длина чисел (в байтах), регистр 2–адрес младшего байта вычитаемого, регистры 3–адрес младшего байта уменьшаемого. Каждое из чисел записывается в последовательных адресах памяти, начиная с младших байтов. Результат заносится в область памяти, отведенную под вычитаемое.
5. Разработайте программу сложения двух 8–ми разрядных чисел с получением результата в двоично-десятичном коде.
6. Разработайте программу "Кодовый ключ". Алгоритм программы состоит в том, что после последовательного считывания байтов данных из порта 1, с использованием маскирования битов, проверяется условие передачи управления, если условие выполняется происходит обращение к подпрограмме по передачи байта данных в порт 2, иначе переход на начало программы.
Содержание отчета
Отчет должен содержать:
1. Полный перечень команд арифметических операций.
2. Полный перечень команд логических операций.
3. Разработанные в процессе подготовки и выполнения работы программы
4. Вывод.
Контрольные вопросы.
1. Режим прерывания, принцип действия, двухуровневая система прерываний.
2. Таймер/счетчик, какие есть режимы работы счетчика.
3. Расскажите о группе команд арифметических операций.
4. Расскажите о группе команд логических операций.