Студопедия — Assembler IBM PC
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Assembler IBM PC






 

Часть 1

Лабораторный практикум

 

Утверждено Редакционно-издательским советом университета
в качестве учебного пособия

 

 

Новосибирск

УДК 004.431.4(075.8)

А 941

 

 

Рецензенты: канд. техн. наук, доц. Г.П. Голодных,
ст. преп. Л.Г. Макаревич,

 

Работа подготовлена на кафедре вычислительной техники
для студентов II курса АВТФ, обучающихся
по специальности 2201 «Вычислительные
машины, комплексы, системы и сети»

 

 

Афанасьев В.А.

А 941 Assembler IBM PC: Учебное пособие. Ч.1. Лабораторный практикум. –
Новосибирск: Изд-во НГТУ, 2003. – 115 с.

 

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

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

 

УДК 004.431.4(075.8)

 

ã В.А. Афанасьев, 2003

ã Новосибирский государственный

технический университет, 2003

Предисловие

Assembler IBM PC, являющийся символическим представлением машинного языка, неразрывно связан с архитектурой процессоров Intel 80x86, что создаёт возможность изучения компьютера на " нижнем уровне", а именно: систему команд и форматы данных, программную модель компьютера и логическую организацию памяти, управление операциями ввода-вывода и систему обработки прерываний, функции базовой системы ввода/вывода BIOS и операционной системы DOS. Следовательно, язык ассемблера является неотъемлемой частью профессионального компьютерного образования.

Предлагаемое читателю учебное пособие (часть 1) ориентировано на проведение лабораторного практикума по дисциплине " Программирование. Раздел: Assembler IBM PC", включающей, помимо лекций и лабораторных занятий, выполнение курсовой работы. Выполнению курсовой работы " Разработка прикладных обработчиков прерываний и резидентных программ в MS-DOS." – будет посвящена вторая часть учебного пособия.

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

· к использованию программного пакета Turbo Assembler фирмы Borland (TASM) для ассемблирования, компоновки и отладки программ;

· применению сервисных функций DOS и BIOS в ассемблерных программах;

· архитектурным особенностям процессоров Intel (организация памяти, программная модель, система команд процессора и обработка программных прерываний).

Все эти вопросы нашли отражение в пособии.

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

· характеристика операционной среды MS DOS в операционной системе Windows;

· особенности взаимодействия ассемблерных программ с MS DOS и аппаратными средствами компьютера;

· форматы исполняемых файлов.EXE и.COM в памяти и на диске.

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

1. Краткая характеристика операционной среды MS-DOS
в компьютерах с операционной системой Windows

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

В чём заключается основное различие программ, написанных для MS-DOS и Windows? Программа для DOS " считает", что она – единственная программа на компьютере и поэтому может и должна напрямую взаимодействовать с программно- управляемыми аппаратными средствами, такими, например, как запись информации на диск или вывод на экран дисплея. Программа для Windows, реализующей многозадачный режим, наоборот, использует ресурсы компьютера совместно с другими программами Windows. Распределение ресурсов компьютера между программами – одна из основных функций данной операционной системы. Развитие операционной системы Windows прошло к настоящему времени (в свете её взаимодействия с DOS) три стадии. Первые версии Windows основывались на DOS и скорее представляли развитую графическую надстройку к ней, однако Windows 95/98 и их модификации (кратко Windows 9х) представляют собой полнофункциональные операционные системы, обеспечивающие полную обратную совместимость с 16-разрядными приложениями DOS.

Запустить программу DOS в компьютере, оснащённом операционной системой Windows 9х, можно щелчком на имени файла расширением.exe,.com,.bat,.pif (последнее расширение представляет специальный информационный файл-ярлык, содержащий установки для наиболее эффективного выполнения в Windows 9х конкретной программы DOS). Однако на практике поступают по-другому.

Первый и наиболее предпочтительный способ основывается на использовании так называемых файловых " оболочек-командиров" для DOS и Windows, предоставляющих большое множество сервисных услуг по манипулированию файлами и директориями. К тому же каждая такая " оболочка-командир" содержит встроенные текстовые редакторы для DOS-программ. К наиболее популярным программам следует отнести: Norton Commander, DOS Navigator, Volkov Commander, Far и Windows Commander (разработаны соответственно в США, Молдове, Украине, России и Швейцарии).

Запуск программы из среды Windows 9х в сеансе MS-DOS: подменю < Программы>;, меню < Пуск>;, пункт < Сеанс MS-DOS>;. Для переключения сеанса MS-DOS между оконным и полноэкранным отображением нужно нажать клавиши < Alt – Enter>. Для запуска сеанса MS-DOS можно воспользоваться файлом Command.com или соответствующим ему информационным файлом Command.pif (pif-файл сообщает Windows режим окна сеанса – полноэкранный или оконный, характер использования памяти, приоритет программы в многозадачном режиме и прочее).

Наконец, Windows 9х предоставляет возможность исполнить DOS-программу непосредственно в операционной среде MS-DOS (правильнее – в подсистеме MS-DOS, входящей в состав Windows 9х). Для этого нужно выполнить команду: < Пуск> – < Завершение работы> – < Перезагрузить компьютер в режиме MS-DOS>;.

Последние версии операционной системы Windows 2000 основаны на продолжении линии Windows NT. Не вдаваясь в характеристику операционных систем из семейства Windows NT/2000, отметим лишь, что в них исключена возможность исполнения программы в режиме MS-DOS. В Windows 2000 имеется своя " DOS" – виртуальная DOS-машина (VDM). VDM поддерживает большую часть команд DOS, расширив их за счёт команд специфичных для самой Windows. В Windows 2000 DOS нет: за все процедуры, которые обычно выполняет MS-DOS, отвечает ядро Windows 2000 – NtOsKrnl.

VDM запускается командой < Пуск> – < Командная строка>;. Что соответствует запуску универсального интерпретатора команд Cmd.exe в каталоге Windows\System32 (впрочем сохранён и интерпретатор командного процессора DOS – Command.com). С возможностями командной строки можно ознакомится с помощью команды Help cmd. Для инициализации среды VDM, вместо файлов Autoexec.bat и Config.sys используются Autoexec.nt и Config.nt, также расположенные в папке Windows\System32 [1].

2. Составные части MS-DOS и её инициализация

Всю систему можно условно разделить на пять основных частей. Первая часть – это Базовая Система Ввода-Вывода (BIOS – Basic Input Output System), записанная в той части памяти компьютера, которая носит название постоянного запоминающего устройства (ПЗУ). Дополнительная часть BIOS располагается во внешней памяти и переписывается в оперативную память (ОЗУ) компьютера в процессе загрузки. Функция BIOS ПЗУ заключается в обслуживании основных и наиболее фундаментальных операций компьютера. Поскольку система BIOS ПЗУ для IBM PC является " встроенной" в компьютер, она является не только составной частью DOS, но и составной частью любой операционной системы IBM PС. BIOS ПЗУ содержит программы, выполняющие следующие функции:

· тест самопроверки (программа POST – Power On Self Test – самопроверка при включении питания);

· начальный загрузчик;

· комплекс программ управления аппаратурой компьютера на самом низком (физическом) уровне, путём обращения к портам и аппаратным буферам.

Второй и третьей частью DOS являются дисковые файлы Io.sys и Msdos.sys. Оба файла считываются с диска в ОЗУ начальным загрузчиком. Io.sys осуществляет дополнение BIOS в зависимости от потребностей данной версии операционной системы. В ходе инициализации Io.sys формирует список резидентных драйверов устройств в соответствии со списком оборудования, полученным при работе POST, и изменяет некоторые векторы прерываний BIOS (т.е. Io.sys перехватывает обработку этих векторов у BIOS ПЗУ). Программа Msdos.sys (ядро DOS) устанавливает векторы прерываний DOS и выполняет инициализацию резидентных драйверов периферийных устройств (драйвером называется резидентная программа, постоянно находящаяся в памяти и обеспечивающая взаимодействие некоторых внешних устройств с операционной системой). Помимо этого, эта программа загружает командный процессор Сommand.com, – четвёртую часть операционной системы DOS. Command.com обслуживает работу системы с пользователем и состоит из трех частей:

· резидентной части, содержащей обработчики прерываний 22h (завершение процесса), 23h (реакция на Сtrl-C и Ctrl-Break), 24h (критическая ошибка);

· части инициализации, располагающейся в памяти вслед за резидентной частью Command.com. Она обеспечивает выполнение файла Autoexec.bat и уничтожается (освобождает память) после выполнения своих функций;

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

Для распознавания внутренних команд (таких как DEL, DIR, CD, COPY, MD, TYPE, REM и прочие) командный процессор содержит таблицу имён команд. Если при просмотре данной таблицы заданная команда не обнаружена, значит, она относится к категории внешней. Внешние команды (пятая часть DOS) не являются резидентными в памяти IBM PC и хранятся в программных файлах на диске. Как и все программные файлы, внешние команды имеют расширение имени файла .COM или .EXE. Примерами внешних команд могут служить Diskcopy.com, Doskey.com, Format.com, Mem.exe и т. п.

Инициализацию операционной системы условно разделим на 2 этапа. На первом производится самотестирование программой POST BIOS, на втором выполняется загрузка операционной системы.

При включении питания процессор начинает работу с передачи управления по адресу FFFF: 0000. Этот адрес принадлежит ПЗУ BIOS и содержит команду перехода на начало программы POST в ПЗУ. Программа POST выполняет тест ОЗУ (как правило, прохождение этого теста трассируется на экране терминала) и прочего оборудования ПЭВМ и инициализирует таблицу векторов прерываний в части прерываний, обслуживаемых BIOS. Затем BIOS начинает процедуру начальной загрузки. Начальный загрузчик опрашивает первое устройство гибких дисков, проверяя на нем наличие диска для начальной загрузки. Если диска там нет, программа обращается к жёсткому диску, читает с него главную загрузочную запись (Master Boot Record – MBR) и помещает её в память. MBR (512 байт), размещаемая в секторе 1, стороне 0, дорожке 0 первой доступной дискеты (или жесткого диска), обычно считывается в память по адресу 07C0h: 0000h и содержит небольшую программу и таблицу разделов диска, из которой данная программа получает информацию об активном (системном) диске. Выявив системный диск, программа из MBR читает первый 512-байтный сектор (0-ой по номеру) из системного диска, который и содержит загрузчик операционной системы.

Загрузка операционной системы (второй этап) определяется видом операционной системы и подробно рассматривается в специальных руководствах. Здесь кратко остановимся лишь на особенностях загрузки " близкой нам" MS-DOS (не будем забывать также о возможности конфигурации двойной загрузки, например, DOS и Windows 2000 – Windows при установке " видит" другую систему и по умолчанию её сохраняет).

Загрузчик, прежде всего, считывает файлы Io.sys и Msdos.sys. Затем выполняется обработка конфигурационных файлов Config.sys и Autoexec.bat, настраивающих среду функционирования компьютера. Сначала обрабатывается файл Config.sys, который в основном распределяет память и загружает драйверы устройств, после этого с помощью файла Autoexec.bat запускаются команды, которые можно было бы, в принципе, набрать пользователю в командной строке DOS и отправить на выполнение. Autoexec.bat также определяет каталоги (список каталогов указывается в строке, начинающейся оператором PATH), в которых должны будут искаться исполняемые программы. Последнее инициализационное действие DOS заключается в загрузке файла Command.com с последующей передачей ему управления.

3. Взаимодействие Ассемблерной программы
с MS-DOS и аппаратными средствами
Компьютера

Особенности взаимодействия программного кода программы с операционной средой DOS и программно доступными аппаратными средствами компьютера представлены на рис. 1.

Функции, выполняемые BIOS и DOS, а также драйверы образуют так называемые системные программные средства, без использования которых невозможно написать ни одну программу на языке ассемблера. При разработке программ на языках высокого уровня многие средства DOS реализуются в неявной форме с помощью использования встроенных функций или библиотечных процедур, в то время как ассемблерная программа обращается к функциям BIOS и DOS непосредственно с помощью механизма программных прерываний. Для вызова функции (модулей) BIOS или DOS программа использует команду Int n с соответствующим номером n. Программа передает параметры модулям BIOS (или DOS) через регистры процессора, результат работы модуля возвращается также в регистрах.

 
 

 


Рис. 1. Уровни взаимодействия аппаратных и системных средств MS-DOS
при исполнении ассемблерной программы

 

BIOS обеспечивает управление аппаратурой компьютера на самом низком (физическом) уровне путём обращения к портам и аппаратным буферам, поэтому её программные модули меняются с изменением " материнской" платы компьютера. Прикладные программы используют не все возможные номера прерываний для BIOS. Часть из них предназначена для аппаратных прерываний от периферийных устройств, а часть зарезервирована для MS-DOS. Ниже перечислены функции BIOS, предоставляемые пользовательским программам на ассемблере [2]:

· определение конфигурации компьютера (Int 11h);

· определение объема оперативной памяти (Int 12h);

· работа с видеоконтроллером (Int 10h);

· работа с клавиатурой (Int 16);

· обслуживание дисковой подсистемы (Int 13h);

· вывод данных в параллельный порт (Int 17h);

· обслуживание последовательного порта (Int 14h);

· работа с системными часами (Int 1Ah);

· перезагрузка операционной системы (Int 19h);

· системный сервис для машин класса AT (Int 15h).

Программы DOS, размещаемые в основном в файлах Io.sys и Msdos.sys, образуют более высокий уровень управления компьютером. Ниже перечислены функции, предоставляемые программе через механизм прерываний [2]:

· завершение работы программы (Int 20h, Int 4Ch);

· чтение диска и запись на диск с абсолютной адресацией секторов (Int 25h, Int 26h);

· завершение работы программы с оставлением ее резидентной в памяти (Int 27h, Int 31h);

· недокументированное прерывание, используемое резидентными программами (Int 28h);

· выполнение команды MS-DOS (Int 2Eh);

· мультиплексное прерывание, используется для программы печати print и других резидентных программ; открывает доступ к внутренним функциям и структурам MS-DOS (Int 2Fh).

Важные функции выполняет прерывание Int 21h – их можно разделить на следующие группы:

· получение системной информации;

· символьный ввод/вывод;

· работа с файловой системой;

· управление программами;

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

· связь с драйверами устройств;

· прочий системный сервис (обработка ошибок, служба времени).

В заключение следует отметить два момента для программ на языке ассемблере:

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

· средства доступа аппаратного уровня обеспечиваются в основном системой команд микропроцессора.

4. Сегментированная организация памяти
в реальном режиме. Виды памяти
в среде MS-DOS

В компьютерах IBM PC используются процессоры фирмы Intel серии i80x86 (i8086 в компьютерах PC/XT и Pentium 4 – условно i80886 – в последних моделях компьютеров). При этом каждый из процессоров, начиная с i80286, имеет специальный режим эмуляции (программной совместимости) базового процессора i8086 с добавлением возможности использования 32-разрядных регистров, начиная с i80386. Обычно этот режим называется режимом реального адреса (Real Address Mode) или R- режим. На какие же параметры процессора i8086 была сориентирована разработка операционной системы MS-DOS, работающая в данном режиме? Данный процессор имеет 16-разрядную внутреннюю архитектуру и такой же разрядности шину данных. Таким образом, диапазон представления целых чисел (данные или адрес) не превышает 216 – 1 = 65535 (или 64 К – 1). Однако адресная шина включает 20-линий, что соответствует объёму адресуемой памяти 220 = 1 Мбайт (память в компьютере состоит из однобайтовых ячеек, а порядковый номер ячейки образует её физический адрес).

Для того, чтобы с помощью 16-разрядных адресов можно было обращаться в любую точку 20-разрядного адресного пространства, введён двухкомпонентный логический адрес из 16-разрядных компонент:

" Segment (сегмент): Offset (смещение)".

Здесь Segment – адрес сегмента, а Offset – смещение в этом сегменте. По умолчанию, в реальном режиме используется сегментная модель памяти с объёмом сегмента в 64 Кбайта, расположение объекта в котором, относительно его базового адреса, определяется смещением Offset. Расположение сегмента в адресном пространстве, а также механизм перехода от логического адреса к физическому показан на рис. 2.

 

 
 

 

 


Рис. 2. Сегментированная модель памяти реального режима

 

Рассмотрим пример с использованием 16-теричной системы счисления. Пусть логический адрес равен 0040h: 0220h. Тогда соответствующий ему физический адрес равен 0040h*10h + 0220h = 00620h. Надо отметить, однако, что обратный переход – от физического адреса к логическому – неоднозначен. В общем случае, сегментация – механизм адресации, обеспечивающий несколько независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты задач от взаимодействия друг на друга. Назначением базовых адресов сегментов занимается операционная система, а внутри каждого сегмента адреса формируются программой. Это эффективный адрес или смещение Offset. Важные замечания:

¨ DОS в зависимости от объёма кода и данных программы может так назначить базовые адреса, что они будут перекрываться;

¨ физический адрес базы сегмента кратен числу 16, поэтому сегменты начинаются на границах блоков с разницей в 16 байт (параграф);

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

Основной недостаток реального режима заключается в малом объеме
адресного пространства (всего 1Мбайт) в сочетании с малыми значениями
сегментов (всего 64 Кбайт). Однако, в то время – 1981 г. – думалось иначе.
Этот недостаток был устранён в старших моделях процессоров i80x86 с
32-разрядной архитектурой, использующих защищённый режим виртуального адреса Protected Virtual Address Mode (или просто защищённый режим – P -ре-жим) равный в пределе 4 Гбайтам (64 Гбайта для 36-разрядной адресной шины).

Рассмотрим распределение первого мегабайта памяти компьютера. В зависимости от модификации компьютера, настройки драйверов, управляющих памятью (а также типа версии используемой Windows), структура памяти несколько меняется. Однако размещение основных компонентов памяти (табл. 1) строго унифицировано.

Таблица 1







Дата добавления: 2014-11-10; просмотров: 1266. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

Индекс гингивита (PMA) (Schour, Massler, 1948) Для оценки тяжести гингивита (а в последующем и ре­гистрации динамики процесса) используют папиллярно-маргинально-альвеолярный индекс (РМА)...

Studopedia.info - Студопедия - 2014-2024 год . (0.014 сек.) русская версия | украинская версия