Пример сложения двух чисел приведен в таблице 3.1. Так как результат сложения не превышает число 6553510, эта арифметическая операция может быть выполнена в двойном формате.
При сложении чисел двойного формата сначала складываются их младшие байты. Это делается с помощью обычной команды «сложение», при выполнении которой не используется значение флага переноса. При этом образуется перенос из старшего разряда младшего байта суммы.
Таблица 3.1
Двоичное представление |
Десятичное представление |
||
старший байт |
младший байт |
||
Первое слагаемое |
1100 0111 |
1011 0000 |
51 120 |
Второе слагаемое |
0011 0000 |
1010 1100 |
12 460 |
Сумма |
1111 1100 |
0101 1100 |
63 580 |
Бит переноса |
1 |
Затем посредством команды «сложение с переносом» производится сложение старших байтов чисел. Поскольку перенос имел место, то он участвует в выполнении команды «сложение с переносом»; если бы перенос из младшего байта не был сформирован, на вход переноса был бы подан 0.
К данной группе команд относятся:
Сложение с учетом переноса с регистром ADC r
Сложение с учетом переноса с памятью косвенное ADC М
Сложение с учетом переноса с непосредственными
данными AСI, данные
3.2.3. Команда десятичной коррекции
Наличие команды «десятичная коррекция» позволяет микропроцессору выполнять некоторые виды обработки двоично-десятичных чисел. Обработка двоично-десятичных чисел часто необходима, когда микропроцессоры используются в простых системах невычислительного характера, для которых характерны ввод и вывод информации в двоично-десятичном коде (binary-decimal code).
Команда «десятичная коррекция» позволяет освободить процессор от дополнительной работы, связанной с преобразованием двоично-десятичных данных в двоичную форму и, таким образом, упростить обработку двоично-десятичных данных в микропроцессорной системе. Ее действие заключается в преобразовании результата двоичного сложения двоично-десятичных чисел в двоично-десятичный код.
Десятичным цифрам от 010 до 910 соответствуют двоичные коды от 00002 до 10012. Все 4-разрядные двоичные числа, превышающие 10012, недопустимы с точки зрения двоично-десятичной системы счисления. Значит, если сумма двоично-десятичных цифр окажется большей чем 10012, то такое число будет недопустимо для использования как двоично-десятичное. Команда «десятичная коррекция» служит для исправления результатов двоично-десятичной обработки, представляющих собой числа, большие чем 10012.
Десятичная коррекция аккумулятора DAA
3.3. Задания к лабораторной работе
Задание №1.
Произвести сложение двух чисел 5112010 и 1246010.
Для этого необходимо:
а) указанные числа перевести из десятичного формата в шестнадцатеричный;
б) составить программу вычисления в соответствии со следующим алгоритмом:
1. Загрузить младший байт (МБ) первого слагаемого в аккумулятор.
2. Сложить младший байт второго слагаемого с аккумулятором.
3. Результат (младший байт суммы) записать в память.
4. Загрузить старший байт (СБ) первого слагаемого в аккумулятор.
5. Сложить старший байт второго слагаемого с аккумулятором с учетом бита переноса.
6. Результат (старший байт суммы) записать в память.
7. Останов.
Текст программы и исходные данные желательно расположить в адресном пространстве ОЗУ в соответствии с таблицей 3.1.
Таблица 3.1
Адрес |
Содержимое |
8000 … 81FF |
Текст программы |
8200 |
МБ 1-го слагаемого |
8201 |
СБ 1-го слагаемого |
8202 |
МБ 2-го слагаемого |
8203 |
СБ 2-го слагаемого |
8204 |
МБ суммы |
8205 |
СБ суммы |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.