К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 104
Текст из файла (страница 104)
Представьте десятичные числа 56, -37, 122 и -123 в виде 6-значных чисел со знаком в троичном формате дополнения до трех. Выполните сложение и вычитание для всех возможных пар этих чисел. Для каждой операции укажите, произошло ли арифметическое переполнение. (Определение троичной системы дано в упражнении 6.3. Для преобразования чисел из десятичной системы в троичную используйте процедуру, аналогичную описанной в приложении Д.) Полусумматор — это комбинационная логическая схема с двумя входами, х и у, и двумя выходами, с и з, представляющими сумму и перенос, полученные в результате двоичного сложения х и у.
а) Разработайте полусумматор в виде двухуровневой схемы И-ИЛИ. б) Покажите, как реализовать полный сумматор, показанный на рис. 6.2, а, на основе двух полусумматоров и внешних логических вентилей. в) Сравните задержку на самом длинном пути через схему, которую вы разработали в упражнении 6.5, б, с задержкой в схеме сумматора, приведенной на рис. 6.2, а. Напишите программу для процессора 68000 или 1А-32, преобразующую 16-разрядные положительные двоичные числа в 5-значные десятичные числа. Каждая цифра должна быть представлена в двоично-десятичном ко де (ВС?7).
ВС1)-коды цифр занимают 4 младших разряда последовательных байтов в основной памяти компьютера, Для преобразования используйте технологию последовательного деления на 10. Этот метод аналогичен последовательному делению на 2 для преобразования из десятичного формата в двоичный (см. приложение Д). Формат и действие команды 1)1у16е описаны в приложениях В (процессор 68000) и Г (процессор 1А-32).
Предположим, что четыре цифры в формате ВСЮ, представляющие десятичное целое число из диапазона от 0 до 9999, хранятся в младшей половине Упражнения 445 32-разрядного слова памяти по адресу РЕС1МА1.. Напишите подпрограмму для процессора АКМ, 68000 или 1А-32, преобразующую десятичные целые числа, хранящиеся по адресу РЕС1МА1., в двоичное представление и записывающую их в память по адресу В1ХАКг'. Для сложения цифр ВСР нужен сумматор по модулю 10.
Сложение двух цифр ВСР по модулю 10, А - АзАзА,Ае и В - ВзВзВ,Вы можно выполнить так. Сначала прибавляем А к В (двоичное сложение). Затем, если результатом окажется неверный код, который больше или равен 10~р, прибавляем бш. (Переполнение при сложении игнорируем.) а) В каком случае выходной перенос равен 1? б) Докажите, что алгоритм позволяет получить правильные результаты в следующих случаях; 1) А - 0101 и В = 0110 2) А - 0011 и В - 0100 6.8. в) Разработайте сумматор для цифр ВСР на основе 4-разрядного двоичного сумматора и внешних логических вентилей. На его входы подаются сигналы АзАтА~Ае ВзВтВ~Ва и входной перенос.
На вьгходах должны быть цифра суммы 5зУфЩ и выходной перенос. Каскад таких блоков может образовать ВСР-сумматор с последовательным переносом. 6.9. С помощью таблицы истинности докажите, что такое логическое выраже- ние, как с„9 с„~ можно использовать в качестве индикатора переполнения при сложении целых чисел в системе дополнения до двух. 16-разрядных сумматоров с параллельным переносом и дополнительной логики, генерирующей сиь сзь саз и сы на основе значений см С,л и Рп (см. рис. 6.5). Какова связь между дополнительной логикой и логикой внутри каждой схемы с параллельным переносом? б) Докажите, что в 64-разрядном сумматоре для формирования суммы хзз требуется 12 вентильных задержек, а для формирования суммы сев нужно 7 вентильных задержек, как утверждалось в разделе 6.2.1.
в) Сравните количество вентилъных задержек для зез и сзз в 64-разрядном сумматоре из упражнения 6.10, а с количеством вентильных задержек для тех же переменных в 32-разрядном сумматоре в виде каскада из двух 16-разрядных сумматоров, который был описан в разделе 6.2.1. 6.11. а) Сколько логических вентилей требуется для создания 4-разрядного сумматора с параллельным переносом, показанного на рис. 6А? б) Используя некоторые из результатов вычислений, выполненных в упражнении 6.11, а, определите количество логических вентилей, необходимых для создания 16-разрядного сумматора с параллельным переносом, показанного на рис.
6.5. 6.10. а) Разработайте 64-разрядный сумматор, который состоит из четырех 446 Глава 6. Арифметика 6.13. Выполните вручную операции А х В и А + В над 5-разрядными числами без знака А -10101 и В - 00101. 6.14. Продемонстрируйте, как операции умножения и деления из упражнения 6.13 выполняются схемами, показанными на рис. 6.7, а и 6.21. Для этого со- ставьте такие схемы, как на рис. 6.7, б и 6.23. 6.15. Напишите программу для процессора АВ.М, 68000 или 1А-32, которая вы полняла бы умножение двух 32-разрядных чисел без знака по технологии, показанной на рис. 6.7.
Предполагается, что множитель и множимое находятся в регистрах Вз и Вз. Произведение помещается в регистры В~ (старшие разряды) и Вз (младшие разряды). (Подсказка: для сдвига в двух регистрах используйте операции сдвига и циклического сдвига.) 6.16. Напишите программу для процессора АКМ, 68000 или 1А-32, осущестз ляющую целочисленное деление на основе алгоритма деления без восста- новления. Предполагается, что оба операнда положительны, то есть край- ний слева разряд каждого из них равен нулю. 6.17.
Перемножьте числа со знаком в формате дополнения до двух с использованием алгоритма Бута. Предполагается, что А — множимое, а  — множитель. 1) А - 010111 и В 110110 2) А — 110011 и  — 101100 3) А = 110101 и В - 011011 4) А - 001111 и В - 001111 6.18. Повторите упражнение 6.17, используя алгоритм перекодировки пар рзз рядов множителей. 6.19.
Покажите, каким образом следует модифицировать схему, представленную на рис. 6.7, а, для умножения и-разрядных чисел со знаком в формате дополнения до двух, если используется алгоритм Буга. Явно определите входы и выходы управляющего секвенсора. Укажите, какие изменения связаны с сумматором и регистром А. Если произведение двух и-разрядных чисел со знаком в формате дополнения до двух можно представить с помощью и разрядов, то при умножении этих чисел допускается непосредственное использование алгоритма ручного умножения (рис.
6.6, а). При этом знаковый разряд обрабатывается так же, как остальные разряды. Правильно ли это по отношению к следующим парам 4-разрядных чисел со знаком: 1) Множимое - 1110 и Множитель - 1101 2) Множимое" 0010 и Множитель - 1110 6.20. Почему этот алгоритм работает корректно? 6.12. Докажите, что в матрице и х п, имеющей тот же тип, что и у приведенной на рис. 6.6, б, задержка в худшем случае равна 6(п — 1) — 1 вентильным задержкам, как утверждалось в разделе 6.3. Упражнения 447 6.21. Целочисленное арифметическое устройство, которое может выполнять сложение и умножение 16-разрядных чисел без знака, должно использоваться для умножения двух 32-разрядных чисел без знака. Все операнды, промежуточные и конечные результаты хранятся в 16-разрядных регистрах от Аз до А~з.
Умножитель, реализованный аппаратно, перемножает содержимое регистров А; (множимое) и А (множитель) и помещает 32-разрядное произведение двойной длины в регистры А7 (младшие разряды) и А~ь Приу'-1 — 1 произведение замещает оба операнда. Аппаратно реализованный сумматор складывает содержимое регистров А; и А и помещает результат в А; Входной перенос операции сложения равен О, а входной перенос операции сложения с переносом является значением флага переноса С. Выходной перенос из сумматора всегда хранится в С.
Опишите шаги процедуры умножения двух 32-разрядных операндов, хранящихся в парах регистров Аь Аз и Аз, Аз (первый регистр каждой пары содержит старшие разряды, а второй — младшие). Запишите 64-разрядное произведение в регистры Апь Аы, Агз и Ась В любом из регистров от А~~ до Аа при необходимости можно хранить промежуточные значения, а на каждом шаге процедуры может выполняться умножение, сложение или пересылка значений из регистра в регистр. 6.22. а) Вычислите количество вентильных задержек при формировании раз- ряда произведения рт в каждой из матриц, показанных на рис. 6.16. Предполагается, что все выходные значения полного сумматора выдаются через две вентильные задержки после подачи входных значений. Учтите задержку в вентиле И во время формирования произведения т;д в начале процесса умножения.
б) В разделе 6.4 утверждалось, что задержка в схеме на рис. 6.16, а, расширенной для умножения и х л разрядов, равна Б(п — 1) — 1. Выведите аналогичное выражение для расширения схемы, предназначенной для умножения л х и разрядов (рис. 6.16, 6).
6,23. Как получить формулу, по которой вычисляется количество шагов сложения с сохранением переноса, необходимое для сведения я слагаемых к двум векторам. (Эта формула была приведена без доказательства в разделе 6.5.2.) 6.24. а) Сколько уровней СЗА необходимо для сокращения 16 слагаемых до двух, если использовать схему, подобную приведенной на рис. 6.19? б) Нарисуйте схему сокращения 32 слагаемых до двух, подтверждающую, что для этого потребуется 8 уровней СБА, как это было сказано в разделе 6.5.2. в) Сравните точные ответы к упражнениям 6.24, а и 6.24, б с приблизительными результатами, полученными вследствие вычислений по формуле 1,7 1ойзй — 1,7.
6.25. Работая над разделом 6.7, для представления чисел с плавающей запятой мы использовали реальный 32-разрядный формат стандарта 1ЕЕЕ. В данном упражнении мы будем применять укороченный формат (см. рис. У6.2.) 448 Глава 6. Арифметика Масштабный множитель имеет подразумеваемое основание 2 и 5-разрядный показатель степени в формате с избытком 15, с двумя граничными значениями, 0 и 31, необходимыми для обозначения точного 0 и бесконечности.
Предполагается, что 6-разрядная мантисса нормализована так же, как в формате? ЕЕЕ, с подразумеваемой единицей слева от двоичной запятой. 12 разрядов 6-разрядная дробная мантисса Рис. Уи 2. Формат числа с плавающей запятой, используемый в упражнении 6.26 а) Представьте в этом формате числа: + 1,7, -0,012, +19 и 1/8. б) Каковы наименьшее и наибольшее числа, которые можно представить в данном формате? в) Сравните диапазон, вычисленный в упражнении 6.25, а, с диапазонами для 12-разрядного целого числа со знаком и 12-разрядной дроби со знаком7 г) Выполните над следующими операндами операции сложения, вычита- ния, умножения и деления: 6.26.