Смекни!
smekni.com

Разработка программы на языке ассемблер Компиляция откладка программы (стр. 2 из 3)

Различные ОС обладают теми или иными возможностями по обслуживанию компонентов компьютера и организации диалога с пользователем. К числу основных характеристик ОС относят: разрядность поддержка многопроцессорности, многозадачность, поддержка многопользовательского режима.

Разрядность ОС определяет, какую разрядность внутренней шины данных ЦП может поддерживать ОС. Все современные ОС поддерживают 32-разрядный интерфейс прикладных программ. ОС может поддерживать два режима работы ЦП: реальный и защищенный. В реальном режиме, характерном для системы MS-DOS, все программы и данные располагаются в одной области ОП. Таким образом пользователь может войти в любую системную программу и испортить ее. 32-разрядные ОС поддерживают защищенный режим работы ЦП, который позволяет хранить программы и данные раздельно, в соответствии с их важностью в системе.

Многопроцессорность – это способность ОС, ЦП и системных контроллеров компьютера поддерживать одновременную работу нескольких процессоров над выполнением одной и той же задачи. ОС могут быть ориентированы на одновременное обслуживание нескольких процессов (задач). Такое свойство ОС называется многозадачностью. Многозадачность могут поддерживать все современные процессоры и чипсеты ПК. ЦП в определенные кванты времени выполняет работу над отдельными фрагментами задач. У пользователя складывается впечатление одновременности их выполнения. ОС обеспечивает переключение ЦП и других устройств с выполнения одной задачи на другую, распределяет между задачами системные ресурсы и синхронизирует задачи между собой.

Переносимость ОС – это возможность ОС работать на компьютерах, базирующихся на ЦП с различной архитектурой.

ОС MS DOS

Операционная система MS-DOS за годы своего существования прошла путь от простого загрузчика до универсальной системы для персональных компьютеров, построенных на базе микропроцессоров Intel 8086/8088.

Операционная система MS-DOS была разработана компанией Microsoft в 1981 г. и впервые использована фирмой IBM для персональных компьютеров – тогда она была названа PC DOS 1.0. В последующие годы MS-DOS многократно перерабатывалась и приобретала новые важные функции (версии 2.0 в 1983 г., 3.0 в 1984 г., 3.2 в 1986 г., 3.3 в 1987 г., 4.0 в 1988 г., 5.0, …, 6.22). Например, в версии 4.0 появилась графическая оболочка пользователя DOS-Shell, в версии 5.0 – целый ряд сервисных программ (редактор командной строки DOSKEY, страничный редактор EDIT, и т.д.).

MS-DOS является однозадачной однопользовательской системой. Она требует относительно небольшого объема памяти, легко адаптируется к разнообразным аппаратным конфигурациям и поэтому достаточно популярна среди пользователей. Кроме того, ее можно считать основой для изучения операционных систем и их возможностей – знакомство с общей структурой системы MS-DOS очень полезно для понимания поведения вычислительной системы в целом. Многие ОС, созданные позднее, имеют пользовательский интерфейс, совместимый с MS-DOS. Например, это система MS OS/2, в которой реализованы многозадачный и защищенный режим, система виртуальной памяти.

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

· BIOS (базовая система ввода-вывода),

· Ядро системы DOS,

· Командный процессор (оболочка).

Модуль BIOS индивидуален для каждой вычислительной системы и поставляется ее изготовителем. В этом модуле по умолчанию резидентно

содержатся аппаратно-зависимые драйверы следующих устройств:

· Консольный дисплей с клавиатурой (CON);

· Устройство построчной печати (PRN);

· Последовательный канал связи (AUX);

· Часы/календарь (CLOCK$);

· Дисковое устройство начальной загрузки.

Ядро системы MS-DOS взаимодействует с драйверами этих устройств с помощью пакетов запросов ввода-вывода. Затем драйверы переводят эти запросы в сами команды для различных аппаратных контроллеров.

Ядро DOS реализует MS-DOS, как она видится прикладным программам. Ядро – это специальная программа, которая включает набор аппаратно-независимых сервисных программ, называемых системными функциями. К ним можно отнести следующие функции:

· управление файлами и записями;

· управление памятью;

· символьно-ориентированное устройство ввода-вывода;

· порождение других задач;

· доступ к часам реального времени.

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

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

Язык ассемблера

Понятие ассемблера

Язык ассемблера позволяет лучше понять взаимодействие всех функциональных узлов компьютера с операционной системой. Язык ассемблера – это специфический язык программирования со взаимно однозначным соответствием между его операторами и командами процессора. Язык ассемблера существует для каждого типа процессоров или целого семейства процессоров, поскольку команды на языке ассемблера должны иметь взаимно однозначное соответствие с системой машинных команд и должны быть согласованы с архитектурой компьютера. В данном курсе рассматривается система команд для 16-разрядного 8086-88 процессоров производства Intel. Микропроцессоры 8086-88 характеризуются основным адресным пространством объемом 1 (MB) мегабайт, из которого первые 640 KB (килобайт) отведены под основную память (RAM) и адресным пространством ввода/вывода объемом 65536 байтов.

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

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

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

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

Разработка программы на языке ассемблера

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

· постановка задачи и составление проекта программы;

· создание файла с текстом программы с помощью любого текстового редактора;

· трансляция программы с помощью ассемблера, при обнаружении ошибок – исправить их в текстовом редакторе и оттранслировать заново;

· преобразование результата работы ассемблера в исполняемый модуль с помощью компоновщика;

· запуск программы на исполнение;

· проверка результатов. В случае не соответствия необходимо найти ошибки с помощью отладчика.

Программа, написанная в кодах ассемблера, называется исходной программой, а ее преобразованный вид в команды микропроцессора – объектной программой или объектным модулем. Компоновщик позволяет

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

Для создания программ на языке ассемблера в данном курсе используются программный продукт Турбо Ассемблер фирмы Borland Int. Компилятор Турбо Ассемблера – это выполняемая программа, размещенная в файле TASM.EXE, а компоновщик содержится в файле TLINK.EXE. Отладчик содержится в файле TD.EXE. Процесс компиляции и компоновки программы на языке ассемблера выглядит следующим образом.

Рисунок 1 Этапы разработки программы на языке ассемблера

Компиляция и отладка программы