Московский государственный технический университет
имени Н. Э. Баумана
Калужский филиал
А. В. Максимов
ПРОЕКТИРОВАНИЕ
АССЕМБЛЕРНЫХ ПРОГРАММ
ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ
Допущено Учебно-методическим объединением вузов
по университетскому политехническому образованию
в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению 230100 «Информатика и вычислительная техника»
УДК 681.14 ББК 32.973-01 М17 Рецензенты:
д-р физ.-мат. наук, профессор, зав. кафедрой «Компьютерные системы, сети и технологии» Обнинского института ядерной энергетики НИЯУ МИФИ С. О. Старков;
д-р техн. наук, профессор, зав. кафедрой «Компьютерные технологии и системы» Брянского государственного технического университета В. И. Аверченков Максимов А. В.
М17 Проектирование ассемблерных программ вычислительных алгоритмов : учебное пособие для вузов. — М. : Издательство МГТУ им. Н. Э. Баумана, 2012. — 192 с.
ISBN 978-5-7038-3601- Изложена современная теория масштабирования числовых данных и арифметических операций в ЦВМ с фиксированной запятой. Приведена инженерная методика проектирования ассемблерных программ для вычислительных алгоритмов. Работоспособность методики подтверждают примеры ассемблерных программ с подробным анализом результатов.
Содержание учебного пособия соответствует курсу лекций, которые автор читает в Калужском филиале МГТУ им. Н. Э. Баумана для студентов направления подготовки «Информатика и вычислительная техника».
Для студентов, инженеров и аспирантов кибернетических специальностей.
УДК 681. ББК 32.973- © Максимов А. В., © Издательство МГТУ ISBN 978-5-7038-3601-9 им. Н. Э. Баумана,
ПРЕДИСЛОВИЕ
Современные системы управления сложными техническими объектами немыслимы без встраиваемых в эти системы вычислительных устройств. Особенностями таких вычислительных устройств являются работа в реальном масштабе времени и решение поставленных задач с заданной точностью. При этом их вычислительная нагрузка в основном определяется необходимостью выполнять большой объем арифметических операций.Реализация сложных вычислительных алгоритмов в системах управления многих реальных технических объектов с помощью микропроцессоров, имеющих команды плавающей арифметики, не всегда экономически и технически рациональна. Снять многие технические проблемы при разработке специализированного программного обеспечения разработчику помогут знание теории и практика программирования вычислительных алгоритмов на ассемблере для ЦВМ с фиксированной запятой.
Цель настоящего учебного пособия — познакомить будущего инженера с теорией реализации вычислительных алгоритмов на ЦВМ с фиксированной запятой, дать ему возможность на практике убедиться в эффективности применения инженерной методики проектирования ассемблерных программ.
Структурно пособие состоит из трех разделов. В первом разделе обобщен опыт российской школы представления данных в ЦВМ с фиксированной запятой, даны определения масштабу и процессу масштабирования. Рассмотрены два метода масштабирования и на конкретных примерах показаны их достоинства и недостатки. Рассмотрены особые случаи масштабирования данных в ЦВМ.
Во втором разделе с единой позиции рассмотрены общие и особые приемы масштабирования арифметических операций. Подробно рассмотрены способы повышения точности выполнения операций умножения, деления и деления на постоянную. Практическая реализация выполнения всех арифметических операция рассмотрена на примере системы команд микропроцессоров x86 фирмы Intel.
В третьем разделе представлена инженерная методика проектирования ассемблерных программ, реализующих вычислительные алгоритмы. Работоспособность этой методики подтверждают примеры реализации ассемблерных программ вычисления полинома, функции y = sin ( x ), представленной разложением в ряд Маклорена, решения дифференциального уравнения. Качество работы спроектированных программ подробно анализируется.
Учебное пособие дополнено пятью приложениями, выполняющими справочную роль.
Автор выражает глубокую признательность рецензентам пособия — профессору Сергею Олеговичу Старкову и профессору Владимиру Ивановичу Аверченкову за полезные советы по улучшению рукописи.
А. В. Максимов
ЛИТЕРАТУРА
1. Савельев А. Я. Основы информатики : учебник для вузов. — М. : Издательство МГТУ им. Н. Э. Баумана, 2001. — 328 с., ил. (Сер. Информатика в техническом университете.) 2. ANSI/IEEE Std 754–1985, IEEE Standard for Binary FloatingPoint Arithmetic. http://standards.ieee.org.3. Соренков Э. И., Телига А. И., Шаталов А. С. Точность вычислительных устройств и алгоритмов. — М. : Машиностроение, 1976. — 200 с.
4. Специализированные ЦВМ : учебник для вузов / В. Б. Смолов, В. В. Барашенков, В. Д. Байков и др.; Под ред. В. Б. Смолова.
— М. : Высшая школа, 1981. — 279 с.
5. Воробьев Г. Н., Сюзев В. В. Задачи и упражнения по курсу «Основы теории специализированных вычислительных устройств» : учебное пособие. — М. : МВТУ, 1985. — 44 с.
6. Проектирование специализированных информационно-вычислительных систем : учебное пособие по спец. ЭВМ и АСУ / Ю. М. Смирнов, Г. Н. Воробьев, Е. С. Потапов, В. В. Сюзев;
Под ред. Ю. М. Смирнова. — М. : Высшая школа, 1984. — 7. ADSP-BF53x/BF56x Blackfin Processor Programming Reference.
— Norwood : Analog Devices, 2006. — 1040 p.
8. Соловьев Г. Н. Арифметические устройства ЭВМ. — М. :
Энергия, 1978. — 176 с.
9. Власова Е. А. Ряды : учебник для вузов / Под ред. В. С. Зарубина, А. П. Крищенко. — 3-е изд., исправл. — М. : Издательство МГТУ им. Н. Э. Баумана, 2006. — 616 с. (Сер. Математика в техническом университете; Вып. IX.) 10. Комарцова Л. Г., Максимов А. В. Нейрокомпьютеры : учебное пособие для вузов. — 2-е изд., перераб. и доп. — М. : Издательство МГТУ им. Н. Э. Баумана, 2004. — 400 с., ил. (Сер. Информатика в техническом университете.)
СОДЕР ЖАНИЕ
ПРЕДИСЛОВИЕ1.1. ФОРМЫ ЗАПИСИ ЧИСЕЛ
1.2. ОПРЕДЕЛЕНИЕ МАСШТАБА
1.3.1. Метод фиксированного формата машинной переменной
1.3.2. Метод фиксированного масштаба
1.4. ПРИМЕРЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ В ЦВМ
1.5.1. Представление отрицательных чисел
1.5.2. Наибольшее значение переменной равно целой степени двойки
1.5.3. Погрешность оцифровки
1.5.4. Представление дробей
1.7. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
2. МАСШТАБИРОВАНИЕ ПРОСТЕЙШИХ
АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
2.1. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ СЛОЖЕНИЯ
И ВЫЧИТАНИЯ2.1.2. Реализация операции сложения/вычитания
2.2. ОСОБЫЕ СЛУЧАИ ПРОГРАММИРОВАНИЯ ОПЕРАЦИЙ СЛОЖЕНИЯ
И ВЫЧИТАНИЯ2.2.1. Программирование операции сложения переменной с константой
2.2.2. Масштабирование операции сложения переменных с одинаковыми масштабами
2.2.3. Программирование операции сложения переменных 2.3. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ УМНОЖЕНИЯ
2.3.1. Вывод основных масштабных соотношений
2.3.2. Учет особенностей работы конкретной ЦВМ.................. 2.3.3. Реализация операции умножения в микропроцессорах x86 фирмы Intel
2.4. ПОВЫШЕНИЕ ТОЧНОСТИ ОПЕРАЦИИ УМНОЖЕНИЯ
2.5. МАСШТАБИРОВАНИЕ ОСОБЫХ СЛУЧАЕВ ОПЕРАЦИИ
УМНОЖЕНИЯ2.5.1. Масштабирование умножения переменной на постоянную общего вида
2.5.2. Масштабирование умножения переменной на константу в виде целой степени двойки
2.5.3. Замена операции умножения операциями сдвига и сложения
2.6. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ ДЕЛЕНИЯ
2.6.1. Вывод основных масштабных соотношений
2.6.2. Реализация операции деления в микропроцессорах x86 фирмы Intel
2.7. ОСОБЫЕ СЛУЧАИ МАСШТАБИРОВАНИЯ ОПЕРАЦИИ
ДЕЛЕНИЯ2.7.1. Масштабирование операции деления при известном минимальном делителе
2.7.2. Масштабирование операции деления на постоянную
2.8. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
3. МАСШТАБИРОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ
ПРОЦЕССОВ
3.1. МЕТОДИКА ПРОЕКТИРОВАНИЯ АССЕМБЛЕРНОЙ ПРОГРАММЫ
ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА3.2. ВЫЧИСЛЕНИЕ ПОЛИНОМА
3.3. ВЛИЯНИЕ ЗНАЧЕНИЯ ШАГА АРГУМЕНТА НА ТОЧНОСТЬ
ВЫЧИСЛЕНИЯ ПОЛИНОМА3.4. ВЫЧИСЛЕНИЕ ФУНКЦИИ y = sin ( x ), ПРЕДСТАВЛЕННОЙ РАЗЛОЖЕНИЕМ В РЯД МАКЛОРЕНА
3.5. РЕШЕНИЕ ЛИНЕЙНОГО ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ
ВТОРОГО ПОРЯДКАЗАКЛЮЧЕНИЕ
ПРИЛОЖЕНИЕ А
ПРИЛОЖЕНИЕ Б
ПРИЛОЖЕНИЕ В
ПРИЛОЖЕНИЕ Г
ПРИЛОЖЕНИЕ Д
ЛИТЕРАТУРА
Александр Викторович Максимов
ПРОЕКТИРОВАНИЕ
АССЕМБЛЕРНЫХ ПРОГРАММ
ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ
Редактор К. Ю. Савинченко Корректор Т. В. Тимофеева Технический редактор А. Л. Репкин Формат 60 84 16. Печать офсетная. Бумага офсетная. Гарнитура «Таймс». Изготовлено в Редакционно-издательском отделе