Эволюция языка программирования Ассемблер

Автор работы: Пользователь скрыл имя, 06 Марта 2013 в 18:48, курсовая работа

Описание

Актуальность. Несмотря на то, что в настоящее время программист может использовать большое количество языков программирования, которые гораздо проще Ассемблера, знание Ассемблера и умение программировать на нем никогда не будут лишними. Этот факт подтверждается следующими доводами: 1. На других языках программирования не всегда возможно написать приложение, которое полно бы удовлетворяло требованиям. А в некоторых случаях полностью невозможно. На языке программирования Ассемблер можно написать любое приложение.
2. Иногда языки программирования высокого уровня не могут обеспечить требуемое быстродействие. А приложение созданное на Ассемблере всегда быстродействующее.

Содержание

Введение 5
1. Понятие, назначение и составные элементы систем программирования 7
2. Классификация языков программирования 11
2.1. Машинно-ориентированные языки 11
2.1.1. Машинный язык 11
2.1.2. Языки символического кодирования 12
2.1.3. Автокоды 13
2.1.4. Макрос 14
2.2 Машинно-независимые языки 14
2.2.1. Проблемно – ориентированные языки 15
2.2.2. Универсальные языки 15
2.2.3. Диалоговые языки 16
2.2.4. Непроцедурные языки 17
3. Ассемблер 18
3.1 Программирование на языке Ассемблера 18
3.2 Описание различных версий Ассемблера 21
3.2.1. Turbo Assembler фирмы Borland 21
3.2.2. Macro Assembler 24
3.2.3. Netwide Assembler 26
3.2.4. Краткое описание других видов Ассемблера 27
Заключение 30
Список использованной литературы 32

Работа состоит из  1 файл

Assembler.doc

— 124.50 Кб (Скачать документ)

Важной особенностью режима Ideal является применение проверки типов данных, подобно языкам высокого уровня, что позволяет выявить многие ошибки ещё на этапе трансляции. Среди многих других важных преимуществ режима Ideal можно выделить следующие:

- возможность использования  одинаковых имён для обозначения членов различных структур;

- применение операторов HIGH и LOW;

- предварительное вычисление  выражений EQU;

- корректное управление  сегментами данных объединённых  в группы;

- усовершенствованное  использования директив;

- разумное использование  скобок в выражениях.

Turbo Assembler передаёт аргументы в процедуры на языках высокого уровня в кадре стека, помещая аргументы перед вызовом процедуры в стек. Процедуры, написанные на языках высокого уровня, считывают аргументы из стека по мере необходимости. При выходе процедура может удалять аргументы из стека или оставлять эту операцию для вызывающей процедуры.

Традиционным способом, с помощью которого объединяются программы, написанные на С++ и Ассемблере, является разделительная компиляция с последующей компоновкой в один исполняемый файл. При этом можно использовать компилятор Borland C++, который вызывает Turbo Assembler для трансляции ассемблерной программы.

Разработка программы  на языке Turbo Assembler включает четыре этапа:

1-й этап. Подготовка исходного текста программы и оформление его в виде текстового файла (одного или нескольких) с помощью какого-нибудь редактора в формате DOS с расширением *.asm*.

2-й этап. Ассемблирование программы с применением транслятора Tasm, результатом которого является объектный файл с расширением *.obj*. Когда программа состоит из нескольких файлов (модулей), то их ассемблирование производится независимо друг от друга. Если в процессе трансляции будут обнаружены ошибки, то объектный файл не создаётся, а формируется сообщение об ошибках. Ошибки устраняются, после чего трансляция повторяется. Объектный файл (двоично-кодированное представление программы) не может быть запущен на исполнение, так как в нём не содержится информация о загрузке сегментов программы в памяти компьютера.

3-й этап. Компоновка программы производится компоновщиком (редактором связей) Turbo Linker и заключается в объединении объектных модулей в один исполняемый файл с назначением стартового адреса программы. Исполняемый файл имеет расширение *.exe*. 2-й и 3-й этапы определяют процесс подготовки исполнительного файла программы, называемого трансляцией.

4-й этап состоит в отладке программы с использованием отладчика Turbo Debugger, который будет являться основным инструментом при изучении форматов команд, их кодирования, а также представления переменных программы в памяти.

 

 

3.2.2. Macro Assembler

 

Пакет Макро Ассемблера включает в себя основные программы, необходимые для создания, отладки и сопровождения программ на языке ассемблера.

В состав пакета Макро Ассемблера входят следующие программные компоненты:

MASM - макроассемблер

LINK - объектный линкер 8086

SYMDEB - символьный отладчик  программ

MAPSYM - генератор символьного  файла

CREF  - утилита перекрестных ссылок

LIB - утилита обслуживания  библиотек

MAKE - утилита сопровождения программ

Макроассемблер MASM создает  программы, которые могут быть выполнены  микропроцессорами 8086, 8088, 80186 и 80286, а  также может ассемблировать программы  для компьютеров с сопроцессорами 8087 и 80287.

Линкер LINK обрабатывает выработанную MASM объектную программу с целью разрешения ссылок к другим модулям и приведения программы к виду, пригодному для загрузки в память.

Утилита LIB обеспечивает формирование и обслуживание библиотек  объектных модулей, которые могут  быть использованы LINK для разрешения внешних ссылок.

Отладчик SYMDEB реализует  отладку сформированной программы  на двух уровнях: на уровне символических  имен и на уровне абсолютных адресов.

Программа MAPSYM предназначена  для создания символьного файла  для SYMDEB. Символьный файл формируется на основе информации, полученной от MASM, и необходим для символьной отладки.

Утилита CREF может быть использована для формирования листинга перекрестных ссылок программы, наличие  которого облегчает отладку.

При помощи утилиты MAKE процесс разработки программ может быть автоматизирован. В файле описаний MAKE могут быть заданы различные алгоритмы вызовов и взаимодействия программ пакета (и не только их).

Кроме указанных программ, для создания ассемблерных исходных файлов необходим также редактор текстов, работающий в коде ASCII без управляющего кода. Многие редакторы текстов, которые обычно используют управляющие коды или другие специальные форматы в документах, обеспечивают также программирование или недокументированный режим для формирования ASCII-файлов.

Пакет макроассемблера  работает в операционной системе MS-DOS или PC-DOS версии 2.0 и выше и требует  наличия минимум 128К памяти (использование  команды SYMDEB может потребовать дополнительной памяти).

Макроассемблер обеспечивает выполнение следующих функций:

1. Анализ исходного  текста на языке ассемблера  на предмет наличия в нем  макрокоманд и/или макроопределений  и обработка этих конструкций  с соответствующей коррекцией  исходного текста.

2. Синтаксический анализ  полученного текста и вывод необходимой диагностической информации.

3. Формирование объектного  модуля[9].

 

 

3.2.3. Netwide Assembler

 

Расширенный Ассемблер NASM – это 80x86 Ассемблер, разработанный исходя из принципов переносимости и модульности. Он поддерживает широкий диапазон форматов объектных файлов, включая форматы Linux a.out и ELF, NetBSD/FreeBSD, COFF, Microsoft 16-bit OBJ и Win32. Он способен также создавать простые бинарные файлы. Синтакс NASM максимально упрощен для понимания и похож на синакс Intel, но слегка посложнее. Он поддерживает инструкции Pentium, P6 и MMX, а также имеет макро-расширения.

Расширенный Ассемблер вырос из идеи, поданной на comp.lang.asm.x86, когда по существу не было хорошего свободно доступного ассемблера серии x86 и нужно было, чтобы кто-то написал его.

Язык состоит из четырех  исполняемых файлов: NASM-исполняемые  файлы nasm.exe и nasmw.exe, и NDISASM-исполняемые  файлы ndisasm.exe и ndisasmw.exe. Файлы, имеющие  в окончании имени w, работают под Win9x/ME/NT, а те, которые без w — работают под DOS-ом.

При создании программы NASM выбирает имя выходного файла  самостоятельно; так как это зависит  от формата объектного файла. Если формат объектного файла — Microsoft (*.obj* и win32), он удалит расширение .asm (или любое  другое, какое вам нравится использовать — NASMу все равно) из имени исходного файла и заменит его на *.obj*. У объектных файлов Unix-формата (aout, coff, elf и as86) он будет заменять расширение на *.o*. Для формата *.rdf* он будет использовать расширение *.rdf*, а в случае формата *.bin* он просто удалит расширение (например из myfile.asm получится файл myfile).

Если выходной файл уже  существует, NASM перезапишет его, если только его имя не совпадает с  именем входного файла — в этом случае появится предупреждение и в  качестве выходного файла будет использовано имя nasm.out.

В случаях, когда имя  по умолчанию недопустимо, используйте  ключ - o командной строки, позволяющий  определить необходимое вам имя  выходного файла. Имя выходного  файла должно следовать за ключом - o, неважно с пробелом между ними или без[10].

 

 

3.2.4. Краткое описание других видов Ассемблера

 

Power Assembler 32.

Интегрированная среда  разработки – «три в одном», - избавляет  программиста от нудного набора опций  командной строки транслятора и  компоновщика вручную. Power Assembler имеет функции оболочки для двух самых распространенных ассемблеров: Borland (Inprize) Turbo Assembler (версия 4.0 и выше) и Microsoft Macro Assembler (версия 6.14 и выше). В интегрированной среде разработки встроен удобный, легко настраиваемый под Ваши нужды редактор с возможностью выделения синтаксиса различными цветами, включения автоотступа, и сохранения файлов в формате *.rtf*.

Внешний вид интерфейса Power Assembler можно изменять по своему желанию, так как фоновые изображения  для инструментальных панелей, а также кнопок доступны в виде графических файлов.

Кроме того, Power Assembler предоставляет  множество полезных и удобных  инструментов и функций: инспектор (инструмент навигации, поиска и редактирования текста), база шаблонов (категоризированное хранилище шаблонов), библиотека кодов (категоризованное хранилище часто используемых кодов - констант, процедур и т.п.), инструментарий (база часто используемых программ) и др. Одним нажатием на кнопку в инструментальной панели можно оттранслировать, скомпоновать и выполнить программу на Ассемблере. Все ошибки транслятора и компоновщика переводятся на русский язык и выводятся в окно ошибок, позволяющее одним щелчком мыши на строке ошибки найти эту ошибку в исходном тексте модуля или открыть подключаемый модуль, содержащий ее, если он закрыт[11].

 

Visual Assembler.

Эта программа написана для тех, кто программирует на Ассемблере. Borland Tasm - транслятор сделанный для MSDOS. Т.к. начинающему программисту на Ассемблере будет сложно не допускать ошибок на этом языке, то постоянная компиляция и компоновка программы с помощью командной строки может быстро утомить и надоесть. Visual Assembler позволяет всё это упростить до минимума. Вы указываете программе путь TASM и TLINK и набираете текст в окне ввода. Когда вам необходимо откомпилировать программу, вы просто в меню программы выбираете тип компиляции, и программа выполняет всю рутинную операцию за вас. Один нюанс - в пути к TASM и TLINK и файлу с исходным текстом не должно быть пробелов.

 

Flat Assembler.

Более известный как fasm, -- быстрый и эффективный Ассемблер для Linux, DOS и Windows. Он поддерживает все инструкции 8086-80486/Pentium с расширениями MMX, SSE, SSE2, SSE3 и 3DNow.

Начиная с текущей  версии (1.60) Flat Assembler поддерживает и  инструкции x86-64 (как AMD64, так и EM64T) - правда, пока на выходе доступны только ELF64. Для некоторой совместимости с NASM добавлен символ $$, проведены улучшения в производительности программы.

Очень быстрый, так как  не генерирует никаких промежуточных  файлов. Имеются версии для DOS, Windows и Linux. Версия для Windows имеет встроенную IDE. Поддерживаются макросы, инструкции всех процессоров 80x86, выходные форматы файлов MZ, PE, COFF и ELF[12].

 

 

ЗАКЛЮЧЕНИЕ

 

 

Язык Ассемблера - мощное средство программирования. Он позволяет программисту осуществлять всестороннее управление аппаратными средствами ЭВМ. Однако такое управление заставляет программиста вникать в детали, далекие от основного содержания программы. Все преимущества языка Ассемблера оборачиваются подчас пустой тратой времени на многочисленные детали.

Несмотря на то, что  Ассемблер является машинно-ориентированным языком, то есть языком низкого уровня, программист может применять его для работы, как на высоком.

К преимуществам Ассемблера можно отнести:

1. Данный язык программирования позволяет создавать приложения, которые будут более эффективны, чем аналогичные приложения, написанные на языке высокого уровня, т.е. приложения будут более короткими и при этом более быстро выполнимыми.

2. Язык Ассемблера позволяет программисту выполнять действия, которые либо вообще нельзя реализовать на других языках и в частности на языках высокого уровня, либо выполнение которых займет слишком много машинного времени в случае привлечения дорогих средств языка высокого уровня.

К недостаткам языка следует отнести:

1. По мере увеличения своего размера программа на Ассемблере теряет наглядность. Это связано с тем, что в ассемблерных программах следует уделять много внимания деталям. Язык требует от вас планирования каждого шага ЭВМ. Конечно, в случае небольших программ это позволяет сделать их оптимальными с точки зрения эффективности использования аппаратных средств. В случае же больших программ бесконечное число деталей может помешать вам добиться оптимальности программы в целом, несмотря на то, что отдельные фрагменты программы будут написаны очень хорошо.

2. Для программирования  на данном языке необходимо  очень хорошо знать структуру  компьютера и работу аппаратных  устройств, так как Ассемблер  работает непосредственно с устройствами.

Из всего вышесказанного можно сделать вывод, что на языке Ассемблера можно сделать любое приложение, любую программу, но для написания больших программ лучше использовать языки высокого уровня, такие как Бейсик или Паскаль, которые позволят вам сосредоточиться на самой задаче и вам не нужно будет непосредственно учитывать особенности устройства и микропроцессора.

 

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

 

 

[1]. Вычислительная техника  и программирование. / Под ред.  А.В. Петрова – М.: Высш. шк., 1990.

[2]. Малютин Э.А. Языки программирования. – М.: Просвещение, 1982.

[3]. Богумирский Б. Эффективная  работа на IBM PC в среде Windows 95 СПб, «Питер», 1997

[4]. Ваулин А.С. Языки  программирования. кн.5 - М.: Школа-Пресс, 1993.

[5]. Майоров С.А., Кириллов  В.В., Приблуда А.А.. Введение в микро-ЭВМ. – М.: Просвещение, 1995.

[6]. Касвандс Э.Г. Введение  в программирование на языке  Ассемблер. ч.1 – М.: ЮНИТИ –  ДАНА, 1993.

Информация о работе Эволюция языка программирования Ассемблер