Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_на_ассембл_для_WINLOWS.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
907.78 Кб
Скачать

Введение

Известно, что к программированию на языке ассемблера обращаются тогда, когда от программы требуется максимальная скорость исполнения, когда необходимо обеспечить взаимодействие с нестандартными внешними устройствами, когда необходимо полностью использовать возможности процессора и операционной системы. На языке ассемблера можно запрограммировать все, на что способна соответствующая вычислительная машина, то есть ассемблер является машинно-ориентированным языком программирования. Программируя на ассемблере иногда в силу привычки, иногда в силу необходимости, особенно при организации интерфейса пользователя, приходится многократно программировать одни и те же элементарные задачи. В языках высокого уровня эта проблема решена применением стандартных функций и процедур. В ассемблере эта проблема могла бы быть решена за счет библиотек стандартных функций как на уровне исходных текстов, так и объектных кодов, но такие библиотеки не были стандартизованы и не распространялись вместе с компиляторами. С появлением Windows 95 ситуация изменилась. Создание приложения на языке ассемблера представляет собой весьма сложную задачу в связи с высоким уровнем интеграции прикладной программы и операционной системы, но теперь нет необходимости многократно решать проблемы пользовательского интерфейса и управления исполнением программы на уровне машинных команд [1]. Они решаются теперь с помощью операционной системы за счет обращения к функциям интерфейса прикладного программирования - Application Programming Interface (WIN32 API).

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

  1. Сведения об архитектуре процессоров intel 80х86 и операционной системе windows, необходимые для программирования на ассемблере

Как известно, 32-разрядные процессоры Intel (386, 486, Pentium) могут работать в трех режимах: реального адреса, защищенном и виртуального процессора 8086. При включении процессор работает в режиме реального адреса. В этом режиме 32-разрядные процессоры работают как процессор 8086 с повышенным быстродействием и расширенной системой команд. Переход в защищенный режим осуществляется программным путем.

Принципиально новыми чертами процессора 80386 относительно предыдущих моделей являются 32-разрядные регистры и аппаратно поддерживаемый механизм виртуальной памяти и мультизадачности.

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

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

Кроме двух управляющих регистров, имеющихся в процессоре 8086 (IP и FLAGS), в защищенном режиме для программ, имеющих наивысший уровень привилегий, доступны регистры CR0-CR4 (Control Registers), содержащие информацию о состоянии процессора. Регистр CR1 зарезервирован. Для определенности далее будем основываться на архитектуре процессора Intel Pentium.