Содержание
Содержание.. 1
Введение.. 2
Глава 1. Теоретическая часть. 3
Использование Ассемблера для разработки Windows-приложений. 3
Глава 2. Практическая часть.. 6
Исходный код программы.. 7
Выводы... 13
Список использованных источников.. 14
Введение
Эволюция средств проектирования программ в течение последних десятилетий способна удивить любого человека, занимающегося разработкой программного обеспечения. Особенно это касается написания программ для операционных систем семейства Windows. Современные инструментальные средства настолько развиты, что разработчик программного обеспечения может получить готовую программу с помощью нескольких щелчков мышью. Огромное количество книг, статей и исходных текстов программного кода посвящено проектированию программ на С, Pascal, Basic и других языках программирования. Язык низкого уровня — язык ассемблера — после "смерти" MS-DOS, казалось, доживает последние дни. Но вопреки прогнозам он не сошел с арены и продолжает весьма широко использоваться при разработке программ. В чем же секрет живучести этого языка?
Ответ довольно прост и может быть сформулирован одним предложением: язык ассемблера — это язык, на котором "говорит" процессор, и исчезнуть он может только вместе с исчезновением процессоров! По этой же причине ассемблер имеет одно фундаментальное преимущество перед языками высокого уровня: он самый быстрый. Большинство приложений, работающих в режиме реального времени, либо написаны на ассемблере, либо используют в критических участках кода ассемблерные модули.
Нередко можно слышать утверждения о том, что процесс разработки программ на языке ассемблера слишком трудоемок и отнимает массу времени. Еще одним препятствием для работы с ассемблером считают его сложность. И, наконец, в качестве аргумента приводится утверждение, что разработка приложений на ассемблере сильно затруднена из-за отсутствия современных инструментальных средств для проектирования и отладки.
Такие утверждения, вообще-то, не соответствуют действительности. Язык ассемблера не сложнее других языков программирования и довольно легко осваивается как опытными, так и начинающими программистами. Кроме того, в последние годы появились очень мощные инструментальные средства разработки программ на ассемблере, и это вынуждает по-другому взглянуть на процесс разработки программ на этом языке. Среди таких инструментальных средств проектирования можно назвать макроассемблер MASM32, AsmStudio и NASM. Эти и другие аналогичные инструменты проектирования сочетают в себе гибкость и быстроту ассемблера и современный графический интерфейс. Многочисленные библиотеки функций, разработанные для ассемблера, приблизили этот язык по своим функциональным возможностям к средствам проектирования приложений на языках высокого уровня. Поэтому в настоящее время противопоставление ассемблера языкам высокого уровня не имеет под собой реальных оснований.
Глава 1. Теоретическая часть
Использование Ассемблера для разработки Windows-приложений
Несмотря на то, что ассемблер воспринимается многими программистами только как вспомогательное средство для улучшения программ, его значение как самостоятельного средства разработки высокоэффективных приложений в последнее время очень изменилось.
До сих пор существует некий стереотип, касающийся разработки приложений на ассемблере. Среди многих программистов, пишущих на языках высокого уровня, бытует мнение о сложности ассемблера, плохой структурируемости программного обеспечения и плохой переносимости кода при переходе на другие платформы. Возможно, многие помнят разработку программ на ассемблере в MS-DOS, что действительно требовало немалых усилий. Кроме того, отсутствие в то время современных средств программирования на ассемблере замедляло разработку сложных проектов.
В последнее время ситуация изменились благодаря появлению принципиально новых и эффективных средств быстрой разработки на языке ассемблера. Специально для этого были разработаны мощные средства быстрого проектирования (Rapid Application Development — RAD), такие как MASM32, Visual Assembler, RADASM. Размер и быстродействие оконного приложения SDI (single-document interface), написанного на ассемблере, просто впечатляет.
Такие средства разработки имеют, как правило, компиляторы ресурсов, большие библиотеки готовых к использованию функций и мощные средства отладки. Можно смело утверждать, что разработка программ на ассемблере стала столь же легкой, как и на языках высокого уровня.
Основная причина, по которой ассемблер не применялся массово для разработки программ, — отсутствие средств быстрого проектирования — исчезла. Какие приложения можно проектировать на ассемблере? Проще ответить на другой вопрос — что не следует писать на ассемблере? Небольшие и средние по объему 32-разрядные приложения для Windows можно целиком написать на ассемблере. Однако если разрабатывать сложную программу, требующую применения самых современных технологии, то лучше использовать языки высокого уровня с последующей оптимизацией отдельных участков кода на ассемблере.
Существует еще одна проблема использования ассемблера, связанная с тем, что этот язык рассчитан на разработку процедурно-ориентированных приложений и не использует методы объектно-ориентированного программирования (ООП). Именно это приводит к некоторым ограничениям при использовании ассемблера. Тем не менее это никак не мешает применять язык ассемблера для написания классических Windows-приложений процедурно- ориентированного типа.
Современные средства разработки программ на ассемблере не только позволяют создать графический интерфейс пользователя, но и сохраняют фундаментальное преимущество ассемблера: фантастически малый размер исполняемого модуля. Короткие быстрые приложения на ассемблере находят применение там, где размеры кода и его быстродействие являются критическими параметрами. Сферами применения таких приложений являются системы реального времени, системные утилиты и программы, а также драйверы устройств.
Программы на ассемблере управляют как периферийным оборудованием персонального компьютера (ПК), так и нестандартными устройствами, присоединенными к ПК. Минимальные размеры программного кода обеспечивают высокое быстродействие работы таких устройств. Приложения реального времени используются повсеместно в системах управления в промышленности, научных и лабораторных исследованиях, в военных разработках.
Особенность системных программ и утилит состоит в том, что они очень тесно взаимодействуют с операционной системой, и скорость выполнения таких приложений может существенно повлиять на общую производительность всей системы. Это в значительной степени относится и к разработке драйверов периферийных устройств компьютера и системных служб. Средства разработки на ассемблере позволяют создавать и быстрые утилиты командной строки (консольные приложения). Использование в таких утилитах системных вызовов Windows позволяет выполнить очень многие сложные функции (копирование файлов, функции поиска и сортировки, обработка и анализ математических выражений и т.д.) с очень высоким быстродействием.
Другой важной областью применения ассемблера является разработка драйверов нестандартных и специализированных устройств, управляемых при помощи ПК. В таких случаях использование программ на языке ассемблера будет очень эффективным. Примеров такого применения ассемблера можно привести много. Это и системы обработки данных на базе ПК с использованием выносных устройств, одноплатные компьютеры с флэш-памятью, системы диагностики и тестирования различного оборудования.
Необходимо также упомянуть еще об одном аспекте применения языка ассемблера, достаточно экзотическом, но тем не менее используемом. Основная программа пишется на ассемблере, а вспомогательные модули — на любом другом языке, например на С++ или Pascal. При этом основная программа использует, как правило, мощные библиотечные функции языка высокого уровня, например математические или строковые. Кроме того, если для разработки интерфейса используются вызовы WIN API (Application Programming Interface), то программа получится очень мощной. Конечно, написание таких программ требует от программиста незаурядных знаний ассемблера и языков высокого уровня.