Ошибка: Failed to parse the Currency Converter XML document.
$54 081.51


Ошибка: Failed to parse the Currency Converter XML document.
$3 222.26


Ошибка: Failed to parse the Currency Converter XML document.
$921.90


Assembler. Введение

Введение

Микропроцессоры корпорации Intel и персональные компьютеры на их базе прошли не очень длинный во времени, но значительный по существу путь развития, на протяжении которого кардинально изменялись и возможности и даже сами принципы их архитектуры. В то же время, внос в микропроцессор принципиальные изменения, разработчики были вынуждены постоянно иметь в виду необходимость обеспечения совмести мости новых моделей со старыми, чтобы не отпугивать потенциального покупателя перспективой полной замены освоенного или разработанного им программного обеспечения. В результате современные микропроцессоры типа Pentium, обеспечивая такие возможности, как 32-битную адресацию почти неограниченных объемов памяти, многозадачный режим с одновременным выполнением нескольких программ, аппаратных средства защиты операционной системы и прикладных программ друг друга, богатый набор дополнительных эффективных команд и способе адресации, в то же время могут работать (и часто работают) в режиме первых микропроцессоров типа 8086, используя всего лишь 1 мегабайт оперативной памяти, 16-разрядные операнды (т. е. числа в диапазоне до 216 — 1 = 65535) и ограниченный состав команд. Поскольку программирование на языке ассемблера напрямую затрагивает аппаратные возможности микропроцессора, прежде всего следует выяснить, в какой степени программист может использовать новые возможности микропроцессоров в своих программах и какие проблемы программной несовместимости могут при этом возникнуть.



Первые персональные компьютеры корпорации IBM, появившиеся в 1981 г. и получившие название IBM PC, использовали в качестве центрального вычислительного узла 16-разрядный микропроцессор с 8-разрядной внешней шиной Intel 8088. В дальнейшем в персональных компьютерах стал использоваться и другой вариант микропроцессора, 8086, который отличался от 8088 тем, что являлся полностью 16-разрядным. С тех пор его имя стало нарицательным, и в программах, использующих только возможности процессоров 8088 или 8086, говорят, что они работают в режиме 86-го процессора.

В 1983 г. корпорацией Intel был предложен микропроцессор 80286, в котором был реализован принципиально новый режим работы, получивший название защищенного. Однако процессор 80286 мог работать и в режиме 86-го процессора, который стали называть реальным.

В дальнейшем на смену процессору 80286 пришли модели 80386, i486 и, наконец, различные варианты процессора Pentium. Все они могут работать и в реальном, и в защищенном режимах. Хотя каждая следующая модель была значительно совершеннее предыдущей (в частности, почти на два порядка возросла скорость работы процессора, начиная с модели 80386 процессор стал 32-разрядным, а в процессорах Pentium реализован даже 64-разрядный обмен данными с системной шиной), однако с точки зрения программиста все эти процессоры весьма схожи. Основным их качеством является наличие двух режимов работы — реального и защищенного. Строго говоря, в современных процессорах реализован еще и третий режим — виртуального 86-го процессора, или V86, однако в плане использования языка ассемблера этот режим не отличается от обычного режима 86-го процессора, мы его касаться не будем.

Реальный и защищенный режимы прежде всего принципиально различаются способом обращения к оперативной памяти компьютера. Метод адресации памяти, используемый в реальном режиме, позволяет адресовать память лишь в пределах 1 Мбайт; в защищенном режиме используется другой механизм (из-за чего, в частности, эти режимы и оказались полностью несовместимыми), позволяющий обращаться к памяти объемом до 4 Гбайт. Другое важное отличие защищенного режима заключается в аппаратной поддержке многозадачности с аппаратной же (т.е. реализованной в самом микропроцессоре) защитой задач друг от друга.

Реальный и защищенный режимы имеют прямое отношение к работе операционной системы, установленной на компьютере.

В настоящее время на персональных компьютерах типа 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-разрядная архитектура.

Современные процессоры (начиная с 80386), в отличие от своего предшественника 8086, являются 32-разрядными. Это дает возможность программисту использовать в программе 32-разядные операнды (т. е. числа в диапазоне до 232-1=4 294 967 295), что во многих случаях позволяет упростить алгоритм программы и повысить ее быстродействие. Программа, предполагающая работать с 32-разрядными операндами, должна иметь в своем составе одну из директив .386, .486 или .586, которые разрешают транс тору использовать дополнительные средства соответствующего процессе. Включение в программу этой директивы одновременно открывает доступ и к дополнительным командам и способам обращения к памяти, отсутствующим в процессоре 8086, что также расширяет возможности программирования. Эти средства описаны в главе, посвященной расширенным возможностям современных процессоров.

Особая ситуация возникает, если программист хочет использовать не только 32-битовые данные, но и 32-разрядные адреса ячеек памяти. Программы такого рода называются 32-разрядными приложениями (в отличие от 16-разрядных, в которых все адреса 16-разрядные, хотя дани могут иметь размер 32 бит). Для создания 32-разрядного приложения в состав программы необходимо включить (в соответствующем месте) oписатель use32. Однако следует иметь в виду, что MS-DOS не позволяет пускать 32-разрядные приложения, которые, таким образом, должны 6ыть приложениями Windows. В то же время приложения Windows обычно составляются не на языке ассемблера, а на одном из языков высокого уровня — Паскаль, С или C++, где тип создаваемой программы (16-разрядная или 32-разрядная) определяется настройками компилятора. Поэтому вопросы разработки 32-разрядных приложений на языке ассемблера не вошли в настоящую книгу.

Как известно, система Windows.-допускает запуск приложений DOS (программ реального режима), организуя для этого так называемый сеанс DOS, в котором программы фактически выполняются в режиме 86-го процессора. Кроме этого, в Windows предусмотрена возможность загрузки компьютера в режиме эмуляции DOS, когда компьютер работает под уп-равлением варианта DOS, встроенного в систему Windows. Наконец, ком-пьютер можно сконфигурировать так, чтобы он позволял загружать как Windows, так и «чистую» DOS (например, MS-DOS 6.22), без всякой Windows. Каким вариантом загрузки компьютера пользоваться при проработке настоящей книги — дело вкуса и привычек читателя. Приводимые в книге примеры в своем большинстве просты, не затрагивают каких-то специальных системных средств и будут работать в любом режиме. Последнее замечание не относится только к примеру программы защищенного режима, приводимому в гл. 4, а также к обработчику прерываний от мыши, рассматриваемому в гл. 3. Эти программы следует запускать на «чистой» DOS.

 

Интересное

Быстродействие FAT и NTFS
В этой статье я попытаюсь дать оценку быстродействию файловых систем, используемых в операционных системах Windows95/98/ME, а также Windows NT/2000. Статья не содержит графиков и результатов...
Подробнее...
Несколько советов по...
Для ускорения навигации по папкамДля ускорения навигации по папкам, содержащим графические файлы можно отметить пункт — «Не кэшировать эскизы» (Панель управления -> Свойства папки -> Вид), а...
Подробнее...
Дюжина вопросов по...
Существуют несколько вопросов, которые изо дня в день повторяются на доске сообщений сервера ISAServer.org и в списках подписчиков. Эти же самые вопросы задают также в общих новостных лентах...
Подробнее...
Средства Delphi 7 для...
Рассмотрим наборы компонентов, которые присутствуют в библиотеке компонентов delphi 7, предназначенных для работы с базами данных. Вы узнаете, что такое набор данных, источник данных и...
Подробнее...
Windows 2003 на домашнем...
Последний представленный компанией Microsoft продукт — семейство Windows 2003 - является прямым продолжением Windows 2000. Эта система предназначена, в основном, для серверного, а не для домашнего...
Подробнее...
Настройка роутера с...
В данной статье мы расскажем о настройке роутера на базе FreeBSDвыполняющего роль шлюза в инернет с установкой firewall-a, иподдерживающем статическую arp таблицу mac адресов в локальной сети.Речь...
Подробнее...
Структура сайтостроения
Вы определились, что вам необходим сайт, и даже решили к какому типу он будет относиться. Создание сайта подобно строительству дома: из маленьких кирпичиков создается здание. Это долгий и...
Подробнее...
Почему не нужно чистить реестр
Давным-давно, в незапамятные времена (еще до изобретения операционной системы Microsoft Windows 95), компьютеры Windows и программы, разработанные для них, включали в свой состав файлы...
Подробнее...
"Грабим" странички
С аудиограбберами знакомы все. Нам предстоит сделать свой собственный граббер информации из Интернета. Нам понадобится подопытный кролик, на роль которого я предлагаю выбрать сайт...
Подробнее...
Аварийное восстановление...
Случалось ли вам переустанавливать Windows? Те кто сталкивался с этим, знают сколько времени уходит на то чтобы установить все необходимые драйвера, программное обеспечение и настроить систему. Но...
Подробнее...