Различные версии языка программирования Ассемблер
Программирование на языке Ассемблер. Эффективность языка программирования. Описание версий Ассемблера. Турбо Ассемблер фирмы Borland и его возможности. Пакет Макро Ассемблер: его программные компоненты и основные функции. Расширенный Ассемблер NASM.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 16.09.2010 |
Размер файла | 20,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
2
Различные версии языка программирования Ассемблер
Содержание
- 1. Программирование на языке Ассемблер
- 2 Описание различных версий Ассемблера
- 2.1 Turbo Assembler фирмы Borland
- 2.2 Macro Assembler
- 2.3 Netwide Assembler
- 2.4 Краткое описание других видов Ассемблера Power Assembler 32
1. Программирование на языке Ассемблер
Сегодня повсюду используются такие языки высокого уровня как Бейсик, Фортран и Паскаль. Возможно, вы уже знакомы, по крайней мере, с одним языком высокого уровня. Если вы постоянно пользуетесь персональным компьютером IBM, то вы знаете, что интерпретатор Бейсика является частью системы. Зачем же возиться еще с одним языком программирования, тем более с таким, который сулит определенные трудности? Очевидно, даже располагая современными могучими языками, вы все еще нуждаетесь в Ассемблере из-за его эффективности и точности.
Ассемблерные программы могут быть очень эффективными. Из программистов, с равными навыками и способностями, работающий на языке Ассемблера создаст программу более компактную и быстродействующую, чем такая же программа, написанная на языке высокого уровня. Это так практически для всех небольших или средних программ. К сожалению, по мере возрастания размеров, программы на языке Ассемблера теряют часть своих преимуществ. Это происходит из-за необходимого в ассемблерной программе внимания к деталям. Как вы видите, язык Ассемблера требует от вас планирования каждого действия компьютера. В небольших программах это позволяет оптимизировать работу программы с аппаратными средствами. В больших же программах огромное количество деталей может помешать вам эффективно работать над самой программой, даже если отдельные компоненты программы окажутся очень неплохими. Безусловно, программирование на языке Ассемблера отвечает потребностям не каждой программы.
Программы на языке Ассемблера очень точны. Поскольку этот язык позволяет программисту непосредственно работать со всем аппаратным обеспечением, ассемблерная программа может делать то, что недоступно никакой другой программе. Несомненно, что в программировании устройств ввода-вывода, где требуется контроль над отдельными разрядами регистров устройства, программирование на языке Ассемблера - единственный подходящий выбор [6].
Ясно, что эффективность и точность языка Ассемблера дают определенные преимущества. Но его детализированность создает и некоторые проблемы. Когда же стоит избирать для программирования язык Ассемблера?
Конечно, вы должны пользоваться программами на языке Ассемблера, когда нет другого способа написать программу. Например, программисты фирмы IBM писали с использованием процедур Ассемблера все программы управления устройствами ввода-вывода для IBM PC. Для управления устройствами ввода-вывода и системой прерываний, потребовалась та точность языка Ассемблера, которую не может обеспечить ни один другой язык программирования. Аналогично, на языке Ассемблера в фирме IBM писались процедуры диагностики, которые должны проверять каждую деталь аппаратуры.
Язык Ассемблера необходим также и в тех случаях, когда главными являются рабочие характеристики программы. Это может быть время исполнения или конечный размер программы. Библиотека математических процедур Фортрана - пример программы, требующей хороших характеристик, как в отношении времени, так и размера. Математические процедуры являются частью любой программы на Фортране, поэтому они должны занимать как можно меньше места. Кроме того, эти процедуры управляют всеми математическими функциями в фортрановской программе и часто используются. Следовательно, они должны исполняться быстро.
Какая программа не подходит для языка Ассемблера? Конечно, вы можете написать на нем любую программу, однако с большой программой лучше работать в языке высокого уровня, таком как Бэйсик или Паскаль. Эти языки позволяют вам сосредоточиться на своей проблеме. Вам не приходится непосредственно иметь дело с тонкостями аппаратного оборудования и процессора. Языки высокого уровня позволяют вам отступить назад и за деревьями увидеть лес.
Очевидно далее, что вы нуждаетесь в соединении программ языка Ассемблера с программами языков высокого уровня. Здесь мы ограничимся программированием на языке Ассемблера для тех задач, для которых он хорошо подходит, таких как управление вводом-выводом.
И последнее, при программировании на языке Ассемблера и только через написание программ на этом уровне детализации вы можете понять как работает машина на самом нижнем уровне. Если вы хотите узнать о компьютере все, вы должны быть знакомы с его языком ассемблера. Единственный способ добиться этого писать программы на этом языке.
Самыми популярными на сегодняшний день являются пакеты Turbo Assembler (TASM) фирмы Borland, Macro Assembler for Windows32 (MASM32), созданный Hutch (на основе старого MASM фирмы Microsoft), а также Flat Assembler (FASM), и Netwide Assembler (NASM), развиваемый командой NASM Development Team. Все эти ассемблеры предоставляют весьма широкие возможности для программиста. На них можно писать программы как под DOS, так и под Windows [7].
Существует также множество других видов ассемблера, число которых растет. Например: CodeX Assembler, Gema Assembler, Light Macro Assembler (LASM), Lazy Assembler (LZASM), Table Driven Assembler (TDASM), NewBasic++ Assembler (NBASM), TMA Macro Assembler и др.
2 Описание различных версий Ассемблера
2.1 Turbo Assembler фирмы Borland
Турбо Ассемблер фирмы Borland представляет собой многопроходный ассемблер с разрешением опережающих ссылок, скоростью ассемблирования до 48000 строк в минуту (на компьютере IBM PS/2, модель 60), совместимый с макроассемблером фирмы Microsoft MASM и дополнительной возможностью использования режима расширенного синтаксиса. Независимо от вашего опыта в программировании вы, несомненно, оцените эти особенности, а также ряд других средств, которые значительно облегчают программирование на Ассемблере [8].
Среди таких средств можно кратко упомянуть следующие:
полная поддержка процессора 80386;
улучшенная синтаксическая проверка типов;
упрощенные директивы определения сегментов;
улучшенное управление листингом;
расширения инструкций POP и PUSH;
расширенный оператор CALL с аргументами и необязательным параметром языка;
локальные метки;
локальные идентификаторы в стеке и аргументы вызова в процедурах;
структуры и объединения;
вложенные директивы;
режим QUIRK, эмулирующий MASM;
полная отладка на уровне исходного текста с помощью Турбо отладчика;
встроенная утилита генерации перекрестных ссылок (TCREF);
файлы конфигурации и командные файлы.
Турбо Ассемблер является мощным Ассемблером, работающим с командной строкой, который воспринимает ваши исходные файлы (файлы с расширением *. asm*) и создает из них объектные модули (файлы с расширением *. obj*). После этого вы можете использовать программу-компоновщик фирмы Borland TLINK. EXE, отличающуюся высокой скоростью компоновки, для компоновки полученных объектных модулей и создания выполняемых файлов (файлов с расширением *. exe*).
Турбо Ассемблер создан для работы с процессорами серии 80х86 и 80х87 (более подробно набор инструкций процессоров серии 80х86/80х87 описан в соответствующих руководствах фирмы Intel).
Turbo Assembler, помимо полной поддержки транслятора фирмы Microsoft имеет дополнительные возможности, объединённые в режиме, названном разработчиками Ideal. Использование этого режима даёт возможность начинающему программисту применять более наглядный и простой стиль разработки программ. Более опытные программисты, пишущие на ассемблере, могут использовать такие возможности режима Ideal, как вложенные структуры, объединения.
Важной особенностью режима 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, который будет являться основным инструментом при изучении форматов команд, их кодирования, а также представления переменных программы в памяти.
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].
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].
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].
Подобные документы
Изучение некоторых аспектов языка Ассемблера и ЭВМ в целом. Построение алгоритмов решения поставленной задачи на языках программирования Си, Ассемблер УМ и IBM PC. Составление блок-схем решений и написание программ на каждом из перечисленных языков.
курсовая работа [691,5 K], добавлен 20.10.2014Ассемблер как символический аналог машинного языка. Архитектура микропроцессора: организация памяти, способы адресации операндов, правила использования регистров. Текст программы. Этапы программирования на ассемблере, алгоритмы выполнения задач.
контрольная работа [515,1 K], добавлен 20.01.2016Изучение команд для обработки строк, приемов, используемых в работе со строками, приемы их использования. Команды префикса повторения. Приемы программирования на языке Ассемблера с использованием подпрограмм, работа с командами вызова подпрограмм.
методичка [121,0 K], добавлен 18.12.2011Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.
курсовая работа [1,3 M], добавлен 02.12.2009Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.
курсовая работа [33,3 K], добавлен 08.11.2011Эволюция языков программирования от низкого уровня до современности. Языки программирования второго поколения - ассемблер. Императивные, функциональные, логические и объектно-ориентированные языки. Машинная независимость. Парадигмы программирования.
презентация [353,5 K], добавлен 14.10.2013Сведения о интерполяторе. Принцип работы схемы сложения и вычитания единицы. Выбор элементной базы. Расчет эквивалентной передаточной функции схемы. Создание программы в коде ISO 7bit и ее реализация на низкоуровневом языке программирования Ассемблер.
курсовая работа [363,2 K], добавлен 15.04.2014Изучение особенностей операционной системы, набора программ, контролирующих работу прикладных программ и системных приложений. Описания архитектуры и программного обеспечения современных операционных систем. Достоинства языка программирования Ассемблер.
презентация [1,3 M], добавлен 22.04.2014Запуск на инструментальном компьютере интегрированной системы программирования "Турбо Ассемблер-AVR" (CasmAVR.exe). Создание нового файла и сохранение его с именем demo2.asm. Создание демонстрационной программы с использованием редактора текста.
лабораторная работа [1,2 M], добавлен 26.06.2013Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.
отчет по практике [139,1 K], добавлен 03.06.2011