Сайт о том как делаются сайты



   порно красивые жопы           Русские транссексуалы e-batsa  Find best deluxe coupon Codes

Web-разработка с Macromedia Studio MX

Те, кто пережил эпоху раннего развития Web, вспоминая, называют ее "Wild Wild Web". Тогда стандартов не существовало. Не было и графических редакторов. Мы учились всему на собственном опыте, а наши клиенты оплачивали наше обучение. Эти дни канули в Лету.
Web-пространство давно уже стало универсальным носителем информации, а следовательно, работа в нем требует настолько серьезного подхода и тщательного планирования, насколько позволяет бюджет, выделенный клиентом на создание Web-узла. В последние несколько лет требования к Web-дизайну определялись понятием торговая марка. Клиенты требовали, чтобы все, представляющее их на рынке, имело корпоративный вид. В наше время клиенты участвуют в каждом этапе создания узла. Теперь стало недопустимым выплеснуть на клиента совокупность идей, а после погрузиться в автономную работу. Теперь, для того чтобы называться Web-дизайнером, не достаточно просто купить компьютер и установить на нем набор приложений. Причина в том, что процесс создания Web-узлов значительно усложнился, а скорость изменений в нем возросла. Короче говоря, Web-дизайн стал профессией, что привело к разделению процесса создания Web-узла на планирование и реализацию.
Даже более впечатляющим был рост рабочих групп. Когда все было проще и графические Web-броузеры только начинали заявлять о себе, группа разработчиков из одного-двух человек считалась нормой. С ростом электронной коммерции и утверждением Web как главного двигателя продвижения товаров и услуг на рынке техническая и творческая нагрузка на Web-разработчиков стала нарастать. Пропорционально рос и объем работы, так что скоро справляться с ним одному человеку стало не под силу. В современной динамичной среде разработки с четко очерченными рамками бюджета и со строгими сроками такие проекты способны выполнить только высокопроизводительные команды специалистов, способные вписаться в жесткие рамки графика работ.

Планирование узла
Те, кто пережил эпоху раннего развития Web, вспоминая, называют ее "Wild Wild Web". Тогда стандартов не существовало. Не было и графических редакторов. Мы учились всему на собственном опыте, а наши клиенты оплачивали наше обучение. Эти дни канули в Лету. Web-пространство давно уже стало универсальным носителем информации, а следовательно, работа в нем требует настолько серьезного подхода и тщательного планирования, насколько позволяет бюджет, выделенный клиентом на создание Web-узла. В последние несколько лет требования к Web-дизайну определялись понятием торговая марка. Клиенты требовали, чтобы все, представляющее их на рынке, имело корпоративный вид. В наше время клиенты участвуют в каждом этапе создания узла. Теперь стало недопустимым выплеснуть на клиента совокупность идей, а после погрузиться в автономную работу. Теперь, для того чтобы называться Web-дизайнером, не достаточно просто купить компьютер и установить на нем набор приложений.

Планирование узла
Определение узла
Навыки, необходимые для создания узла
Манифес
Планирование содержания
Использование старых данных
Что нужно создать
Формирование команды
Члены команды
Создание графика работ

Управление содержанием
Если у вас нет содержания, то нет и узла. Если у вас есть правильное содержание и вы им грамотно управляете, ваши шансы на успешное выполнение проекта несоизмеримо увеличиваются. Что следует понимать под "правильным содержанием"? Это — весь материал страницы или узла, который соответствует целям и задачам клиента. Нельзя забывать, что Web-дизайнеры работают в команде. В данном случае взаимодействие членов команды особенно важно. Используя панель Assets и операции Check In/ Check Out в программе Dreamweaver MX, а также ее функции Cloaking, Design Notes и Reports, команда будет обеспечена полным набором средств кооперации.

Управление содержанием
Использование средств управления
Папки
Управление материалами мультимедиа
Использование средств управления файлами в Dreamweaver MX
Определение локального узла в Dreamweaver MX
Определение удаленного узла Dreamweaver MX
Установка привилегий Check In/Check Out
Использование примечаний
Создание рабочих отчетов

Совместная работа
По своей сути Web — это средство передачи информации. Web-страницы передают информацию броузеру, который в некоторых случаях передает информацию на страницу. Важным аспектом разработки любой Web-страницы является передача информации. В предыдущей главе вы узнали о множестве средств и функций, которые Dreamweaver MX и Fireworks MX предлагают разработчикам для управления содержанием. В этой главе речь пойдет об обмене информацией. От этого процесса зависит, как взаимодействуют члены команды, как руководитель проекта обменивается информацией с клиентом, как клиент дает свое согласие на переход команды к новому этапу работ над проектом.

Совместная работа
Sitespring для руководства проектом
Короткое путешествие по Sitespring
Установка правил в Sitespring
Добавление нового пользователя
Создание и изменение клиента в Sitespring
Установка и использование модуля My Projects
Модуль Discussion
Sitespring и обмен информацией
Узел проекта

Проверка своих идей на модели узла
Процесс Web-дизайна начинается с того, что программист садится за стол и излагает свои идеи на листе бумаги. После этого он думает над тем, как будут работать и где будут расположены элементы навигации. Этот чистый лист бумаги заполняется квадратиками, показывающими переходы между страницами. Такой же лист бумаги можно использовать для создания эскизов дизайна страниц или прорисовки областей размещения динамического содержания. Задача с первого взгляда кажется устрашающей. Так оно и есть на самом деле. Однако это — самое значимое время, вложенное в проект. Именно на этом этапе происходит большая часть споров и обсуждений, и именно в это время дизайнер часто устремляет взгляд в пустоту и размышляет о проекте, да и о жизни вообще.

Проверка своих идей на модели узла
Эскиз
Модели навигации
Линейная модель навигации
Иерархическая модель навигации
Модель "звезда"
Модель полной навигации
Как выбрать подходящую модель
Конструирование информационных страниц
Создание эскиза

Каркасная модель узла
Перенос узла на другой носитель информации включает в себя множество вопросов: от общей композиции элементов до цветовой гаммы. На эти вопросы редко обращают внимание при создании карты узла. Каркасная модель узла переводит разработчика с макроуровня (узла) на микроуровень (страницу). Ошибки в организации информации сначала могут быть незаметными, однако со временем они начинают проявляться. Иногда их обнаружение требует внесения больших изменений в схему навигации и в компоновку страницы. Задержка с решением этих вопросов на ранней стадии выполнения проекта ведет к дополнительным расходам в будущем.

Каркасная модель узла
Определение каркасной модели
Планирование элементов навигации
Кнопки
Меню
Ссылки
Создание каркасной модели узла JCT
Символы
Экземпляры
Dreamweaver MX для проверки навигации

Создание динамических страниц
Одной из главных особенностей Dreamweaver MX является возможность создания динамических страниц без знания каких-либо языков программирования. Содержание динамических страниц формируется по запросу пользователя. Итак, больше не нужно создавать множество страниц, варьируя их содержание в зависимости от потребности того или иного пользователя. Теперь требуемое содержание может загружаться в небольшое число шаблонов непосредственно с сервера. Динамическое содержание переводит Web-узлы совершенно в иное измерение, в котором информация, отображаемая пользователю, может постоянно обновляться. Преимуществом такого подхода является то, что громадный объем данных может обслуживаться всего несколькими Web-страницами. Например, если некий фотограф решит рассортировать свои работы по категориям, для всех категорий потребуется всего одна страница. Когда страница вызывается из броузера, в нее загружается с сервера необходимое содержание.

Создание динамических страниц
Планирование данных
Быстрое и эффективное представление данных
Создание базы данных
Создание баз данных в Microsoft Access
Выходим в Internet с помощью ColdFusion
Создание пробного шаблона Dreamweaver MX
Создание страницы динамических данных

Планирование внешнего вида страниц
Любой элемент Web-страницы либо улучшает, либо ухудшает общее впечатление пользователя. Хотя в первую очередь бросаются в глаза такие упущения, как непонятные элементы навигации, орфографические ошибки и нерациональное размещение материала, значительную роль играют также цветовая гамма и используемые стили текста. Опыт показывает, что люди, в основном, бороздят Internet не ради развлечения. Главным их занятием на Web-страницах является чтение текста. Рисунки и анимация могут иллюстрировать текст, однако основная информация заключена в словах. Поэтому очень важно сделать текст на странице как можно более разборчивым и понятным.

Планирование внешнего вида страниц
Шрифты
Обзор шрифтов
Шрифты, очки и семейства
Понятность и разборчивость
Выбор и использование шрифта
Web-шрифты
Технологии цифровых шрифтов
Шрифты и Macromedia MX Studio
Цвет

Планирование узла
Итак, вы прошли все этапы проекта: от концепции до каркасной модели. Теперь настало время создать прототип узла. На этом этапе надо проверить основные функции узла, его содержание и схему навигации. Наше движение в ходе реализации этого этапа будет более поступательным, чем при создании сложной системы навигации. Мы приведем .узел к тому внешнему виду, который больше всего будет соответствовать требованиям клиента. Дизайнеры на этом этапе будут работать над созданием, системы меню, всплывающих экранов и прочими элементами узла. По мере разработки узла дизайнеры должны тестировать результат своей работы, используя при этом разные широко распространенные броузеры (различные версии Netscape, IE и т.п.). Также они должны заняться кроссплатформенными вопросами: как отображаются рисунки, как работают JavaScript, CSS и HTML.

Планирование узла
Создание прототипа в Macromedia MX Studio
Создание прототипа во FreeHand
Оптимизация документов FreeHand в Fireworks MX
Сборка прототипа в Dreamweaver MX
Резюме

Работа с рисунками в Fireworks MX
Fireworks был одним из тех странных продуктов, которые рынок долго не принимал. Одни по-прежнему работали с Photoshop, другим это приложение казалось просто игрушкой. Все это продолжалось до тех пор, пока обе группы не поняли, что главным назначением этого приложения является создание и оптимизация рисунков для Web. В то время Fireworks представлял собой странный гибрид средств для векторной и растровой графики, который, однако, позволял делать прекрасные вещи. Спустя годы Fireworks стал составной частью пакета Macromedia MX Studio.

Работа с рисунками в Fireworks MX
Векторы
Растры
Форматы
PNG
GIF
JPEG
Цветовая коррекция в Fireworks
Цветовая коррекция рисунка Fireworks MX
Инструменты для работы с рисунком

Цифровое видео и Flash MX
До. выхода в начале 2002 года версии Flash MX венцом желаний Flash-разработчиков была возможность воспроизводить видео в приложении Flash. В более ранних версиях продукта эту функцию можно было считать в лучшем случае недоработанной (многие даже скажут, что примитивной). В то время во Flash можно было загрузить видео, но управлять им можно было только случайным образом, поэтому этой возможностью практически никто не пользовался. В лучшем случае видео можно было импортировать и быть счастливым, если получилось, что все его кадры преобразовались в кадры Flash. По необходимости кадры можно было трассировать и удалять.

Цифровое видео и Flash MX
Обзор цифрового видео
Вопросы цифрового видео
Сжатие
Скорость передачи данных
Подготовка ленты в Squeeze
Импорт видео во Flash MX
Вставка видео
Связывание видео
Параметры видео во Flash MX

Создание штриховой графики для Web
Часто можно услышать вопрос: "Что такое штриховая графика?" Это — все, что можно нарисовать на листе бумаги карандашом или ручкой. К категории штриховой графики относятся такие элементы, как логотипы, карты, иллюстрации и даже шрифты. Хотя большая часть этой работы происходит в цифровом формате, художники и иллюстраторы обычно начинают процесс с изложения своих идей на доске или листке бумаги. Многие Web-дизайнеры в настоящее время оплакивают тот факт, что Studio взяло на себя большую часть работы по созданию приложений. Они уже видят программиста и разработчика в роли придатка компьютерного приложения. И сильно ошибаются. Пакет Studio предлагает разработчику внушительный набор инструментов, начиная от обычного карандаша и заканчивая множеством векторных встраиваемых модулей и спецэффектов, которые вряд ли где можно встретить еще.

Создание штриховой графики для Web
Типы графических файлов
Векторная графика
Растровая графика
Создание штриховой графики в пакете MX Studio
Создание талисмана JCT
Векторизация растровых рисунков во FreeHand
Спецэффекты Fireworks MX
Панель Effects
Резюме

Работа с текстом
Внешний вид текста имеет огромное значение для восприятия Web-страницы. Правильный выбор шрифта и размера символов, цвета и других эффектов может повлиять на восприятие сообщения сильнее, чем серии рисунков и фотографий. В данной главе мы поговорим о том, как с помощью форматирования текста подчеркнуть то или иное слово. Важность этого момента проявляется на всех этапах разработки Web-страницы — от создания логотипа до оформления текстовых экранов, — и делается это с помощью специальных средств программ Flash, FreeHand и Fireworks.

Работа с текстом
Прокручиваемые текстовые поля в Flash MX
Компонент ScrollBar
Компонент ScrollPane
Форматирование текста в Fireworks MX
Создание логотипа
Создание начальной страницы
Настройка интервала и опорной линии
Экспорт в Dreamweaver MX
Текстовые эффекты в Fireworks

Создание динамических Web-узлов
За последние несколько лет процесс создания Web-узлов претерпел значительные изменения. Если раньше типичный Web-узел был статическим набором информации, вроде журнала, то современный Web-узел — это динамическое приложение, работающее в реальном времени. Пакет Macromedia Studio MX содержит средства для создания таких Web-узлов. Современные Web-узлы стали динамическими, а это означает, что в зависимости от запроса их содержание передается броузеру или Flash-приложению. Содержание динамически встраивается на Web-страницу непосредственно в процессе передачи. Это фундаментально отличается от статических Web-страниц, содержание которых встраивается дизайнером в процессе разработки. Распространение динамических Web-узлов и развитие технологии их создания оказали влияние на команды разработчиков, создающих такие Web-узлы. В эпоху статических Web-узлов творчество команды разработчиков зависело от содержания создаваемых страниц. Члены команды, задействованные в творческом процессе, создавали рисунки, текст, разрабатывали внешний вид и управляющие элементы страницы.

Создание динамических Web-узлов
Даешь динамику!
Определение содержания
Создание базы данных
Создание шаблонов для содержания
Программирование
От статики к динамике: создаем Web-узел JCT
Корпоративный вид
Создание навигационной панели
JCT становится динамическим

Анимация в Web
Качество анимации в Web пока что оставляет желать лучшего. От всех этих мигающих огоньков, которыми украшают, как елочными игрушками, семейные страницы ко дню Благодарения, от примитивных мультиков, взятых из готовых коллекций в той же Internet, глаза лезут на лоб. Собираясь украсить анимацией свой Web-узел, первым делом спросите себя: "А нужно ли мне все это?" Недостаточно продуманная анимация может перегрузить Web-узел и сделать его загрузку слишком медленной. Можете быть уверены, что плохую анимацию посетители запомнят в первую очередь. Например, в те дни, когда технология Flash только набирала обороты, почти на каждой Web-странице можно было увидеть вращающийся глобус.

Анимация в Web
Покадровое описание
Формат и вид
Анимация в Fireworks MX
Инструменты анимации
Работа с кадрами
Движение объекта
Управление анимацией
Экспорт анимированного GIF-файла
Оптимизация анимации

Создание Web-страниц с помощью Flash
Если сравнить приложения, которые произвели революцию в своей области, то Flash, безусловно, окажется на первом месте. Это приложение произвело в среде Web-разработчиков эффект, подобный землетрясению, и мы до сих пор ощущаем его последствия. Первые версии приложения не были особенно замечены, но способность создавать небольшие по объему анимационные ролики для Web-страниц или полностью интерактивные страницы произвела должное впечатление. С появлением 3-й версии все изменилось. Неожиданно для многих разработчиков появилась возможность создавать анимацию и интерактивность с помощью простого и знакомого интерфейса, и повсюду на Web-узлах стали появляться анимационные ролики. В 4-й версии появился специальный язык — Actionscript, и технология Flash стала серьезным инструментом для создания не только анимации, но и всего, что движется по экрану или как-то общается с пользователем. Фактически эта технология расширила наши представления о том, что можно делать в ограниченном пространстве Web. Повсюду появились новые игры и динамическое содержание, и возникла новая профессия — разработчик Flash.

Создание Web-страниц с помощью Flash
Покадровое описание
Установка сцены для Flash MX
Установка цвета фона
Создание и сборка объектов во Flash MX
Подготовка рисунков Fireworks для Flash MX
Подготовка рисунков для экспорта во Flash MX
Подготовка Flash-анимации
Подготовка сцены
Действия, управляющие анимацией

Создание анимации для Web-узла JCT
В данной главе рассказывается, как создать два ролика для Web-узла JCT и как с помощью Flash MX создать особые кнопки, которые воспроизводят ролик внутри себя при наведении на них курсора. Анимация, которой мы сейчас займемся, будет служить как бы приглашением на сайт и будет воспроизводиться на каждой его странице. Создание Flash-кнопки аналогично созданию простейшей мультипликации. При воспроизведении ее выводится последовательность неподвижных рисунков, что создает иллюзию движения при наведении курсора на кнопку или после щелчка на ней. В этой главе мы не раз повторим, что нужно много раз подумать, прежде чем приступить к созданию анимации. Такой аргумент, как "если есть инструмент, то нужно им воспользоваться", не пригоден в сегодняшнем Web-дизайне. Если вы предусмотрите в бюджете создание анимации, то будьте готовы к тому, что у вас потребуют обоснования такого решения.

Создание анимации для Web-узла JCT
Привлекающий экран
Создание танцующего человечка
Создание танцора во Flash MX
Создание анимированного GIF для страниц
Создание анимированных рисунков во Flash MX

Создание элементов навигации
В этой главе описывается, как с помощью пакета Studio MX создать кнопки: круглые, квадратные, мигающие и др. Кроме того, мы займемся созданием меню — выпадающих, разворачивающихся, и даже таких, которые с виду похожи на кнопки. Мы рассмотрим множество способов создания кнопок, но сначала вы должны осознать, как много зависит от того, хорошо ли сконструированы кнопки вашего Web-узла. Ведь кнопки и другие элементы навигации — это то, с чем в первую очередь сталкивается посетитель вашего узла, и если разобраться в назначении той или иной кнопки ему не удается сразу, то он может и не продолжать попыток, а просто уйти с вашего узла. Нам всем приходилось встречать коммерческие Web-узлы, на которых кнопка передачи была выполнена так, что посетителю оставалось только закрыть страницу и поискать другой узел.

Создание элементов навигации
Создание кнопок в Fireworks MX
Создание символа кнопки
Редактор кнопок
Кнопки во Flash MX
Создание кнопки во Flash MX
Создание функций кнопки
Создание кнопки Aqua Interface
Работа с кнопками в Dreamweaver MX
Flash-кнопки в Dreamweaver MX

Этапы
Мы рассмотрели много вопросов, связанных с созданием разных элементов страниц, начиная с планирования содержания и заканчивая созданием графических рисунков. В оставшейся части книги мы рассмотрим, как собрать материалы в динамические Web-страницы; таким образом, наша работа подошла к некоторому важному этапу. На этом этапе работы нам не помешает взглянуть на проделанный путь. Мы можем оценить принятые ранее решения и подумать о том, не могли ли мы сделать это более эффективно. До сих пор мы много внимания и сил уделяли созданию средств навигации. Панель навигации появляется у нас практически на каждой странице Web-узла JСТ. Мы приняли несколько важных решений относительно этой панели, но теперь хотим повторить эти размышления вместе с вами.

Этапы
Создание панели навигации для JCT
JPG или GIF
Реализация решения использовать GIF-формат
Почему мы не сделали человечка во FreeHand
Достоинства и недостатки элементов навигации
Отличия меню Fireworks и Flash
Динамические страницы во Flash MX
Новый стиль работы
Резюме

Создание динамических страниц в Dreamweaver MX
Как уже говорилось в главе 13, при использовании шаблонов процесс создания страниц узла протекает более гладко. Одним из главных достоинств, с точки зрения дизайнера, является то, что шаблон представляет собой заблокированную страницу. На странице можно создать редактируемые области и определить список лиц, имеющих к ним право доступа, — редакторов, дизайнеров, писателей, программистов и др. Для нашего Web-узла JCT мы создадим "скелет", на основе которого будут создаваться страницы узла. Как вы уже догадались, шаблон определяет компоновку страницы. Различие между шаблоном и обычной страницей HTML довольно расплывчатое. Например, Web-узел JCT впоследствии может обрасти страницами, посвященными носкам, украшениям, скейтбордам и роликовым конькам. Если страницы делать статическими, для каждой группы товаров придется создавать ее конструкцию с нуля, каждый раз наполняя ее ссылками на другие страницы. Естественно, такой процесс будет достаточно утомительным и малоэффективным.

Создание страниц в Dreamweaver MX
Создание панели навигации
Сборка навигации из графических фрагментов
Создание панели навигации
Вставка перекрывающих рисунков и ссылок
Создание панели навигации методом Studio MX
Создание шаблона ColdFusion MX
Создание динамических страниц на ColdFusion

Связь с ColdFusion MX
Предполагается, что вы уже ознакомились с основами создания динамических страниц, описанными в главе 6. Используя три страницы, созданные на основе шаблонов ColdFusion MX, в этой главе будет показано, как загрузить на них динамическое содержание из базы данных, создание которой также описывалось в главе 6. Эта глава продолжает тему, начатую в предыдущей главе. В настоящей главе будет показан стиль работы, характерный для пакета Studio MX. Если вспомнить, с чего начиналась Internet, то окажется, что она изначально создавалась как механизм передачи данных, позволяющий ученым обмениваться научными работами. Тогда Web представляла собой статичное информационное средство; для нее были характерны страницы, содержащие текст. Каждая страница была обособленной и не связывалась с другими страницами Web-узла.

Связь с ColdFusion MX
Подготовка динамического содержания
Расширение свойств базы данных Access
Связь Dreamweaver MX и ColdFusion MX
Связывание БД со страницей ColdFusion
Создание динамических текстовых полей Flash
Преобразование списка товаров в шаблоны
Резюме

Оптимизация рисунков и пакет Studio MX
Сегодня перемещение по Web-пространству так же естественно для конечного пользователя, как и пользование телефоном или телевизором. Однако при этом от пользователя остается скрытой та часть работы (о которой велась речь в этой книге), которая касается работоспособности Web-узла на различных используемых , сегодня платформах. Исключением из этого правила не является и адаптация рисунков к работе на различных платформах. Оказывается, что не все пользователи смогут увидеть созданные вами прекрасные рисунки. И здесь не поможет то, что вы ограничились всего тремя основными графическими форматами: GIF, JPG и PNG. Даже в этом случае только форматы GIF и JPG будут приемлемыми для всех. Формат PNG появился слишком поздно, и станет общепризнанным только после того, как вышедшие до его появления броузеры будут выброшены на свалку истории Internet.

Оптимизация рисунков и пакет Studio MX
Оптимизация рисунков во FreeHand
Изменение пространства цветов во FreeHand
Оптимизация векторов во FreeHand
Связь между приложениями FreeHand и Fireworks
Форматы файлов для уменьшения их размеров
Оптимизация рисунков в Fireworks MX
Optimize для растровой графики
Гамма в приложении Fireworks MX
Оптимизация рисунков в формат GIF

Оптимизация узла и программ
Чаще всего Web-дизайнеры, пользующиеся автоматической генерацией HTML-кода в пакете MX Studio, жалуются на то, что Fireworks MX и Dreamweaver MX создают программы-заготовки (ugly code). Этим термином они хотят подчеркнуть, что создаваемые программы являются сложными и слишком длинными. Хорошей иллюстрацией данного высказывания является код, создаваемый другим приложением от Macromedia— Macromedia Director. Это приложение имеет собственный язык управления интерактивностью, называемый Lingo.

Оптимизация узла и программ
Решения CSS в Dreamweaver MX
Преимущества взаимосвязи Fireworks MX и Dreamweaver MX
Работа с JavaScript и HTML
Исправление кнопок Flash
Работа Dreamweaver MX и Fireworks MX
Использование редакторов с Dreamweaver MX
Резюме

Избавляемся от ошибок и выпускаем Web-узел в свет
Итак, Web-узел можно считать готовым. Теперь перед командой встает естественный вопрос: "А работает ли он?" Ответ на него не так очевиден, как кажется на первый взгляд. Может, вы и тестировали страницы по мере их создания в Fireworks и Dreamweaver MX с помощью броузера, однако полноценным тестированием узла это назвать нельзя. Во многих отношениях тестирование узла знаменует собой возврат к точке зрения на лес, а не на отдельные деревья в нем. До этого момента мы концентрировали внимание на отдельных фрагментах узла. Нас мало интересовало, как из них складывается общая картина. Теперь пришло время протестировать узел в целом и убедиться, что все в нем (именно все!) работает так, как планировалось.

Выпускаем Web-узел в свет
Понятие процесса тестирования
Работа с устаревшими броузерами
Преобразование страниц в Dreamweaver MX
Поиск "висячих" ссылок
Альфа-тестирование
Кому поручить тестирование
Что искать
Бета-тестирование
Кому поручить тестирование

Cамоучитель по Assembler

В настоящее время на персональных компьютерах типа IBM PC используются в основном два класса операционных систем (оба - разработки корпорации Microsoft): однозадачная текстовая система MS-DOS и многозадачная графическая система Windows. Операционная система MS-DOS является системой реального режима; другими словами, она использует только средства процессора 8086, даже если она установлена на компьютере с процессором Pentium. Система Windows - это система защищенного режима; она значительно более полно использует возможности современных процессоров, в частности, многозадачность и расширенное адресное пространство. Разумеется, система Windows не могла бы рабо-тать с процессором 8086, так как в нем не был реализован защищенный режим.
Соответственно двум типам операционных систем, и все программное обеспечение персональных компьютеров подразделяется на два класса: программы, предназначенные для работы под управлением MS-DOS (их часто называют приложениями DOS) и программы, предназначенные для системы Windows (приложения Windows). Естественно, приложения DOS могут работать только в реальном режиме, а приложения Windows - только в защищенном.
Таким образом, выражения "программирование в системе MS-DOS", "программирование в реальном режиме" и "программирование 86-го процессора" фактически являются синонимами. При этом следует подчеркнуть, что хотя процессор 8086, как микросхема, уже давно не используется, его архитектура и система команд целиком вошли в современные процессоры. Лишь относительно небольшое число команд современных процессоров специально предназначены для организации защищенного режима и распознаются процессором, только когда он работает в за щенном режиме. Поэтому изучение языка ассемблера целесообразно начинать с изучения архитектуры процессора 8086 или, точнее, того гипотетического процессора, который как бы объединяет часть архитектур средств современных процессоров, предназначенных для использования в реальном режиме, и соответствующих архитектуре процессора 8086. будем называть этот гипотетический процессор МП 86. Изучению архитектуры и программирования МП 86 посвящены первые три главы.
Деление программ на приложения DOS и приложения Windows исчерпывают вопроса о возможных типах программ. Дело в том, что ряд дополнительных средств, имеющихся в современных процессорах, вполне можно использовать и в реальном режиме (хотя сама операционная система MS-DOS, разработанная еще в эпоху процессора 8088, ими пользуется). К этим средствам относится расширенный состав команд процессоров и, главное, их 32-разрядная архитектура.

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

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

Память и процессор
Байт, слово и двойное слово.
Нумерация байтов в многобайтовых данных.
Образование физ. адреса из сегментного
Распределение адресного пространства
Регистры процессора
Сегментная структура программ
Образ программы в памяти.
Стек
Система прерываний

Основы программирования
Рассматривая листинг, можно отметить ряд полезных моментов общего характера. Предложения программы с операторами assume, segment, ends, end, как уже отмечалось ранее, не транслируются в какие-либо машинные коды и не находят отражения в памяти. Они нужны лишь для передачи транслятору служебной информации о способе трансляции команд (assume), границах сегментов (segment и end) и строке, на которой следует завершить обработку исходного текста (end).

Листинг трансляции программы
Расположение сегментов программы в памяти
Начальный кадр отладчика с текстом
Окно процессора с внутренними окнами.
После выполнения двух первых команд.
Дополнительное меню окна дампа памяти.
Представление данных
Образование отрицательных чисел
Представление 16-битовых чисел
Представление 8-битовых чисел

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

Организация приложений MS-DOS
Циклы и условные переходы
Обработка строк
Таблица 3.1.
Использование подпрограмм
Состояние стека в подпрограмме
Двоично-десятичные числа
Алгоритм работы подпрограммы conv.
Программирование аппаратных средств
Регистр маски ведущего контроллера прерываний.

Расширенные возможности
Операционная система MS-DOS, язык ассемблера МП 86 и методы программирования микропроцессоров корпорации Intel разрабатывались применительно к 16-разрядному процессору 8086 и тому режиму, который впоследствии получил название реального. Появление процессора 80386 знаменовало собой начато нового этапа в развитии операционных систем и прикладного программирования - этапа многозадачных графических операционных систем защищенного режима типа Windows и 32-разрядных прикладных программ.

Архитектурные особенности
Основные регистры 32-разрядных процессоров.
Дополнительные режимы адресации
Адресация 32-разрядных регистров
Адресация 16-разрядных регистров.
32-разрядные процессоры в программировании
Основы защищенного режима
Дескрипторы сегментов и их селекторы.
Цепочка преобразований виртуального адреса
Страничная трансляция адресов.

Приложение
Ниже приводится алфавитный перечень команд процессоров Intel с кратким описанием действия каждой команды и примерами ее использования. В разделах статей, начинающихся с обозначения 386+, описываются отличия действия рассматриваемой команды в современных 32-разрядных процессорах (80386, i486, Pentium). Как правило, эти отличия заключаются в возможности использования не только 8- и 16-разрядных, но и 32-разрядных операндов, а также расширенных режимов адресации памяти.

Система команд процессоров Intel
HLT Останов
IDIV Деление целых чисел со знаком
П3. Состояние стека после
INS Ввод строки из порта
INT Программное прерывание
INTO Прерывание по переполнению
MP Безусловный переход
LAHF Загрузка флагов в регистр АН
86+ LEAVE Выход из процедуры высокого уровня

Turbo Assembler 3.0. Руководство пользователя

Турбо Ассемблер работает на компьютерах семейства IBM PC, включая модели XT, AT и PS/2, а также на полностью совместимых с ними компьютерах. Для работы Турбо Ассемблера требуется операци- онная система MS-DOS (версии 2.0 или более поздняя) и не менее 256К оперативной памяти.
Турбо Ассемблер генерирует инструкции процессоров 8086, 80186, 80286, 80386 и i486, а также инструкции с плавающей точкой для арифметических сопроцессоров 8087, 80287 и 80387. (Подробнее об инструкциях процессором семейства 80х86/80х87 рассказывается в книгах фирмы Intel.)

Требования к программному и аппаратному обеспечению
Турбо Ассемблер фирмы Borland представляет собой многопро- ходный ассемблер с разрешением опережающих ссылок, скоростью ас- семблирования до 48000 строк в минуту (на компьютере IBM PS/2, модель 60), совместимый с макроассемблером фирмы Microsoft MASM и дополнительной возможностью использования режима расширенного синтаксиса Ideal. Независимо от вашего опыта в программировании вы, несомненно, оцените эти особенности, а также ряд других средств, которые значительно облегчают программирование на Ас- семблере.

Поддержка DPMI
О данной документации
Руководство пользователя
Руководство пользователя - 2
Соглашения по обозначениям
Как обратиться за помощью к фирме Borland
Ресурсы вашего пакета
Возможности фирмы Borland
Начало работы на Турбо Ассемблере
Установка Турбо Ассемблера в системе

Директивы выбора процессора и идентификаторы процессора
Математические сопроцессоры, такие как 8087, 80287 и 80387, работающие с процессорами семейства iAPx86, позволяют выполнять операции с плавающей точкой.
В Турбо Ассемблере предусмотрены директивы и предопределен- ные идентификаторы, которые позволяют вам использовать инструкции конкретного процессора. Эти директивы и идентификаторы описывают- ся в данной главе.

Директивы процессоров iAPx86
Предопределенные идентификаторы
Идентификатор @Cpu
Идентификатор @WordSize
Директивы сопроцессора 8087
Директивы эмуляции сопроцессора
Использование моделей памяти программы и сегментации
Директива MODEL
Директива MODEL - 2
Директива MODEL - 3

Использование условных директив
Существует два класса условных директив: директивы условного ассемблирования и условные директивы генерации сообщений об ошибке. С помощью директив условного ассемблирования вы можете управлять тем, какой код будет ассемблироваться в программе при опре- деленных условиях.
Директивы условного ассемблирования позволяют вам генерировать во время ассемблирования сообщения об ошибках при наступлении определенных событий. Турбо Ассемблер выводит сообщение об ошибке на экран и в файл листинга и предотвращает создание объектного файла. В данной главе описывается, как можно использовать имеющиеся условные директивы.

Синтаксис условных директив
Директива условного ассемблирования IFxxx
Директива условного ассемблирования IFxxx - 2
Директивы условного ассемблирования ELSEIFxxx
Директивы генерации сообщений ERRxx
Безусловные сообщения об ошибке
Условные директивы с выражениями
Условные директивы с идентификатором
Условные директивы с идентификатором - 2
Условные директивы с текстовыми строками

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

Code or data emission to undeclared segment
Constant assumed to mean Immediate const
Constant too large
CS not correctly assumed
CS override in protected mode
CS unreachable from current segment
Declaration needs name
Directive ignored in Turbo Pascal model
Directive not allowed inside structure definition
Duplicate dummy arguments:_

Assembler для начинающих

Почему вас могло бы заинтересовать программирование на языке ассемблера? Cегодня повсюду используются такие языки высокого уровня как Бэйсик, Фортран и Паскаль. Возможно, вы уже знакомы по крайней мере с одним языком высокого уровня. Если вы постоянно пользуютесь персональным компьютером IBM, то вы знаете, что интерпритатор Бэйсика является частью системы. Зачем же возиться еще с одним языком программирования, тем более с таким, который сулит определенные трудности? Очевидно, даже располагая современными могучими языками, вы все еще нуждаетесь в ассемблере из-за его эффективности и точности.

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

Программирование на языке Ассемблера
Программирование на языке Ассемблера - 2
Программирование на языке Ассемблера - 3
Персональный компьютер фирмы IBM (IBM PC)

Двоичная арифметика
В этой главе разъясняются свойства компьютеров. Она расскажет вам как компьютеры работают и почему они делают это именно так. Некоторые положения могут оказаться знакомыми вам. Если у вас нет опыта программирования на языке ассемблера, то многие операции будут для вас новыми.

Принципы работы компьютера
Принципы работы компьютера - 2
Принципы работы компьютера - 3
Процедуры
Процедуры - 2
Процедуры - 3
Стек
Стек - 2
Стек - 3
Стек - 4

Модель программирования 8088
Для того, чтобы понять 8088 и научиться программировать для него, мы начнем с его внутреннего устройства. Внутри процессора имеются специальные ячейки памяти, называемые регистрами.

Сегментные регистры
Сегментные регистры - 2
Предназначение сегментов
Оператор Segment
Оператор Segment - 2
Оператор Assume
Оператор Assume - 2
Оператор Assume - 3
Оператор Assume - 4
Управляющие рагистры

Команды управления микропроцессором
Оставшиеся команды микропроцессора 8088 управляют его работой. Многие из них устанавливают или сбрасывают некоторые флаги состояния.

Установка флагов
Установка флагов - 2
Специальные команды
Специальные команды - 2
Специальные команды - 3
Пересылка данных
Команда пересылки
Команда пересылки - 2
Команда пересылки - 3
Команда пересылки - 4

Дисковая операционная система
В этой главе излагаются все детали, необходимые для ассемблирования и выполнения программ. В предыдущих главах объяснялось, как работает микропроцессор 8088. Теперь время проверить полученные знания, так как только самостоятельное составление и успешная прогонка программ могут дать полное представление о системе команд микропроцессора 8088.

Редактор связей
Многомодульность
Многомодульность - 2
EXTRN и PUBLIC
EXTRN и PUBLIC - 2
EXTRN и PUBLIC - 3
EXTRN и PUBLIC - 4
EXTRN и PUBLIC - 5
EXTRN и PUBLIC - 6
Операция редактирования связей

Макроопределения
В этой части будут описаны некоторые свойства макроассемблера, разработанного в фирме IBM. Хотя мы уже рассмотрели все команды процессора 8088, в ассемблере имеются и другие команды. Мы уже обсудили некоторые из этих псевдокоманд, например, операторы определения данных DB и DW. В этой главе будут введены более мощные средства языка ассемблера. Их объединяет то, что их использование делает написание программ на языке ассемблера более простым и легким.

Макроопределения
Макроопределения - 2
Макроопределения - 3
Макроопределения - 4
Макроопределения - 5
Макроопределения - 6
Аргументы макрокоманд
Аргументы макрокоманд - 2
Аргументы макрокоманд - 3
Аргументы макрокоманд - 4

Работа 8087
Конструкторы микропроцессора Intel 8088 предусмотрели для него уникальную возможность, характерную лишь для семейства микропроцессоров 8086/8088. Конструкции микропроцессора позволяет иметь в системе сопроцессор. Сопроцессор - это устройство, расширяющее возможности центрального процессора. Арифметический сопроцессор 8087 является сопроцессором центрального микропроцессора 8088, добавляющий команды числовой обработки и регистры с плавающей точкой. Эти дополнительные арифметические возможности расширяют набор команд микропроцессора 8088, и значительно увеличивают вычислительную мощность в тех случаях, когда программа выполняет операции с плавающей точкой и повышенной точности.

Типы данных 8087
Типы данных 8087 - 2
Типы данных 8087 - 3
Типы данных 8087 - 4
Типы данных 8087 - 5
Типы данных 8087 - 6
Типы данных 8087 - 7
Представление данных с плавающей точкой
Представление данных с плавающей точкой - 2
Представление данных с плавающей точкой - 3

Системное оборудование
Эта глава описывает устройство персонального компьютера фирмы IBM (IBM PC). Поскольку данная книга посвящена программированию на языке ассемблера для IBM PC, вполне уместно рассмотреть аппаратное обеспечение машины. Эта глава не предназначена для инженеров и техников; она скорее для тех, кто пишет на языке ассемблера программы, которые выполняются на IBM PC. Выше говорилось, что язык ассемблера не всегда самый подходящий язык программирования. Умение программировать непосредственно на машинном уровне позволяет программисту иметь много больше возможностей для управления машиной. Но в случае большого проекта подавляющее количество подробностей, которое требуется языком ассемблера, затрудняет сосредоточие усилий на главной цели. Поэтому лучше всего использовать ассемблер только по мере необходмости.

Адаптер дисковода
Адаптер дисковода - 2
Адаптер дисковода - 3
Адаптер дисковода - 4
Адаптер дисковода - 5
Прямой доступ у памяти
Прямой доступ у памяти - 2
Прямой доступ у памяти - 3
Прямой доступ у памяти - 4
Динамик

Замечания по листингу ROM BIOS
В данной книге программы BIOS изучаются по двум причинам: их использование дает пример техники программирования на языке ассемблера, особенно в случае управления системной аппаратурой, и еще существенней то, что программы BIOS играют важную роль в разработке программ на языке ассемблера для IBM PC. В предыдущих главах уже использовались некоторые функции программы BIOS; и, поскольку фирма IBM внесла эти функции в BIOS, дублировать их не стоит. Их надо использовать всюду, где это возможно.

Замечания по листингу ROM BIOS
Кассета
Кассета - 2
Кассета - 3
Дискета
Области данных драйвера BIOS дискеты
Области данных драйвера BIOS дискеты - 2
Области данных драйвера BIOS дискеты - 3
Команды чтения и записи
Команда проверки

Расширение системы BIOS
В этой главе рассказывается о способе использования программ на языке ассемблера в больших программах. Приведенные ранее примеры были автономными программами на языке ассемблера. Ни один из других языков программирования не позволяет так, как язык ассемблера, управлять техническими средствами. Однако во многих случаях выбор языка ассемблера в качестве языка программирования может оказаться неправильным. Часто лучше всего бывает применять язык высокого уровня в сочетании с подпрограммами на языке ассемблера.

Возврат в DOS с сохранением резидентности
Возврат в DOS с сохранением резидентности - 2
Возврат в DOS с сохранением резидентности - 3
Возврат в DOS с сохранением резидентности - 4
Возврат в DOS с сохранением резидентности - 5
Возврат в DOS с сохранением резидентности - 6
Возврат в DOS с сохранением резидентности - 7
Возврат в DOS с сохранением резидентности - 8
Возврат в DOS с сохранением резидентности - 9
Возврат в DOS с сохранением резидентности - 10

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

Assembler - язык неограниченных возможностей

Говорят, что ассемблер трудно выучить. Любой язык программирования трудно выучить. Легко выучить С или Delphi после Паскаля, потому что они похожи. А попробуйте освоить Lisp, Forth или Prolog, и окажется, что ассемблер в действительности даже проще, чем любой совершенно незнакомый язык программирования.
Говорят, что программы на ассемблере трудно понять. Разумеется, на ассемблере легко написать неудобочитаемую программу... точно так же, как и на любом другом языке! Если вы знаете язык и если автор программы не старался ее запутать, то понять программу будет не сложнее, чем если бы она была написана на Бейсике.

Введение
Первый вопрос, который задает себе человек, впервые услышавший об этом языке программирования, а зачем он, собственно, нужен? Особенно теперь, когда все пишут на C/C++, Delphi или других языках высокого уровня? Ведь очень многое можно создать на С, но ни один язык, даже такой популярный, не может претендовать на то, чтобы на нем можно было написать действительно все.

Что потребуется для работы с ассемблером
Прежде всего вам потребуется ассемблер. Здесь самое время сказать, что на самом деле язык программирования, которым мы собираемся заниматься, называется язык ассемблера (assembly language). Ассемблер это программа, которая переводит текст с языка, понятного человеку, в язык, понятный процессору, то есть говорят, что она переводит язык ассемблера в машинный код. Однако сначала в повседневной речи, а затем и в литературе слово ассемблер стало также и названием самого языка программирования.

Представление данных в компьютерах
Двоичная система счисления
Биты, байты и слова
Биты, байты и слова - 2
Шестнадцатеричная система счисления
Числа со знаком
Логические операции
Коды символов

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

Регистры процессора
Регистры общего назначения
Сегментные регистры
Стек
Регистр флагов
Способы адресации
Регистровая адресация
Непосредственная адресация
Прямая адресация
Косвенная адресация

Директивы и операторы ассемблера
Каждая программа на языке ассемблера помимо команд процессора содержит еще и специальные инструкции, указывающие самому ассемблеру, как организовывать различные секции программы, где располагаются данные, а где команды, позволяющие создавать макроопределения, выбирать тип используемого процессора, организовывать связи между процедурами и т.д. К сожалению, пока нет единого стандарта на эти команды

Структура программы
Структура программы - 2
Псевдокоманды определения переменных
Структуры
Сегменты
Сегменты - 2
Модели памяти и определение сегментов
Модели памяти и определение сегментов - 2
Порядок загрузки сегментов
Процедуры

Основы программирования для MS-DOS
Программа, написанная на ассемблере, так же как и программа, написанная на любом другом языке программирования, выполняется не сама по себе, а при помощи операционной системы. Операционная система выделяет области памяти для программы, загружает ее, передает ей управление и обеспечивает взаимодействие программы с устройствами ввода-вывода, файловыми системами и другими программами (разумеется, кроме тех случаев, когда эта программа сама является операционной системой или ее частью).

Программа типа СОМ
Программа типа СОМ - 2
Программа типа ЕХЕ
Средства DOS
Средства DOS - 2
Средства BIOS
Средства BIOS - 2
Средства BIOS - 3
Средства BIOS - 4
Прямая работа с видеопамятью

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

Структуры IF.. THEN... ELSE
Структуры CASE
Конечные автоматы
Циклы
Процедуры и функции
Передача параметров
Передача параметров по значению
Передача параметров по ссылке
Передача параметров по возвращаемому
Передача параметров по результату

Блочные устройства
Для всех остальных команд в поле буфера запроса со смещением +1 размещается номер логического устройства из числа обслуживаемых драйвером, к которому относится команда: 01h:Проверка носителя

Программирование в защищенном режиме
Все, о чем рассказано до этой главы, рассчитано на работу под управлением DOS в реальном режиме процессора (или в режиме V86), унаследованном еще с семидесятых годов. В этом режиме процессор неспособен адресоваться к памяти выше границы первого мегабайта. Кроме того, из-за того, что для адресации используются 16-битные смещения, невозможно работать с массивами больше 65536 байт.

Адресация в защищенном режиме
Адресация в защищенном режиме - 2
Адресация в защищенном режиме - 3
Адресация в защищенном режиме - 4
Интерфейс VCPI
Интерфейс VCPI - 2
Интерфейс VCPI - 3
Интерфейс DPMI
Переключение в защищенный режим
Функции DPMI управления дескрипторами

Программирование для Windows 95 и Windows NT
Несмотря на то что Windows95 и WindowsNT кажутся более сложными операционными системам по сравнению с DOS, программировать для них на ассемблере намного проще. С одной стороны, Windows-приложение запускается в 32-битном режиме (мы не рассматриваем Windows3.11 и более старые версии, которые работали в 16-битном режиме) с моделью памяти flat, так что программист получает все те преимущества, о которых говорилось в предыдущей главе, а с другой стороны нам больше не нужно изучать в деталях, как программировать различные устройства компьютера на низком уровне.

Первая программа
Первая программа - 2
Первая программа - 3
Консольные приложения
Консольные приложения - 2
Консольные приложения - 3
Консольные приложения - 4
Окно типа MessageBox
Окна
Окна - 2

Ассемблер и языки высокого уровня
В предыдущем разделе, занимаясь программированием для Windows, мы уже обращались к процедурам, написанным на языке высокого уровня из программ на ассемблере, и создавали процедуры на ассемблере, к которым можно обращаться из языков высокого уровня. Для этого нужно было соблюдать определенные договоренности о передаче параметров параметры помещались в стек справа налево, результат возвращался в ЕАХ, стек освобождался от переданных параметров самой процедурой. Эта договоренность, известная как STDCALL, конечно, не единственная, и разные языки высокого уровня используют разнообразные способы передачи параметров.

Передача параметров
Конвенция Pascal
Конвенция С
Смешанные конвенции
Искажение имен
Встроенный ассемблер
Встроенный ассемблер в Pascal
Встроенный ассемблер в С

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

Высокоуровневая оптимизация
Оптимизация на среднем уровне
Вычисление констант вне цикла
Перенос проверки условия в конец цикла
Выполнение цикла задом наперед
Разворачивание циклов
Общие принципы низкоуровневой оптимизации
Основные рекомендации
Команда LEA
Выравнивание

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

Регистры
Системные флаги
Регистры управления памятью
Регистры управления процессором
Регистры управления процессором - 2
Отладочные регистры
Отладочные регистры - 2
Машинно-специфичные регистры
Системные и привилегированные команды
Системные и привилегированные команды - 2

Программирование на ассемблере в среде UNIX
Операционная система MS-DOS, получившая дальнейшее развитие в виде Windows, долгое время была практически единственной операционной системой для персональных компьютеров на базе процессоров Intel. Но с течением времени мощность процессоров выросла настолько, что для них стало возможным работать под управлением операционных систем класса UNIX, использовавшихся обычно на более мощных компьютерах других компаний. В настоящее время существует более двадцати операционных систем для Intel, представляющих те или иные диалекты UNIX. Мы рассмотрим наиболее популярные из них.

Синтаксис AT&T
Основные правила
Запись команд
Адресация
Операторы ассемблера
Префиксные, или унарные операторы
Инфиксные, или бинарные операторы
Директивы ассемблера
Директивы определения данных
Директивы управления символами

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

Символы ASCII
Номера строк соответствуют первой цифре в шестнадцатеричном коде символа, номера столбцов второй, так что, например, код большой латинской буквы A 41h

Управляющие символы ASCII
Кодировки второй половины ASCII
Коды символов расширенного ASCII
Скан-коды клавиатуры
Команды INTEL 80x86
Общий формат команды процессора Intel
Значения полей кода команды
Значения поля ModRM
Значения поля SIB
Общая информация о скоростях выполнения

Создание операционной системы на ассемблере

В своей работе я буду использовать:
Ассемблер nasm, который мне очень нравится из-за своей многоплатформенности (есть версии для UNIX, DOS и Windows), поддержкой команд практически всех современных процессоров и многообразием понимаемых форматов.
На Си мы будем писать не много, и для наших целей подойдет практически любой ANSI C компилятор. (ANSI C - это стандарт Си, дорабатывался последний раз в 1989 году, и практически все компиляторы ему соответствуют).

Для начала разберемся, как устроены системы.
Аппаратные возможности компьютеров.
Теперь немного поподробнее про устройство ядра.
Вопросы к подписчикам
Здравствуйте, уважаемые подписчики.
Выпуск №2
Как процессор работает с памятью?
Страничная организация памяти.
Многозадачность.
Что из всего этого следует?

Справочник по Ассемблеру

Win32-пpогpаммы выполняются в защищенном pежиме, котоpый доступен начиная с 80286. Hо 80286 тепеpь истоpия. Поэтому мы пpедполагаем, что имеем дело только с 80386 и его потомками. Windows запускает каждую Win32-пpогpамму в отдельном виpтуальном пpостpанстве. Это означает, что каждая Win32 пpогpамма будет иметь 4-х гигабайтовое адpесное пpостpанство.
Hо это вовсе не означает, что каждая пpогpамма имеет 4 гигабайта физической памяти, а только то, что пpогpамма может обpащаться по любому адpесу в этих пpеделах. Windows сделает все необходимое, чтобы сделать память, к котоpой обpащается пpогpамма, "существующей". Конечно, пpогpамма должна пpидеpживаться установленных пpавил, иначе Windows вызовет General Protection Fault. Каждая пpогpамма одна в своем адpесном пpостpанстве, в то вpемя как в Win16 дело обстоит не так. Все Win16-пpогpаммы могут "видеть" дpуг дpуга, что невозможно в Win32. Этот особенность помогает снизить шанс того, что одна пpогpамма запишет что-нибудь повеpх данных или кода дpугой пpогpаммы.

Вступление
Win32-пpогpаммы выполняются в защищенном pежиме, котоpый доступен начиная с 80286. Hо 80286 тепеpь истоpия. Поэтому мы пpедполагаем, что имеем дело только с 80386 и его потомками. Windows запускает каждую Win32-пpогpамму в отдельном виpтуальном пpостpанстве. Это означает, что каждая Win32 пpогpамма будет иметь 4-х гигабайтовое адpесное пpостpанство.

Каркас программы
Каркас программы - 2

Windows API
Windows пpедоставляет огpомное количество возможностей чеpез Windows API (Application Programming Interface). Windows API - это большая коллекция полезных функций, pасполагающихся в опеpационной системе и готовых для использования пpогpаммами. Эти функции находятся в динамически подгpужаемых библиотеках (DLL), таких как kernel32.dll, user32.dll и gdi32.dll. Kernel32.dll содеpжит API функции, взаимодействующие с памятью и упpавляющие пpоцессами. User32.dll контpолиpует пользовательский интеpфейс.

Теория
Теория - 2
Теория - 3
Программа MessageBox

Windows-пpогpаммы для создания гpафического интеpфейса
Windows-пpогpаммы для создания гpафического интеpфейса пользуются функциями API. Этот подход выгоден как пользователям, так и пpогpаммистам. Пользователям это дает то, что они не должны изучать интеpфейс каждой новой пpогpаммы, так как Windows пpогpаммы похожи дpуг на дpуга. Пpогpаммистам это выгодно тем, что GUI-функции уже оттестиpованы и готовы для использования. Обpатная стоpона - это возpосшая сложность пpогpаммиpования. Чтобы создать какой-нибудь гpафический объект, такой как окно, меню или значок, пpогpаммист должен следовать стpогим пpавилам.

Теория
Теория - 2
Программа
Программа - 2
Программа - 3
Программа - 4
Программа - 5
Программа - 6
Программа - 7
Программа - 8

В этом уpоке мы научимся создавать меню
Меню - это pазновидность pесуpсов. Есть несколько видов pесуpсов, таких как диалоговые окна, стpоковые таблицы, иконки, рисунки, меню и т.д. Ресуpсы описываются в отдельном файле, называющемся файлом pесуpсов, котоpый, как пpавило, имеет pасшиpение .rc. Вы можете соединять pесуpсы с исходным кодом во вpемя стадии линковки. Окончательный пpодукт - это исполняемый файл, котоpый содеpжит как инстpукции, так и pесуpсы.

Теория
Теория - 2
Программа
Программа - 2

Текст в Windows
Текст в Windows - это вид GUI-объекта. Каждый символ создан из множества пикселей (точек), котоpые образуют символа. Вот почему мы "pисуем" их, а не "пишем". Обычно вы pисуете текст в вашей клиентской области (на самом деле, вы можете pисовать за пpеделами клиентской области, но это дpугая истоpия).

Теория
Теория - 2
Программа
Программа - 2

Цветовая система Windows
Цветовая система Windows базиpуется на RGB значениях, R=кpасный, G=зеленый, B=синий. Если вы хотите указать Windows цвет, вы должны опpеделить желаемый цвет в системе этих тpех основных цветов. Каждое цветовое значение имеет область опpеделения от 0 до 255. Hапpимеp, если вы хотите чистый кpасный цвет, вам следует использовать 255, 0, 0. Или если вы хотите чистый белый цвет, вы должны использовать 255, 255, 255.

Теория
Программа

Ввод с клавиатуpы
Так же, как и пpи вводе с клавиатуpы, Windows опpеделяет и шлет уведомления об активности мыши отностельно какого-либ окна. Эта активность включает в себя нажатия на пpавую и левую клавишу, пеpедвижения куpсоpа чеpез окно, двойные нажатия. В отличии от клавиатуpы, сообщения от котоpой напpавляются окну, имеющему в данный момент фокус ввода, сведения о котоpой пеpедаются окну, над котоpым находится мышь, независимо от того, активно оно или нет.

Теория
Программа

Ассемблирование программ
В результате создается файл PROG.OBJ, который нужно скомпилировать при помощи компоновщика link.exe:

Ошибки при ассемблировании программы
Сассемблированный файл не работает: компьютер виснет (программа работает не так, как надо: вместо выводимой строки - какие-то непонятные символы и пр.), хотя программу набрал верно (точь-в-точь, как в примере из книги)…

Define
Прерывание 16h
Прерывание 20h
Прерывание 21h
ADD
CALL
DEC
INC
INT
JMP

Самоучитель по Mathematica

В наши дни многие уже путают компьютерную математику как науку о математических вычислениях и преобразованиях с помощью компьютеров с СКМ Маthematica, созданной фирмой Wolfram Research, Inc. Хотя это и знаменательно само по себе, во избежание такой путаницы мы начнем наш курс с рассказа о том, как зародилась компьютерная математика и как были созданы программные системы компьютерной математики различных классов. Здесь мы также опишем отражение системы Mathematica в мировой сети Интернет.
Для многих неискушенных в математике пользователей не совсем понятно, что делают СКМ, особенно те из них, которые выполняют символьные операции. Поэтому в этом уроке мы впервые познакомимся с особенностями различных систем и оценим их возможности, так сказать, в первом приближении. Некоторые из приведенных примеров лучше повторить в дальнейшем — после изучения основ работы с системой Mathematica. Впрочем, нетерпеливые учащиеся могут попробовать сделать это немедленно! Однако, чтобы запустить систему Mathematica 3 или 4 и начать работу с ней, надо вначале установить систему на жесткий диск вашего ПК. Об этом пойдет речь в конце данного урока.

Первое знакомство
В наши дни многие уже путают компьютерную математику как науку о математических вычислениях и преобразованиях с помощью компьютеров с СКМ Маthematica, созданной фирмой Wolfram Research, Inc. Хотя это и знаменательно само по себе, во избежание такой путаницы мы начнем наш курс с рассказа о том, как зародилась компьютерная математика и как были созданы программные системы компьютерной математики различных классов. Здесь мы также опишем отражение системы Mathematica в мировой сети Интернет.

Системы класса Mathematica 2.x
Системы класса Mathematica 2.x - 2
Системы класса Mathematica 2.x - 3
Системы класса Mathematica 2.x - 4
Системы класса Mathematica 2.x - 5
Системы класса Mathematica 2.x - 6
Системы класса Mathematica 2.x - 7
Структура систем Mathematica и их идеология
Идеология систем Mathematica
Идеология систем Mathematica - 2

Интерфейс системы
Прежние версий системы Mathematica имели довольно скромный стандартный интерфейс, характерный для приложений MS-DOS. Однако в версиях Mathematica 3/4 интерфейс был существенно переработан. В этом уроке подробно рассматривается интерфейс систем Mathematica 3/4. Освоение интерфейса не менее важно, чем освоение чисто математических возможностей системы, поскольку именно использование всех возможностей интерфейса позволяет готовить вполне современные документы, отличающиеся высоким качеством визуализации.

Управление работой ядра
Команды меню Kernel
Управление процессом вычислений
Управление процессом вычислений - 2
Выбор ядра системы
Управление показом номеров ячеек
Удаление всех ячеек вывода
Операции поиска и замены
Меню Find
Команды поиска и замены

Типы данных
С этого урока начинается серьезное освоение математических возможностей систем Mathematica 3 и 4. Мы изучим основные типы данных, операторов, функций и объектов, с которыми может работать система Mathematica 3/4, а попутно познакомимся и с некоторыми простыми операциями ввода данных и их обработки.

Основные классы данных
Численные данные
Численные данные - 2
Численные данные - 3
Численные данные - 4
Символьные данные и строки
Выражения
Списки и массивы
Объекты и идентификаторы
Функции, опции, атрибуты и директивы

Операции математического анализа
Вычисление сумм Вычисление произведений Вычисление производных Вычисление интегралов Вычисление пределов функций Решение уравнений и систем уравнений Решение дифференциальных уравнений Поиск максимального и минимального чисел в списке Поиск максимума и минимума функции Решение задач линейного программирования Преобразования Лапласа Z-преобразования

Преобразования Лапласа-LaplaceTransform
Функции z-преобразований — ZTransform
Вычисление произведений
Вычисление произведений в численном виде
Вычисление сумм
Вычисление сумм - 2
Вычисление сумм - 3
Вычисление производных
Вычисление производных - 2
Вычисление пределов функций

Представление и обработка данных
Разложение функций в ряды Тейлора и Маклорена Удаление члена с остаточной погрешностью ряда Графическая визуализация разложения в ряд Прямое и обратное дискретные преобразования Фурье Спектральный анализ на основе преобразования Фурье Фильтрация сигналов на основе преобразований Фурье Полиномиальная интерполяция и аппроксимация Регрессия и визуализация ее результатов Спектральный анализ таблично заданных сигналов с интерполяцией Моделирование нелинейных цепей с применением интерполяции

Разложение функций в ряды Тейлора
Разложение функций в ряды Тейлора - 2
Разложение функций в ряды Тейлора - 3
Интерполяция, аппроксимация и регрессия
Полиномиальная интерполяция
Полиномиальная аппроксимация
Регрессия и визуализация ее результатов
Преобразования Фурье
Преобразования Фурье - 2
Прямое и обратное преобразования Фурье

Специальные математические функци
Ортогональные многочлены Интегральные показательные и родственные им функции Гамма-и полигамма-функции Функции Бесселя Гипергеометрические функции Эллиптические интегралы и интегральные функции Функции Эйри Бета-функция и родственные ей функции Специальные числа и полиномы

Интегральные показательные функции
Ортогональные многочлены
Ортогональные многочлены - 2
Функции Бесселя
Гамма- и полигамма-функции
Функции Эйри
Функции Эйри - 2
Гипергеометрические функции
Эллиптические интегралы
Интегральные функции

Функции задания формата вывода
Далее отметим функции, меняющие формат представления выражений. Все они имеют в своем названии слово Form (форма). Таких функций довольно много, и их полный список вы найдете в приложении.

Работа с периферийными устройствами
Функции ввода/вывода
Функции ввода/вывода - 2
Потоки и файлы
Упрощенная работа с файлами
Упрощенная работа с файлами - 2
Упрощенная работа с файлами - 3
Удаление введенных в ходе сессии определений
Работа со строками
Работа со строками - 2

Графика и звук
Графика, как важнейшее средство визуализации вычислений, всегда была козырной картой системы Mathematica и во многом способствовала ее высокой репутации как мирового лидера среди систем компьютерной математики. Обширные графические возможности достигаются при небольшом числе встроенных функций графики за счет их модификации с помощью опций и директив. Благодаря этому Mathematica позволяет строить практически любые виды графиков.

Трехмерная графика
Построение контурных графиков
Построение графиков плотности
Построение графиков плотности - 2
Построение графиков плотности - 3
Построение графиков плотности - 4
Графическая функция Plot
Опции функции Plot
Опции функции Plot - 2
Директивы двумерной графики

Компьютерная алгебра
Математические выражения — основа описания алгоритмов вычислений. Фактически, вся символьная математика основана на тех или иных видах преобразований выражений. Такие преобразования и описаны в данном уроке.

Работа с выражениями
Основные формы записи выражений
Основные формы записи выражений - 2
Удаление элементов выражения
Другие манипуляции с выражениями
Контроль выражении
Приложение имени функции к выражению
Укороченная форма функций
Выделения и подстановки в функциях
Рекуррентные функции

Основы программирования
Ранее не раз говорилось, что Mathematica, в сущности, является диалоговым языком программирования сверхвысокого уровня. Однако мы еще не поднимались (или не опускались) до уровня подготовки программ в среде Mathematica 3/4. Между тем, Mathematica и впрямь имеет программные средства, ничем не уступающие таковым для современных языков программирования, а в области подготовки программ для математических преобразований и вычислений намного их превосходящие.

Создание средств визуального программирования
Пример создания палитры функций
Пример создания палитры функций - 2
Пример создания палитры функций - 3
Отладка и трассировка программ
Правила культурного программирования
Правила культурного программирования - 2
Правила культурного программирования - 3
Методы программирования
Методы программирования - 2

Математические пакеты расширения
Начиная с этого урока, мы переходим к изучению стандартных пакетов расширения (Standard Add-on Packages), которые встроены в системы Mathematica 3/4. Они не требуют отдельной инсталляции, но перед использованием их средств пакеты надо объявлять. Стандартные пакеты расширений содержат примерно столько же дополнительных средств, сколько их содержится в ядре, — то есть тоже порядка тысячи. Применение пакетов расширения особенно эффективно, если оно производится достаточно опытными пользователями.

Общие замечания по пакетам расширения
Решение неравенств
Представление комплексных данных — Relm
Оценка интервалов изоляции — Rootlsolation
Оценка интервалов изоляции — Rootlsolation - 2
Преобразование полиномов в схему Горнера
Пакет вычислительных функций Calculus
Дельта-функция Дирака — DiracDelta
Улучшенное вычисление пределов — Limit
Аппроксимация функций — Fade

Статистические расчеты
В ядре системы Mathematica практически нет статистических функций. Зато пакет расширения Statistics дает сотни функций, охватывающих практически все разделы теоретической и прикладной статистики. Тем не менее, вопрос о привлечении универсальных математических систем к выполнению серьезных математических расчетов является спорным из-за существования множества специальных статистических компьютерных систем, таких как Statistica, StatGraphics и т. д.

Построение гистограмм
Построение гистограмм - 2
Сглаживание данных — DataSmoothing
Сглаживание данных — DataSmoothing - 2
Другие подпакеты расширения Statistics
Другие подпакеты расширения Statistics - 2
Регрессия
Нелинейная регрессия — NonlinearFit
Нелинейная регрессия — NonlinearFit - 2
Нелинейная регрессия — NonlinearFit - 3

Пакет расширения с утилитами— Utilities
Утилитами принято называть небольшие программы, в основном вспомогательного назначения. Они предназначены чаще всего для работы с файлами и памятью компьютера. Ряд таких утилит включен в пакет расширения Utilities, знакомству с которым и посвящен данный небольшой раздел.

Работа с бинарными файлами — BinaryFiles
Запись графических объектов в файл DXF
Фильтрация опций — FilterOptions
Уплотнение памяти — MemoryConserve
Работа с пакетами расширений — Package
Показ времени операций — ShowTime
Что нового мы узнали?
Полезные функции
Пакет расширения Miscellaneous
Синтез звуков — Audio

Установка аргумента цвета — ArgColor
При построении графиков в полярной системе координат полезно использовать цвет, зависящий от фазы комплексного числа. Для этого в подпакете ArgColor служат следующие функции: ArgColor [z] — дает цвет, определяемый фазой комплексного аргумента z; ArgShade [ z ] — дает уровень серого цвета, определяемый фазой комплексного аргумента z.

Графики комплексных функций — ComplexMap
Расширения графики— пакет Graphics
Расширения графики— пакет Graphics - 2
Расширения графики— пакет Graphics - 3
Типы трехмерных графиков— Graphics3D
Типы трехмерных графиков— Graphics3D - 2
Графики неявных функций — ImplicitPlot
Объемные контурные графики — ContourPlot3D
Построение FilledPlot
Построение FilledPlot - 2

Данные по дополнительным функциям Mathematica 4
В этом приложении даны некоторые дополнительные функции систем Mathematica 3/4 и (иногда) примеры их применения. В основном это редко используемые функции, и они приведены для того, чтобы пользователь имел достаточно полную информацию по большинству из примерно 1000 функций, встроенных в ядро систем, и по ряду функций пакетов применения. Функции классифицированы по урокам, в которых описаны базовые функции близкого назначения.

Дополнительные логические функции
Элементарные функции
Дополнительные функции для работы со списками
Функции расширения списков нулями
Дополнительные матричные функции
Опции численного интегрирования
Дополнительные логические функции
Элементарные функции
Функции для работы со списками
Функции для работы со списками - 2

Ассемблер для Windows
Справочник Ассемблер
Справочник по языку Ассемблера IBM PC
Как написать игру для ZX Spectrum на ассемблере
Сборник по задачам и примерам Assembler
Атеев Алексей - Серебряная Пуля
Асприн Роберт - Кровные Узы
Введение в схемы, автоматы и алгоритмы
Расширяемый язык разметки
Статьи по Assembler
Продукты Pinnacle
Разработка компиляторов
Автоматизация работы с текстом
CISCO порусски. Набор статей
Архитектура Unix
AutoCAD 2005 - среда проектирования
Программа AutoCAD 2004 - руководство
Система топологической трассировки печатных плат TopoR
ObjectARX, AutoCAD. Среда программирования библиотеки C++
Методы описания встраиваемой аппаратуры и построения инструментария кросс-разработки