< Назад  Далее >

Предисловие к третьему изданию

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

П.И. Рудаков
К.Г. Финогенов

Предисловие к второму изданию

Книга рассчитана на пользователей персональных компьютеров типа IBM PC, которые хотели бы познакомиться с архитектурными особенностями этих машин, системой команд и режимами работы используемых в них микропроцессоров, организацией ввода-вывода и прерываний, управлением аппаратнымси средствами компьютера, функциями базовой системы ввода-вывода BIOS и операционной системы MS-DOS. Все эти знания естественным образом приобретаются при изучении языка ассемблера — языка низкого уровня, приближенного к аппаратным средствам компьютера и его «натуральным» возможностям. В книге будут последовательно рассмотрены основные средства языка ассемблера микропроцессоров Intel и его применение при программировании задач разного рода: вычислительных, логических, по управлению аппаратурой и др.

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

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

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

Другую группу составляют различные аспекты реализации в программах на языке ассемблера аппаратных и системных возможностей компьютера:

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

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

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


Сайт управляется системой uCoz