
- •А.Ю.Бальзамов, о.В.Шишов программирование и отладка программ на ассемблере практикум по основам микропроцессорной техники
- •Введение
- •1. Представление информации в цифровых вычислительных машинах и микропроцессорных системах
- •1.1. Системы счисления
- •1.2. Перевод чисел из одной системы счисления в другую
- •1.3. Формы представления чисел
- •Итак, диапазон представимых чисел в нормальной форме равен
- •1.4. Кодирование символов и знаков
- •1.5. Выполнение арифметических операций над числами с фиксированной запятой
- •1.6. Выполнение арифметических операций над числами с плавающей запятой
- •2. Система команд микропроцессора кр580вм80а
- •2.1. Программная модель микропроцессора
- •2.2. Форматы команд и способы адресации
- •2.3. Условные обозначения в системе команд
- •2.4. Команды передачи данных
- •2.4.1. Команды пересылки данных регистр-регистр или регистр-ячейка памяти с косвенной адресацией
- •2.4.2. Команды загрузки непосредственных данных
- •2.4.3. Команды обращения к памяти с прямой адресацией
- •2.4.4. Команды обращения к стеку
- •2.4.5. Команды ввода-вывода
- •2.5. Команды обработки данных
- •2.5.1. Арифметические команды
- •2.5.2. Арифметические команды с данными двойной длины
- •2.5.3. Арифметические команды с непосредственными данными
- •2.5.4. Логические команды
- •2.5.5. Логические команды с непосредственными данными
- •2.5.6. Команды сдвига
- •2.5.7. Вспомогательные команды
- •2.6. Команды управления
- •2.6.1. Команды безусловной передачи управления
- •2.6.2. Команды условной передачи управления
- •2.6.3. Специальные команды управления
- •2.7. Машинные коды команд
- •3. Средства отладки программного обеспечения
- •3.1. Учебно-отладочное устройство "электроника-580"
- •3.1.1. Общие сведения
- •3.1.2. Устройство и работа уоу
- •3.1.3. Клавиатура пульта управления
- •3.1.4. Индикатор адреса и данных
- •3.1.5. Просмотр и изменение содержимого памяти и регистров
- •3.1.6. Работа с контрольными точками
- •3.1.7. Выполнение программ пользователя
- •3.2. Кросс-средства отладки программного обеспечения
- •3.2.1. Составление исходной программы
- •3.2.2. Программа ассемблирования avmac
- •3.2.3. Программа редактора связей avlink
- •3.2.4. Программа отладчика-симулятора avsim
- •4. Задания и практические рекомендации по выполнению лабораторных работ
- •4.1. Лабораторная работа №1. Простые вычисления
- •4.2. Лабораторная работа №2. Управление индикацией
- •4.3. Лабораторная работа №3. Объединение программ
- •4.4. Лабораторная работа №4. Сложные вычисления
- •4.5. Пример программы к лабораторной работе №1.
- •4.6. Пример программы к лабораторной работе №2.
- •4.7. Рекомендации по построению программы к лабораторной работе № 3
- •4.8. Пример программы к лабораторной работе №4
- •5. Задания для контрольных работ
- •5.1. Контрольная работа №1. Системы счисления и коды
- •Литература
- •Содержание
1.6. Выполнение арифметических операций над числами с плавающей запятой
При вычислениях на ЭВМ действительные числа обычно представляются в форме чисел с плавающей запятой: с мантиссой g и порядком p, т. е. как g2p. В микропроцессорных системах с побайтовой отработкой мантисса обычно занимает 24 или 16 разрядов, а порядок – 8 разрядов. Представление чисел в форме с плавающей запятой и порядком обеспечивает возможность использовать больший динамический диапазон по сравнению с числами в форме с фиксированной запятой.
Умножение чисел с плавающей запятой выполняется по следующей формуле:
2p1g12p2g2 = g1 g22p1+p2,
где g1, g2 – мантиссы сомножителей; p1, p2 – порядки сомножителей. Очевидно, что для выполнения операции умножения необходимо просто умножить мантиссы и сложить порядки.
Деление производится в соответствии с формулой
2p1g1 / (2p2g2) = g1/g2 2p1 – p2.
При сложении и вычитании порядки и мантиссы взаимосвязаны. Сложение (вычитание) в предположении, что 2p1g1 > 2p2g2 выполняется по формуле:
2p1g1 ± 2p2g2 = (g1 ± g2/2p1 – p2) 2p1.
Иногда возникает необходимость в выполнении дополнительных операций нормализации результатов арифметических операций. Например, при сложении результирующая мантисса может быть слишком большой, если мантиссы слагаемых имели один и тот знак, и их суммирование привело к переполнению; или же в результате может получиться число, близкое к нулю, если мантиссы слагаемых имели разные знаки. В этих случаях результирующую мантиссу необходимо сдвигать вправо (когда она слишком велика) и влево (когда она слишком мала) до тех пор, пока самая левая единица не попадет в старший разряд. Так как сдвиг мантиссы осуществляется умножением на степень 2, то для того, чтобы сохранить то же самое значение суммы, необходимо одновременно со сдвигом корректировать порядок суммы, прибавляя или вычитая единицу при каждом сдвиге вправо или влево соответственно.
Р
ассмотренные
формулы позволяют составить алгоритмы
машинной реализации арифметических
операций над числами, представленными
в форме с плавающей запятой.
Рис.1. Алгоритм сложения чисел в форме с плавающей запятой.
Алгоритм сложения показан на рис. 1. Вычитание производится по этому же алгоритму, но вместо сложения мантисс выполняется их вычитание. Для программной реализации алгоритмов сложения и вычитания необходимо иметь следующие подпрограммы:
относительного нормирования двух операндов (выравнивания порядков);
сложения мантисс двух операндов; нормализация мантиссы числа с коррекцией порядка;
вычитания мантисс двух операндов.
Р
ис.
2. Алгоритм умножения чисел в форме с
плавающей запятой.
Алгоритм программной реализации операции умножения чисел с плавающей запятой приведен на рис. 2. Для выполнения умножения помимо указанных выше требуются дополнительные подпрограммы умножения мантисс двух чисел и сложения порядков двух чисел.
Д
ля
реализации алгоритма программы деления
чисел с плавающей запятой (рис. 3) должна
быть введена еще одна подпрограмма
деления мантисс двух чисел.
Рис. 3. Алгоритм деления чисел в форме с плавающей запятой.