
- •1. Обобщенная структурная схема компьютера
- •2. Понятие архитектуры.
- •3. Оценка производительности компьютеров.
- •4. Классификация и краткий обзор современных компьютеров
- •5. Элементная база компьютеров: шифратор, дешифратор, мультиплексор и демультиплексор
- •6. Элементная база компьютеров: триггеры и их классификация
- •7. Эбк: регистры и их классификация
- •8. Эбк: счетчики и их классификация
- •10. Характеристики запоминающих устройств и их условные обозначения
- •11. Размещение зу на системной плате (нету)
- •12. Принцип сегментирования основной памяти компьютера и формирование физического адреса
- •13. Принципы организации современных озу
- •14. Способы адресации информации в компьютере
- •1 5. Архитектура системной платы современного пк
- •16. Структура базового процессора семейства х86 и назначение его выводов
- •17. Регистровая архитектура базового процессора семейства х86
- •18. Регистр флагов базового процессора семейства х86 и функциональное назначение его битов
- •19. Принцип демультиплексирования шины адресов и данных в мп i8086/88
- •20. Системы счисления, используемые в компьютерах и алгоритмы приеобразования из одной сс в другую
- •21. Прямые, обратные, дополнительные коды чисел и их использование в компьютерах
- •22. Представление целых чисел без знака и со знаком
- •23. Представление вещественных чисел
- •24. Представление алфавитно-цифровой информации
- •25. Представление звуковой информации
- •26. Представление визуальной информации
- •27. Форматы кодов информации (чисел и символов), используемые в пк семейства х86
- •28. Алгоритмы сложения и вычитания в комптьютерах целых двоичных чисел без знака и со знаком.
- •29. Алгоритмы слож-я и выч-я двоично-десятичных чисел
- •30. Алгоритмы сл-я и в-я вещественных чисел
- •31. Принципы осуществления в компьютерах операций умножения и деления
- •32. Назначение, определения и характеристики систем прерывания компьютеров
- •33. Классификация запросов прерывания в компьютерах
- •34. Режимы работы систем прерывания современных комптютеров и принципы их реализации
- •35. Особенности и принципы организации обмена информацей с периферийными устройствами
- •36. Принцип организации программно-управляемого ввода/вывода с активным ожиданием
- •37. Принцип организации в компьютерах ввода/вывода по прерыванию
- •38. Принцип организации ввода/вывода через каналы прямого доступа к памяти
- •39. Типовые шины соединения компонентов, используемые в современных компьютерах
- •40. Типовые устройства ввода
- •1. Клавиатура
- •2. Мышь.
- •41. Структура и назначение блоков типового видеоадаптера
- •42. Структура и назначение блоков типовой аудиосистемы
29. Алгоритмы слож-я и выч-я двоично-десятичных чисел
Особенности операций сложения и вычитания в компьютерах двоично-десятичных чисел без знака.
Операции с двоично-десятичными числами осуществляются на тех же сумматорах, на которых осуществляются операции с двоичными числами и по тем же основным правилам двоичной арифметики. Однако для того, чтобы результаты сложения и вычитания были также представлены в двоично-десятичном коде, часто требуется вводить специальную коррекцию в коды, полученные после сложения и вычитания.
При суммировании коррекция производится в случае, если значение какой-либо тетрады (четырех двоичных разрядов, кодирующих десятичную цифру) полученного результата будет больше 1001 или, если есть перенос из данной тетрады в более старшую. Наличие такого переноса процессором определяется по состоянию флагов AF и CF.
Дело в том, что, используя 4 двоичных разряда, для представления одной десятичной цифры мы, фактически, реализуем шестнадцатеричную систему счисления. Однако, вычислительные операции должны проводиться с числами в двоично-десятичной системе счисления с весами разрядов 8421, в которой 6 кодов тетрады (1010, 1011, 1100, 1101, 1110 и 1111) являются запрещенными, их быть не должно. А поскольку для осуществления операций сложения и вычитания используются обычные двоичные сумматоры, перенос между разрядами происходит как при работе с шестнадцатеричными числами, т.е. после кода 1111 (1510), а не 1001 (1010), как это должно быть при двоично-десятичной системе счисления. Поэтому, для формирования результата в требуемой двоично-десятичной системе, и должна производиться коррекция результата, путем добавления числа 0110 (610) в те тетрады результата, значение которых больше 1001 или, если из этой тетрады был перенос в более старшую тетраду. (6 = 16 – 10→ разница между основаниями шестнадцатеричной и десятичной систем счисления).
Таким образом, операция суммирования двух двоично-десятичных кодов без знака осуществляется по следующему алгоритму.
- Осуществляется операция суммирования двух исходных двоично-десятичных кодов, рассматривая их как обычные двоичные коды без знака.
- Если результат суммирования в какой-либо тетраде двоичного результата будет > 9, или произойдет перенос из этой тетрады в более старшую (CF=1 или AF=1), то в данной тетраде производится коррекция суммирования.
- Коррекция суммирования заключается в том, что в этих тетрадах к результату суммирования прибавляется 0110.
Примеры:
01000110 + 00111000=01111110 (46 + 38 = 84).
Состояние флагов: ZF=0; AF=0; PF=1; CF=0.
Поскольку флаг CF=0; переноса из старшего разряда а, следовательно и переполнения разрядной сетки, нет, и результат достоверен. Однако значение кода младшей тетрады результата больше 1001.
Это означает, что необходимо ввести коррекцию в младшую тетраду, т.е. прибавить к ней 0110
01111110 + 0110 = 10000100.
01001001 : (49 + 58 = 107).
+ :
01011000 : Есть перенос из младшей тетрады в старшую и, кроме того, старшая
-------------- : тетрада результата содержит код, больший 1001. Следовательно, и
10100001 : в младшую и в старшую тетраду должна быть внесена коррекция.
+ : После коррекции происходит перенос из старшего разряда резуль-
01100110 : тата, что характеризует переполнение разрядной сетки результата.
--------------- : Состояние флагов: ZF=0; AF=1; PF=0; CF=1.
1: 00000111 :
01010010 : (52 + 34 = 86).
+ : Переноса из младшей тетрады в старшую тетраду нет, и обе тетрады
00110100 : не превышают значения 1001. Следовательно, коррекция результата
------------- : не требуется. Состояние флагов: ZF=0; AF=0; PF=0; CF=0.
10000110 :
Операция вычитания целых двоично-десятичных чисел осуществляется похожим образом, но имеет ту особенность, что при вычитании переполнение разрядной сетки не может произойти принципиально, однако при вычитании уменьшаемое может оказаться меньше вычитаемого. При этом возникает заем из старшего разряда, который фиксируется, аналогично переносу, установкой флага CF в единицу. Это характеризует отрицательный результат и, следовательно, он будет представлен в дополнительном коде, который необходимо преобразовать в прямой код и только после этого корректировать результат. Коррекция, как и в случае сложения, осуществляется либо при значении декады больше 1001, либо при установке флагов CF или AF в единицу и заключается в том, что из соответствующей тетрады результата, вычитается код 0110.
Таким образом, алгоритм вычитания двоично-десятичных целых чисел сводится к следующему.
- Осуществляется операция вычитания двух двоично-десятичных чисел, рассматриваемых как обычные двоичные числа.
- Если результат положительный (уменьшаемое больше вычитаемого), флаг CF=0, то результат анализируется на состояние флага AF и на полученные значения тетрад. Если значение тетрады больше 1001, или флаг, AF=1, то из соответствующей тетрады результата вычитается константа 0110.
- Если результат отрицательный (CF=1), то полученный двоичный код результата является дополнительным, он преобразуется в прямой код, который затем корректируется по тетрадно, т.е., при значении данной тетрады больше 1001, из нее вычитается константа 0110.
Примеры:
10000011 : (83 – 61 = 22).
- : ZF=0; AF=0; PF=1; CF=0.
01100001 : Переносов из тетрад нет, и обе они меньше 1001.
------------- : Коррекция не требуется.
00100010 :
10000001 : (81 – 69 = 12).
- : Состояние флагов: ZF=0; AF=1; PF=1; CF=0.
01101001 : Поскольку есть заем из старшей тетрады в младшую (AF=1),
------------- : в младшую тетраду результата вводится коррекция.
00011000 - 0110 = 00010010
00011000 : (18 – 87 = − 69).
- : Состояние флагов: ZF= 0; AF=0; PF=0; CF=1.
10000111 : Поскольку есть заем в старший разряд (CF=1), то
-------------- : результат отрицательный и получен в дополнительном коде.
1: 10010001 : Результат в дополнительном коде.
1: 01101111 : Результат в прямом коде. Младшая тетрада больше 1001,
- : и, следовательно, производится коррекция младшей тетрады.
0110 :
--------------- :
1: 01101001 : Прямой двоично-десятичный код результата.