Проектирование ассемблерных программ вычислительных алгоритмов
Покупка
Год издания: 2012
Кол-во страниц: 192
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-3601-9
Артикул: 806850.02.99
К покупке доступен более свежий выпуск
Перейти
Изложена современная теория масштабирования числовых данных и арифметических операций в ЦВМ с фиксированной запятой. Приведена инженерная методика проектирования ассемблерных программ для вычислительных алгоритмов. Работоспособность методики подтверждают примеры ассемблерных программ с подробным анализом результатов.
Содержание учебного пособия соответствует курсу лекций, которые автор читает в Калужском филиале МГТУ им. Н. Э. Баумана для студентов направления подготовки «Информатика и вычислительная техника».
Для студентов, инженеров и аспирантов кибернетических специальностей.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет имени Н. Э. Баумана Калужский филиал А. В. Максимов ПРОЕКТИРОВАНИЕ АССЕМБЛЕРНЫХ ПРОГРАММ ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению 230100 «Информатика и вычислительная техника»
УДК 681.14 ББК 32.973-01 М17 Рецензенты: д-р физ.-мат. наук, профессор, зав. кафедрой «Компьютерные системы, сети и технологии» Обнинского института ядерной энергетики НИЯУ МИФИ С. О. Старков; д-р техн. наук, профессор, зав. кафедрой «Компьютерные технологии и системы» Брянского государственного технического университета В. И. Аверченков Максимов А. В. М17 Проектирование ассемблерных программ вычислительных алгоритмов : учебное пособие для вузов. — М. : Издательство МГТУ им. Н. Э. Баумана, 2012. — 192 с. ISBN 978-5-7038-3601-9 Изложена современная теория масштабирования числовых данных и арифметических операций в ЦВМ с фиксированной запятой. Приведена инженерная методика проектирования ассемблерных программ для вычислительных алгоритмов. Работоспособность методики подтверждают примеры ассемблерных программ с подробным анализом результатов. Содержание учебного пособия соответствует курсу лекций, которые автор читает в Калужском филиале МГТУ им. Н. Э. Баумана для студентов направления подготовки «Информатика и вычислительная техника». Для студентов, инженеров и аспирантов кибернетических специальностей. УДК 681.14 ББК 32.973-01 © Максимов А. В., 2012 © Издательство МГТУ ISBN 978-5-7038-3601-9 им. Н. Э. Баумана, 2012
ПРЕДИСЛОВИЕ Современные системы управления сложными техническими объектами немыслимы без встраиваемых в эти системы вычислительных устройств. Особенностями таких вычислительных устройств являются работа в реальном масштабе времени и решение поставленных задач с заданной точностью. При этом их вычислительная нагрузка в основном определяется необходимостью выполнять большой объем арифметических операций. Реализация сложных вычислительных алгоритмов в системах управления многих реальных технических объектов с помощью микропроцессоров, имеющих команды плавающей арифметики, не всегда экономически и технически рациональна. Снять многие технические проблемы при разработке специализированного программного обеспечения разработчику помогут знание теории и практика программирования вычислительных алгоритмов на ассемблере для ЦВМ с фиксированной запятой. Цель настоящего учебного пособия — познакомить будущего инженера с теорией реализации вычислительных алгоритмов на ЦВМ с фиксированной запятой, дать ему возможность на практике убедиться в эффективности применения инженерной методики проектирования ассемблерных программ. Структурно пособие состоит из трех разделов. В первом разделе обобщен опыт российской школы представления данных в ЦВМ с фиксированной запятой, даны определения масштабу и процессу масштабирования. Рассмотрены два метода масштабирования и на конкретных примерах показаны их достоинства и недостатки. Рассмотрены особые случаи масштабирования данных в ЦВМ. Во втором разделе с единой позиции рассмотрены общие и особые приемы масштабирования арифметических операций. Подробно рассмотрены способы повышения точности выполнения операций умножения, деления и деления на постоянную. Практическая реализация выполнения всех арифметических операция рассмотрена на примере системы команд микропроцессоров x86 фирмы Intel. В третьем разделе представлена инженерная методика проектирования ассемблерных программ, реализующих вычислительные
алгоритмы. Работоспособность этой методики подтверждают примеры реализации ассемблерных программ вычисления полинома, функции ( ) sin , y x = представленной разложением в ряд Маклорена, решения дифференциального уравнения. Качество работы спроектированных программ подробно анализируется. Учебное пособие дополнено пятью приложениями, выполняющими справочную роль. Автор выражает глубокую признательность рецензентам пособия — профессору Сергею Олеговичу Старкову и профессору Владимиру Ивановичу Аверченкову за полезные советы по улучшению рукописи. А. В. Максимов
1. МАСШТАБИРОВАНИЕ ДАННЫХ В ЦВМ Дано определение масштаба при представлении числовых данных в цифровой вычислительной технике. Рассмотрены два подхода записи чисел в ЦВМ с фиксированной запятой. На конкретных примерах отмечены особенности представления чисел такого класса в ЦВМ. 1.1. ФОРМЫ ЗАПИСИ ЧИСЕЛ Применяемая в ЦВМ двоичная система счисления, как и привычная нам в жизненной практике десятичная, является позиционной системой. Замечательными особенностями этого класса математических систем является единство правил записи чисел и единство законов выполнения арифметических операций. Принципиальным отличием одной позиционной системы от другой является количество цифр, принятое для записи конкретного значения разряда числа, называемое основанием системы счисления. Число X в позиционной системе условно, графически может быть записано в виде 1 2 1 0 1 2 ( ) , , m m n m X x x x x x x x − − − − − − ⇒ ± … … (1.1) где n — количество информационных разрядов (цифр) принятое для записи числа ; X m — количество разрядов, отводимых для представления целой части числа; ix — конкретное значение (конкретная цифра) i-го разряда. В такой записи запятая отделяет целую часть числа от дробной и всегда располагается в строго фиксированном месте. (Знак «минус» у нижнего индекса в выражении (1.1) условно означает уменьшение веса разрядов дробной части.) Совокупность всех цифр и их взаимное расположение в графической записи числа принято называть мантиссой. Условимся мантиссу числа X записывать как ( ) mant , X а основание системы счисления — .q На рис. 1.1 приведены примеры записи произвольных чисел в шестна
дцатеричной — 16 q = (число A), десятичной — 10 q = (число B ), восьмеричной — 8 q = (число D ) и двоичной — 2 q = — системах счисления (число C ). В табл. П.1 Приложения A приведены соответствия между числами десятичной, шестнадцатеричной, восьмеричной и двоичной систем. ( ) mant A ( ) mant D ( ) mant C ( ) mant B 16 q = 10 q = 8 q = 2 q = 123456789 0,0123456789 A abcdef adcdef ⇒ 10,01 C ⇒ 9876543210,0123456789 B ⇒ 76543210,1234567 D ⇒ Рис. 1.1. Примеры записи чисел в позиционных системах счисления Форма записи чисел в виде (1.1) получила название естественной или натуральной. Адекватной математической моделью для этой записи является выражение [1]: ( ) 1 2 1 1 2 1 0 1 ( ) 0 1 ( ) . m m m m n m n m X q x q x q x q x q x q x − − − − − − − − − − = ± + +…+ + + + + + … (1.2) Для применяемой в ЦВМ двоичной системы, когда 2, q = последнее выражение принимает вид ( ) 1 2 1 1 2 1 0 1 ( ) 0 1 ( ) 2 2 2 2 2 2 . m m m m n m n m X x x x x x x − − − − − − − − − − = ± + +…+ + + + + + … (1.3) Естественная форма записи чисел в позиционных системах не является единственной. В инженерной практике широко применяется так называемая экспоненциальная или показательная форма. В такой форме число X записывают в виде следующего выражения [1, 2]:
1 0 . n p i i i X q q x − ± − − = ⎛ ⎞ = ± ⎜ ⎟ ⎝ ⎠ ∑ (1.4) Для привычной нам десятичной системы, когда 10, q = экспоненциальная форма выглядит следующим образом: 1 0 10 10 . n p i i i X x − ± − − = ⎛ ⎞ = ± ⎜ ⎟ ⎝ ⎠ ∑ (1.5) Число, полученное после раскрытия суммы в скобках в выражениях (1.4) и (1.5), есть мантисса , X а основание системы счисления q в степени p ± (для десятичной системы это 10 в степени p ± ) принято называть экспонентой. Показатель степени экспоненты p ± есть порядок числа (порядок экспоненты). Отметим, что положение запятой в мантиссе в общем случае может быть произвольным. Экспоненциальная форма записи числа и её математическая модель совпадают. На рис. 1.2 приведены различные примеры этой формы записи чисел в десятичной системе. 3 10 12345,678 A − = ⋅ 3 10 0,012345678 B + = ⋅ 0 10 12,345678 C = ⋅ 4 10 12345,678 D − = ⋅ ( ) mant D ( ) mant C ( ) mant B ( ) mant A ( ) exp A ( ) exp B ( ) exp C ( ) exp D Рис. 1.2. Примеры экспоненциальной формы записи чисел Как видно из рис. 1.2, мантиссы всех чисел представлены одними и теми же цифрами, но 12,345678, A B C = = = а 1,2345678. D = Весьма затруднительно организовать автоматизированное выполнение арифметических операций, когда мантиссы операндов вычислительного алгоритма имеют произвольные и различные формы представления. В этом заключается неудобство применения экспоненциальной формы с произвольной мантиссой. На практике разработчики применяют форму записи чисел с так называемой
нормализованной мантиссой. Условие нормализации определяется следующим выражением: ( ) 1 mant , k k q X q − > ≥ а для двоичной системы при 2 q = ( ) 1 2 mant 2 . k k X − > ≥ На практике значение k принимают равным единице ( )1 k = либо нулю ( ) 0 . k = Так, в соответствии со стандартом IEEE 754, нормализованная мантисса для чисел, представляемых в ЦВМ, должна удовлетворять следующему условию (для двоичной системы при 2 q = ) [2]: ( ) 1 0 2 mant 2 . X > ≥ В соответствии с этим стандартом многие зарубежные и отечественные производители элементной базы ЦВМ (Intel, Analog Devices, Texas Instruments Inc., Модуль и др.) проектируют и серийно выпускают свои микропроцессоры. Очевидно, что при нормализации мантиссы по стандарту IEEE 754 порядок p не равен числу разрядов целой части , X а показывает, на сколько разрядов вправо или влево отличается положение истинной запятой числа от положения запятой в нормализованной мантиссе. Знак порядка определяет направление движения (вправо или влево) при определении положения истинной запятой. Важным достоинство позиционных систем счисления является возможность записи чисел одной системы цифрами другой. Это справедливо как для натуральной, так и для экспоненциальной форм записи. Для иллюстрации этого свойства приведем запись чисел в форме с плавающей запятой в шестнадцатеричной, восьмеричной и двоичной системах цифрами десятичной системы: 1 1 1 16 16 ; 8 8 ; 2 2 . n n n p i p i p i i i i i i i X x X x X x ± − ± − ± − = = = = ± = ± = ± ∑ ∑ ∑ Заметим, что запись основания системы счисления как десятичной, так и шестнадцатеричной, и восьмеричной, и двоичной циф
рами самих этих систем графически имеет один и тот же вид. В самом деле: 10 16 10 16 8 10 8 2 10 2 10; 16 10 10 ; 8 10 10 ; 2 10 10 ; q q h q q q b = = = = = = = = = = где символы ,b ,h q означают, что число перед этим символом записано либо в двоичной (b — bin — binary), либо в шестнадцатеричной (h — hex — hexadicimal), либо в восьмеричной (q — quadruple) системах счисления. Если организуется вычислительный процесс над числами, записанными в естественной форме, то для любого числа этого процесса будет постоянным m — количество разрядов для представления его целой части (см. (1.1)–(1.3)). Это означает, что положение запятой в числе при выполнении с ним всех арифметических операций будет фиксировано в его мантиссе. Если же организуется вычислительный процесс с числами, записанными в экспоненциальной форме, то для одного и того же числа при выполнении с ним разных арифметических операций значение порядка его экспоненты p (см. (1.4), (1.5)) будет переменным. Следовательно, положение запятой в одном и том же числе при выполнении с ним разных арифметических операций будет меняться, говоря образно — положение запятой будет плавать. Разработчики вычислительных машин, имея опыт работы с числами, представленными как в естественной форме записи, так и в экспоненциальной, в свое время предложили несколько методов построения арифметического устройства ЦВМ. Если в ЦВМ операции выполняются с числами, представленными в естественной форме, то такие ЦВМ называются ЦВМ с фиксированной запятой. Если арифметические операции выполняются с числами в экспоненциальной форме записи, то говорят о ЦВМ с плавающей запятой. В настоящем учебном пособии рассматриваются вычислительные алгоритмы для ЦВМ с фиксированной запятой. 1.2. ОПРЕДЕЛЕНИЕ МАСШТАБА В обычной практике при записи чисел в соответствии с (1.1) предполагается, что нет ограничений на число информационных
разрядов, оно бесконечно большое. Числа записываются со столькими разрядами, сколько необходимо для решения конкретной задачи. В ЦВМ число разрядов , N отводимых для записи данных с учетом их знака, является её важнейшим техническим параметром. Этот параметр имеет конкретное значение. Условимся числа в ЦВМ представлять в виде следующего обобщенного графического изображения, называемого форматом представления данных, форматом представления машинной переменной (рис. 1.3). x 0/1 x x x x N n знак числа – число информационных разрядов N – разрядность ЦВМ младший разряд старший разряд ( ) mant X ( ) 1 n N = − Рис. 1.3. Формат представления данных в ЦВМ В настоящее время наибольшее распространение получили следующие значения разрядности данных: 8;16; 32; 64;128. N = В эксклюзивных случаях разрядность представления данных N может быть равна 10;12;14; 20; 24; 48. Работая с разрядностью , N про граммист имеет возможность оперировать с 2N числом различных двоичных кодовых комбинаций. Понятно, что число кодовых комбинаций (число двоичных чисел) ограничено и с уменьшением разрядности ЦВМ уменьшается. Ограниченный диапазон изменения двоичных чисел в ЦВМ порождает при организации вычислительных алгоритмов проблему в установлении оптимального по точности и быстродействию соотношения между конкретными двоичными кодовыми комбинациями (двоичными числами) и конкретными значениями фактических (физических, математических) переменных, моделируемых этими алгоритмами. Проблема решается введением масштабирования данных вычислительного алгоритма [3–6]. Дадим определения процессу масштабирования и масштабу.
К покупке доступен более свежий выпуск
Перейти