Для упрощения задач программирования существует специальный язык программирования. В нем вместо кодов записываются символьные обозначения команд, которые легко запоминаются. Этот язык называется Ассемблер.
Ассемблер – это машинно-зависимый компилятор, преобразующий специальным образом составленные текстовые строки в машинные инструкции. Как и любой другой компилятор, ассемблер упрощает разработку программ за счет того, что предоставляет пользователю доступ к кодам машинных инструкций и операндам с помощью символьных имен. Достоинство заключается в том, что, программируя на Ассемблере, программист выбирает последовательность машинных инструкций так, чтобы реализовать нужные вычисления с максимальной скоростью при минимальных затратах памяти. Также Ассемблер поддерживает двоичную, шестнадцатеричную системы счисления, для представления числовых констант и даёт возможность помечать строки программы метками с символическими именами. К таким меткам возможно обратиться по имени из других частей программы.
С другой стороны, программирование на уровне машинных инструкций – чрезвычайно хлопотное занятие и не может сравниться по скорости разработки с программированием на языках высокого уровня. В этом заключается главный недостаток ассемблера.
1 ЭТАПЫ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Ручной период автоматизации вычислений начался в начале человеческой цивилизации и основывался нa использовании частей тела, в первую очередь пальцев рук и ног. Даже ряд известных средневековых математиков рекомендовали в качестве вспомогательного средства именно счет на пальцах, допускающий довольно эффективные системы счета. Фиксация результатов счета производилась различными способами: узелки, нанесение насечек, счетные палочки. Например, у народов доколумбовой Америки был весьма развит узелковый счет. Более того, эта система узелков выполняла также роль своего рода хроник и летописей, имея достаточно сложную структуру. Однако, использование ее требовало хорошей тренировки памяти. Счет с помощью группировки и перекладывания предметов явился предшественником счета на абаке - наиболее развитом счетном приборе древности, сохранившимся до наших дней в виде различного типа счетов.
Абак является первым развитым счетным прибором в истории человечества. Основным отличием его от предшествующих способов было выполнение вычислений по разрядам. Таким образом, использование абака уже предполагает наличие некоторой позиционной системы счисления, например, десятичной, троичной, пятеричной и других.
Хорошо приспособленный к выполнению двух операций сложения и вычитания, абак оказался недостаточно эффективным прибором для выполнения, операций умножения и деления.
Это привело к открытию логарифмов и логарифмических таблиц Дж. Непером в 17 веке, позволивших заменять операции умножения и деления соответственно сложением и вычитанием, явилось следующим крупным шагом в развитии вычислительных систем ручного этапа. В след за этим появляется целый ряд модификаций логарифмических таблиц. Однако, в практической работе использование логарифмических таблиц имеет ряд неудобств, поэтому Д. Непер предложил аналогичный метод специальные счетные палочки. Они позволили производить операции умножения и деления непосредственно над исходными числами. В основу данного метода Непер положил способ умножения решеткой.
Введенные Д. Непером логарифмы оказали революционизирующее влияние на все последующее развитие счета. Этому в большей степени поспособствовало появление целого ряда логарифмических таблиц вычисленных рядом известных в то время вычислителей. Сама идея логарифмов в алгебраической интерпретации основывается на сопоставлении арифметической и геометрической последовательностей. Известно, что любое число в арифметической последовательности является логарифмом соответствующего числа в геометрической последовательности по некоторому основанию.
Логарифмы послужили основой создания замечательного вычислительного инструмента - логарифмической линейки, более 360 лет служащего инженерно-техническим работникам всего мира. Первообразом современной логарифмической линейки считается логарифмическая шкала Э. Гюнтера, использованная У. Отредом и Р. Деламейном при создании первых логарифмических линеек. Усилиями целого ряда исследователей логарифмическая линейка постоянно совершенствовалась и видом, наиболее близким к современному, она обязана французскому офицеру А. Манхейму. Позволяя производить вычисления с 2-4 точными десятичными цифрами, логарифмическая линейка и счеты еще исправно служат человеку в различного рода расчетах, являясь венцом вычислительных инструментов ручного этапа развития вычислительной техники.
Развитие механики в 17 веке стало предпосылкой создания вычислительных устройств и приборов, использующих механический принцип вычислений. Такие устройства строились на механических элементах и обеспечивали автоматический перенос старшего разряда. Первая механическая машина была описана в 1623 г. В. Шиккардом, реализована в единственном экземпляре и выполняла четыре арифметических операции над 6-разрядными числами. Машина Шиккарда состояла из трех независимых устройств: суммирующего, множительного и записи чисел. Операция сложения осуществлялась последовательным вводом слагаемых посредством наборных дисков, а вычитание - последовательным вводом уменьшаемого и вычитаемого. Вводимые числа и результат этих операций отображались в окнах считывания. Для умножения использовалась идея умножения решеткой, рассмотренная выше. Третья часть машины использовалась для записи числа длиною более 6 разрядов. В машине Блеза Паскаля использовалась более сложная схема переноса старших разрядов, в дальнейшем редко используемая; но построенная в 1642 году первая действующая модель машины, а затем серия из 50 машин способствовали достаточно широкой известности изобретения и формированию общественного мнения о возможности автоматизации умственного труда. До настоящего времени дошло только 8 машин Паскаля, из которых одна - десятиразрядная. Именно машина Паскаля положила начало механического этапа развития вычислительной техники. В 17-18 веках предлагался целый ряд различного типа и конструкции суммирующих устройств и арифмометров, пока в 19 веке; растущий объем вычислительных работ не определил устойчивого спроса на механические счетные устройства и не способствовал их серийному производству на коммерческой основе.
В начале 1836 года Бэбидж уже четко представлял себе основную конструкцию машины, а в 1837 году он достаточно подробно описывает свой проект. Аналитическая машина состояла из следующих четырех основных частей:
Первач часть включала в себя блок хранения исходных, промежуточных данных и результатов вычислений. Он состоял из набора зубчатых колес, идентифицирующих цифры подобно арифмометру. Колеса объединялись в регистры для хранения многоразрядных десятичных чисел. Этот блок Бэбидж называл складом и определял его емкость в тысячу пятидесяти-разрядных десятичных чисел.
Вторая часть – это блок для обработки чисел из склада, названный мельницей. Быстродействие данного блока Бэбидж оценивал следующим образом: сложение и вычитание - одна секунда, умножение (двух 50-разрядных чисел) и деление (100-разредное число на 50-разрядное) - одна минута.
Третья часть включает блок управления последовательностью вычислений проектировался на основе двух: жаккардовых механизмов» описанных ниже.
Четвертая часть включает блок ввода исходных данных и печати результатов.
Для правильной работы аналитической машины требовалась программа. Самый первый пример этой программы был написан Адой Лавлейс. В 1842 ггоду на итальянском языке была опубликована статья по аналитической машине Бэбиджа, переводом которой на английский язык и занималась А. Лавлейс. В августе 1843 года вышел перевод статьи Менебреа. В статье присутствовали примечания переводчика. Примечания в два раза превышали объем оригинала и заложили основы программирования на ЭВМ за т столетие до начала действительного развитая этого раздела информатики.
Электромеханический этап развития вычислительной техники был непродолжительным и охватывает всего около шестидесяти лет. Длится от первого табулятора Г. Холлерита, который был изобретен в 1887 году, до первой электронно-вычислительной машины ENIAC (1945 год). Предпосылками создания проектов данного этапа явились необходимость проведения массовых расчетов, и развитие прикладной электротехники, позволившие создавать электромеханические вычислительные устройства. В предыдущих этапах развития вычислительной техники можно заметить, что каждый из этапов характеризуется созданием технических средств нового типа обладающих очень высокой производительностью и более широкой сферой применения, чем в предыдущих этапах. Классическим типом средств электромеханического этапа стал счетно-аналитический комплекс, предназначенный для обработки информации на перфокарточных носителях.
Первый счетно-аналитический комплекс был создан в США Г. Холлеритом в 1887 году. Он представлял собой ручной перфоратор сортировочной машины и табулятор. Основываясь на идеи Бэбиджа и Жаккарда, Г. Холлерит в качестве информационного носителя взял перфокарты, все остальные компоненты комплекса носили оригинальный характер. Главным назначением комплекса являлась статистическая обработка перфокарт. В первых моделях комплекса использовалась ручная сортировка перфокарт, а табулятор был создан на основе простейших электромеханических реле. Первое испытание комплекса было произведено в 1887 году в Балтиморе при составлении таблиц смертности населения. Основные испытания уже модифицированного комплекса производились в 1889 году при обработке итогов переписи населения в четырех районах Сент-Луиса.
В 1937 году в США Дж. Атанасов начал работы по созданию ЭВМ, которая была использована для решения ряда задач в математической физики. В это время создавались первые электронные схемы узлов ЭВМ. Эти схемы через некоторое время были запатентованы. Вместе с К. Берри к 1942 году была построена электронная машина ABC (Atanasoff-Berry Computer). Электронная машина АВС выполняла только операции сложения и вычитания и включала в себя АУ на 300 вакуумных лампах. Еще триста ламп использовались для реализации всевозможных цепей управления и восстановления памяти. Сама память машины состояла из большого числа конденсаторов, смонтированных на двух вращающихся барабанах с общей емкостью на 60 50-битных чисел. Модель ДВС-вычислителя реализовала ряд черт, оказавших большое влияние на инженерные решения последующих средств вычислительной техники. Она и ее прототип 1939 года, были первыми специальными машинами.
Релейная вычислительная техника в силу физико-технической природы не позволяла существенно увеличить скорость вычислений. В связи с этим потребовался переход на электронные безинерционные элементы высокого быстродействия.
К началу сороковых годов 20 века электроника уже располагала необходимым набором элементов. С изобретением М. Бонч-Бруевичем в 1913 году триггера появилась реальная возможность создания быстродействующей электронной вычислительной техники.
ЭВМ ознаменовали собой новое направление в вычислительной техники, которое стремительно развивалось и развивается в настоящее время в различных направлениях.
Первой ЭВМ считают английскую машину Colossus, которая была изобретена в 1943 году при участии А. Тьюринга. Машина состояла из 2000 электронных ламп и обладала достаточно высоким быстродействием однако была узкоспециализированной. В связи с этим первой ЭВМ принято называть машину Electronic Numerical Integrator and Computer, изобретенную в США в конце 1945 года. Машина оказалась универсальной, хотя и в начале была предназначена для решения задач баллистики. Главным консультантом проекта являлся Д. Моучли, а главным конструктором – Д. Эккерт.
Проект создания ENIAC начался в апреле 1943 года и был полностью закончен в декабре 1945 года. В качестве официального испытания ЭВМ была назначена задача оценки принципиальной возможности создания водородной бомбы. Машина успешно выдержала испытание, обработав при этом приблизительно один миллион перфокарт фирмы IBM с исходными данными. По сравнению с существующей на тот период времени автоматической машиной MARK-1 Айкена ENIAC была по размерам в два раза больше, но превосходила первую в быстродействии приблизительно в 1000 раз. Машина состояла из 18000 электронных ламп, 500 реле, 70000 сопротивлений, 10000 конденсаторов, потребляя мощность в 140 киловатт.
В EDVAC программа электронным методом записывалась в специальную память на ртутных трубках, вычисления производились уже в двоичной системе счисления. Именно это позволило сильно уменьшить количество ламп и других элементов электронных цепей. ЭВМ оперировала очень ограниченным набором четырех адресных команд, каждая длиной в слово – сорок четыре бита. Код операции мог состоять из 4 битов - это максимум 16 команд, из которых 12 было реально задействовано. Адреса использовались для указания соответственно первого и второго операндов, результата операции и адреса следующей выполняемой команды программы. Полностью ЭВМ была завершена в 1952 оду, она содержала более 3500 ламп девятнадцати различных типов.
2 МОДУЛЬНО-МАГИСТРАЛЬНЫЙ ПРИНЦИП ПОСТРОЕНИЯ ЭВМ
Магистрально–модульный принцип является основой архитектуры персональных компьютеров. Модульный принцип позволяет потребителю самому комплектовать нужную ему конфигурацию компьютера и производить при необходимости ее модернизацию.
Магистраль включает в себя многоразрядные шины: шину данных, шину адреса и шину управления. Шины представляют собой многопроводные линии.
Разрядность шины данных определяется разрядностью процессора, количеством двоичных разрядов, которые процессор обрабатывает за один такт. Разрядность процессора постоянно увеличивалась в следующей последовательности: 8, 16, 32, 64. Информация по двунаправленной шине данных может передаваться от процессора.
Выбор абонента по обмену данными производит процессор, который формирует код адреса устройства, и для оперативной памяти код адреса ячейки памяти. Код адреса непосредственно передается по адресной шине, причем сигналы по ней передаются в одном направлении от процессора к оперативной памяти и устройствам. Для этого предназначена однонаправленная шина.
Разрядность шины определяется адресным пространством процессора, то есть количеством ячеек, которые будут иметь уникальные адреса. Количество адресуемых ячеек памяти рассчитывается по формуле:
N=2I, (1)
где I - разрядность шины адреса.
Каждая ячейка имеет свой уникальный двоичный адрес и объем 1 байт, Из этого следует, что максимальный объем адресуемой памяти будет равным:
4294967296 байт=4 Гбайт.
В персональных компьютерах длина адресного пространства процессора и
длина фактически установленной оперативной памяти практически всегда различаются. Не учитывая то, что общий объем адресуемой памяти достигает четырех гигабайт, длина фактически установленной оперативной памяти может быть значительно меньше – тридцать два мегабайта.
По шине управления передаются сигналы, определяющие характер обмена информацией, сигналы, синхронизирующие взаимодействие устройств, участвующих в обмене информацией.
Все устройства компьютера подключаются к магистрали. К самой магистрали можно подключить лишь процессор и оперативную память, другие устройства подключаются при помощи специальных согласующих устройств – контроллеров.
Необходимость использования контроллеров вызвана и связана с тем, что технические и функциональные параметры компонентов могут существенно различаться, к примеру, их быстродействие. Таким образом, процессор может проводить несколько сотен миллионов операций в секунду, тогда как пользователь может вводить с клавиатуры приблизительно два - три знака за секунду. Контроллер клавиатуры и обеспечивает согласование скорости ввода информации со скоростью ее обработки.
3 КЛАССИЧЕСКАЯ АРХИТЕКТУРА ЭВМ
Джон фон Нейман – основатель учения об архитектуре вычислительных машин.
Фон Нейман выдвинул основополагающие принципы логического устройства ЭВМ. Им была предложена структура архитектуры вычислительных машин, представленная на рисунке 1.
Рисунок 1 – Архитектура ВМ.
Арифметико-логическое устройство и устройство управления в современных компьютерах образуют процессор ЭВМ. Процессор, который состоит из одной или нескольких больших интегральных схем называется микропроцессором или микропроцессорным комплектом.
Процессор – функциональная часть ЭВМ, выполняющая основные операции по обработке данных и управлению работой других блоков. Процессор является преобразователем информации, поступающей из памяти и внешних устройств.
Запоминающие устройства обеспечивают хранение исходных и промежуточных данных, результатов вычислений, а также программ. Они включают: оперативные, сверхоперативные, постоянные и внешние запоминающие устройства.
Оперативные запоминающие устройства хранят информацию, с которой компьютер работает непосредственно в данное время. В СОЗУ хранится наиболее часто используемые процессором данные. Только та информация, которая хранится в СОЗУ и ОЗУ, непосредственно доступна процессору.
Внешние запоминающие устройства используются для длительного хранения больших объемов информации.
Постоянные запоминающие устройства и перепрограммируемые постоянные запоминающие устройства предназначены для постоянного хранения информации, которая записывается туда при ее изготовлении.
Устройством ввода может быть клавиатура. В качестве устройства вывода – дисплей.
В ЭВМ фон Неймана происходит последовательное считывание команд из памяти и их выполнение. Номер (адрес) очередной ячейки памяти, из которой будет извлечена следующая команда программы, указывается специальным устройством – счетчиком команд в устройстве управления.
4 КЛАССИФИКАЦИЯ ЭВМ
Электронная вычислительная машина представляет собой комплекс аппаратных средств, которые предназначены для автоматической обработки информации в процессе решения задач различного типа.
ЭВМ классифицирую по различным признакам. Один из способов классификации – по назначению.
По назначению ЭВМ подразделяются на универсальные, специализированные, проблемно-ориентированные.
Универсальные предназначены для решения математических, информационных и ряда других задач. Работают с большим объемом данных
Достоинствами таких ЭВМ являются большой объем оперативной памяти, высокая производительность.
Специализированные ЭВМ предназначены для решения узкого круга, что позволяет четко специализировать их структуру. К ним относят: адаптеры и контроллеры, выполняющие логические функции управления отдельными несложными техническими устройствами, агрегатами и процессами; устройства согласования и сопряжения работы узлов вычислительных систем.
Проблемно-ориентированные ЭВМ служат для решения более узкого круга задач для управления технологическими объектами; регистрацией и обработкой небольших объемов данных; выполнением расчетов по относительно несложным алгоритмам. К проблемно-ориентированным ЭВМ можно определить всевозможные управляющие вычислительные комплексы.
ЭВМ также могут различаться по следующим основаниям. По принципу действия существуют аналоговые, гибридные и цифровые электронно-вычислительные машины.
Цифровые вычислительные машины работают с информацией в дискретном (цифровом) виде. В свою очередь аналоговые вычислительные машины представляют собой машины непрерывного действия. Информация представлена в виде электронного напряжения в непрерывной форме.
Гибридные вычислительные машины - это машины комбинированного действия. Работают с информацией как в цифровой так и в аналоговой форме.
Сочетают в себе положительные качества аналоговых и цифровых машин.
По месту работы и режиму ЭВМ принято делить на активные, резервные, подчиненные, периферийные, псевдоведущие.
Активная ЭВМ, включенная в состав многомашинного комплекса и является ведущей постоянное время обработку или готова к немедленной обработке задач пользователей.
Резервная или дублирующая ЭВМ, специализирована на выполнение операций, предназначенных для активной ЭВМ. Работает в постоянно ждущем режиме. Этот режим предусматривает передачу функций активной машины в случаях ошибочной работы или выхода из строя последней.
Периферийная ЭВМ предназначена для управления каким-либо периферийным оборудованием. Также выполняет некоторые вспомогательные функции. Например, такие как, предварительный сбор и обработку данных.
Подчиненная ЭВМ используется в многомашинных системах. Работает под управлением центральной ЭВМ.
Псевдоведущая ЭВМ в свою очередь осуществляет сбор статистических отчетов о работе вычислительной сети.
По этапам развития ЭВМ условно подразделяют на 6 поколений.
Первое поколение - 50-е года: ЭВМ на электронно-вакуумных лампах.
Второе поколение - 60-е годы: ЭВМ на дискретных полупроводниковых приборах.
Третье поколение - 70-е годы: ЭВМ на полупроводниковых интегральных схемах с малой и средней степенью интеграции.
Четвертое поколение - 80-е годы: ЭВМ на больших интегральных схемах — микропроцессорах (несколько миллионов транзисторов в одном кристалле).
Пятое поколение, 90-е годы: ЭВМ на сверхсложных микропроцессорах с параллельной векторной структурой. Могут одновременно выполнять несколько десятков последовательных команд.
Шестое поколение: оптоэлектронные ЭВМ с массовым параллелизмом и нейронной структурой - с распределенной сетью большого числа несложных микропроцессоров, моделирующих архитектуру нейронных биологических систем.
По функциональным возможностям ЭВМ можно разделить суперЭВМ, большие, малые и микроЭВМ.
С понятием микроЭВМ связаны следующие определения и термины:
МикроЭВМ в свою очередь подразделяются на универсальные (многопользовательские и персональные) и специализированные (серверы и рабочие станции).
5 РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА
5.1 Постановка задачи и разработка алгоритма
В курсовой работе требуется решить следующую задачу: «Дан одномерный массив. Массив заполнить случайными числами. Во второй массив занести обратную последовательность элементов первого массива (слева-направо -> справа-налево). В третий массив занести последовательность из сумм элементов на соответствующих позициях первого и второго массивов. Полученный массив отсортировать по убыванию.
Для реализации поставленной задачи используется среда Microsoft Visual Studio 2010. Генерация массивов случайными числами и вывод на экран реализовано средствами C++. Формирование второго и третьего массивов - средствами языка Ассемблера. На рисунках 2 и 3 представлена блок-схема алгоритма:
Начало начало |
a[5], b[5]. I=0 a[5], b[5], i=0 |
printf(a[i] printf a[i] |
_asm1 _asm1 |
For (i=0; i<5; i++) |
a[i]=rand()100% |
1 1 |
Рисунок 2 – Блок-схема алгоритма (1 часть)
_asm2
_asm2 |
printf a[i]
printf а[i] |
_asm3
_asm3 |
printf a[i]
printf a[i] |
конец |
1 |
printf b[i]
printf b[i] |
Рисунок3 – блок-схема алгоритма (2 часть)
5.2 Формализация алгоритма
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include "conio.h"
void main ()
{
setlocale (0,"rus");
int a[5];
int b[5];
int i=0;
for(int i=0; i<5; i++)
{
a[i] =rand()%100;
b[i]=a[i];
}
printf ("\n Массив 1: ");
for(i=0; i<5; i++)
{
printf("%i\t",a[i]);
}
_asm
{
lea ebx, b
mov esi, 0
mov ecx, 5
for1:
mov edx, [ebx+esi]
push edx
add esi, 4
loop for1
mov ecx, 5
mov esi, 0
for2:
pop edx
mov [ebx+esi], edx
add esi, 4
loop for2
}
printf ("\n Массив 2: ");
for(i=0; i<5; i++)
{
printf("%i\t",b[i]);
}
_asm
{
lea eax,a
lea ebx, b
mov esi, 0
mov ecx, 5
for:
push ecx
mov edx, [eax+esi]
mov ecx, [ebx+esi]
add edx, ecx
mov [eax+esi], edx
pop ecx
add esi,4
loop for
}
printf ("\n Массив 3 (а+в): ");
for(i=0; i<5; i++)
{
printf("%i\t",a[i]);
}
_asm {
lea ebx, a
mov ecx, 4
for11:
push ecx
mov ecx, 4
mov esi, 0
mov edx, 4
for22:
mov ah, [ebx+edx]
mov al, [ebx+esi]
cmp al, ah
jc lable1
jmp end22
lable1:
mov [ebx+edx], al
mov [ebx+esi], ah
end22:
add esi, 4
add edx, 4
loop for22
pop ecx
loop for11
}
printf("\n");
printf ("Массив по убыванию: ");
for(i=0; i<5; i++)
{
printf("%i\t",a[i]);
}
system("pause");}
Рисунок 4 – результат работы программы с 1 набором входных данных
Рисунок 5 – результат работы программы со 2 набором входных данных
Рисунок 6 – результат работы программы с 3 набором входных данных
5.3 Таблица использования памяти и регистров
Таблица использования памяти и регистров (таблица 1) содержит данные о состоянии регистров при выполнении сравнения элементов двух массивов.
Таблица 1 – Использование памяти регистров
№ |
Команда |
Регистр «до» |
Регистр «после» |
1 |
2 |
3 |
4 |
1 |
mov esi |
9763812 |
0 |
2 |
mov ecx |
142713165 |
5 |
3 |
mov edx, [ebx+esi] |
1495655608 |
41 |
4 |
add esi, 4 |
0 |
4 |
5 |
mov edx, [ebx+esi] |
14874872 |
1494971663 |
6 |
add esi, 4
|
4 |
8 |
Продолжение таблицы 1
1 |
2 |
3 |
4 |
7 |
mov edx, [ebx+esi]
|
1494971663 |
14874900 |
8 |
add esi, 4
|
8 |
12 |
9 |
mov edx, [ebx+esi]
|
14874900 |
14874900 |
10 |
add esi, 4
|
12 |
16 |
Выше представленная таблица отображает частный случай, так массивы заполняются каждый следующий раз новыми числами - случайно, и представляет собой лишь пример работы с регистрами.
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы были рассмотрены этапы развития вычислительной техники, модульно-магистральный принцип построения ЭВМ и ее классификация, а также классическая архитектура.
Также освоены практические навыки разработки программы для ЭВМ на языке ассемблера. Язык ассемблера – это символическое представление машинного языка. Ассемблер позволяет писать короткие и быстрые программы.
Применены практические знания, которые получили при изучении дисциплины «Архитектура информационных систем». Итогом выполнения курсовой работы стала программа, реализующая некоторый функционал.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ