- •Раздел 2 принципы построения и функционирования эвм и вычислительных систем (вс)
- •2.1. Структура эвм
- •2.2. Системы счисления
- •2.3. Формы представления чисел
- •2.3.1. Форма представления чисел с фиксированной точкой
- •2.3.2. Форма представления чисел с плавающей точкой
- •2.3.3. Форматы двоично-десятичных чисел
- •2.3. Машинные коды
- •2.3.1. Прямой код
- •2.3.2. Обратный код
- •2.3.3. Дополнительный код
- •2.4. Перевод чисел из одной системы представления в другую
- •2.4.1. Перевод между основаниями, составляющими степень двойки
- •2.4.2. Перевод целого числа из десятичного счисления в другое
- •2.4.3. Перевод дробного числа из десятичного счисления в другое
- •2.4.4. Перевод чисел в десятичную систему счисления
- •2.5. Арифметические действия над двоичными числами
- •2.5.1. Сложение
- •2.5.2. Вычитание
- •2.5.3. Умножение
- •2.5.4. Деление
- •2.6. Понятие алгебры логики
- •2.7. Простейшие логические функции
- •2.7.1. Логическая операция конъюнкция (логическое умножение)
- •2.7.2. Логическая операция дизъюнкция (логическое сложение)
- •2.7.3. Логическая операция инверсия (отрицание)
- •2.7.4. Логическая операция сложение по модулю 2
- •2.7.5. Логическая операция эквивалентность (функция тождества)
- •2.7.6. Логическая операция импликация (логическое следование)
- •2.7.7. Функция Шеффера
- •2.7.8. Стрелка Пирса ав, или функция Вебба a b
- •2.8. Основные правила преобразования формул
- •2.9. Кодирование текстовой информации
- •2.10. Составные части компьютера
- •2.11. Логические элементы
- •2.12. Триггеры
- •2.12.1. Общие сведения о триггерах
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •2.12.4. Асинхронный и синхронный d-триггеры
- •2.12.5. T-триггер
- •2.12.6. Jk-триггер
- •2.13. Типовые узлы комбинационного типа
- •2.13.1. Дешифраторы
- •2.13.2. Одноразрядный сумматор
- •2.13.3. Полусумматор
- •2.13.4. Многоразрядные сумматоры
- •2.13.5. Двоично-десятичные сумматоры
- •2.13.6. Мультиплексоры
- •2.13.7. Демультиплексоры
- •2.14. Типовые узлы накапливающего типа
- •2.14.1. Регистры
- •2.14.2. Счетчики
- •2.14.3. Двоично-десятичные счетчики
- •2.15. Классификация архитектур системы команд
- •2.15.1. Классификация по составу и сложности команд
- •2.15.2. Классификация по месту хранения операндов
- •2.15.3. Стековая архитектура
- •2.15.4. Аккумуляторная архитектура
- •2.15.5. Регистровая архитектура
- •2.15.6. Архитектура с выделенным доступом к памяти
- •2.16. Типы команд
- •2.16.1. Команды пересылки данных
- •2.16.2. Команды арифметической и логической обработки
- •2.16.3. Операции с целыми числами
- •2.16.4. Операции с числами в форме с плавающей запятой
- •2.16.5. Логические операции
- •2.16.6. Операции сдвигов
- •2.16.7. Операции с десятичными числами
- •2.16.8. Simd-команды
- •2.16.9. Команды для работы со строками
- •2.16.10. Команды преобразования
- •2.16.11. Команды ввода/вывода
- •2.16.12. Команды управления системой
- •2.16.13. Команды управления потоком команд
- •2.17. Формат команд
- •2.17.1. Длина команды
- •2.17.2. Разрядность полей команды
- •2.17.3. Выбор адресности команд
- •2.18. Способы адресации операндов
- •2.18.1. Непосредственная адресация
- •2.18.2. Прямая адресация
- •2.18.3. Косвенная адресация
- •2.18.4. Регистровая адресация
- •2.18.5. Косвенная регистровая адресация
- •2.18.6. Адресация со смещением
- •2.18.7. Относительная адресация
- •2.18.8. Базовая регистровая адресация
- •2.18.9. Индексная адресация
- •2.18.10. Страничная адресация
- •2.18.11. Блочная адресация
- •2.18.12. Распространенность различных видов адресации
- •2.19. Способы адресации в командах управления потоком команд
- •2.20. Функциональная организация фон-неймановской вычислительной машины
- •2.20.1. Устройство управления
- •2.20.2. Арифметико-логическое устройство
- •2.20.3. Основная память
- •2.20.4. Модуль ввода/вывода
- •2.21. Цикл команды
- •2.21.1. Стандартный цикл команды
- •2.21.2. Описание стандартных циклов команды для гипотетической машины
- •2.21.3. Машинный цикл с косвенной адресацией
2.13.5. Двоично-десятичные сумматоры
При обработке больших массивов десятичных чисел значительная часть времени расходуется на перевод чисел из одной системы счисления в другую. В этом случае целесообразно выполнять обработку данных непосредственно в десятичной системе счисления. При этом для представления десятичных чисел используют различные двоично-десятичные коды. Десятичные цифры представляются двоичными тетрадами. Сложение тетрад выполняется с помощью двоично-десятичных сумматоров.
Двоично-десятичный сумматор строится на основе четырехразрядного двоичного сумматора, в котором перенос возникает, если значение суммы равно или больше 16. Но при сложении двух десятичных цифр перенос должен возникать, если их сумма равна или больше 10, поэтому для правильного сложения двоично-десятичных цифр двоичный сумматор дополняется схемой коррекции. Коррекция выполняется для каждой тетрады суммы отдельно. Правила коррекции зависят от используемого двоично-десятичного кода.
Для кода прямого замещения коррекция суммы выполняется по следующим правилам:
1. Если двоичная сумма не более 9, то коррекция не требуется.
2. Если двоичная сумма принимает значение от 10 до 15, необходимо искусственно вызвать перенос в следующую тетраду. Для этого коррекция выполняется путем прибавления к тетраде десятичного числа 6 или двоичного 0110.
3. Если двоичная сумма принимает значение от 16 до 19, то возникает перенос из тетрады, который имеет вес, равный 16, и уменьшает значение суммы на 6. Коррекция выполняется так же, как и во втором случае, прибавлением двоичного числа 0110 к данной тетраде.
Таким образом, при сложении двоично-десятичных чисел в прямого замещения коррекция выполняется в тех тетрадах, которых возникла запрещенная комбинация или из которых возник перенос.
При сложении чисел со знаком используются обратный или дополнительный код. Для получения обратного кода к каждой тетраде прибавляется двоичное число 0110, а затем все цифровые тетрады инвертируются. Дополнительный код получают из обратного путем прибавления единицы к младшей тетраде (пример 2.5).
Пример 2.5. Определить сумму чисел в двоично-десятичном коде, если А10 = -183; В10 = 924.
А2-10 = - 0001 1000 0011; В2-10 = + 1001 0010 0100
(А2-10) ПК= |
|
1 |
|
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
+ |
0 |
|
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
(А2-10) ОК= |
|
1 |
|
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
инверсия |
|
1 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
прибавление 1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
(А2-10) ДК= |
|
1 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
(В2-10) ПК= |
|
0 |
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
(В2-10) ДК= |
|
0 |
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
(А2-10) ДК= |
|
1 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
(В2-10) ДК= |
+ |
0 |
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
(А2-10 + В2-10) ДК=
|
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
коррекция* |
+ |
|
|
0 |
1 |
1 |
0 |
|
|
|
|
0 |
1 |
1 |
0 |
(А2-10 + В2-10) ДК=
|
|
0 |
|
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
* При суммировании возник перенос из первой тетрады и образовалась запрещенная комбинация в последней тетраде.
(А + В)2-10 = 0111 0100 0001;
(А + В)10 = 741.
Рис. 2.30. Одноразрядный двоично-десятичный сумматор:
а – схема; б – условное графическое обозначение