Автор: Пользователь скрыл имя, 13 Декабря 2011 в 21:28, реферат
По мере повышения нашей зависимости от компьютеров пользователям необходимы все более надежные и защищенные системы, способные выполнять несколько задач одновременно.
Процессоры могут работать в различных режимах. Под термином «режим» подразумевается способы, которым процессор создает (и обеспечивает) для себя рабочую среду. Режим работы процессора задает способ адресации к оперативной памяти и способ управления отдельными задачами. Процессоры персональных компьютеров могут работать в трех режимах: реальном, защищенном и виртуальном режимах.
Максимальный режим работы ЦП. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
Уровни привилегий. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
Адресация памяти в защищенном режиме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Работа прерываний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
Список литературы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Компиляция и отладка ассемблерных программ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Общие сведения о языке ассемблера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Процесс разработки программы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Компиляция программы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Отладка программы. . . . . . . . . . . . . . . . . . . . .
В поле метки
каждая метка должна быть определенна
только один раз, но ссылок к ней
можно использовать столько раз,
сколько это необходимо. В противном
случае ассемблер выдаст диагностическое
сообщение о многократно
Поле КОД содержит символическое имя выполняемой команды или псевдокоманды. Мнемоника большинства команд представляет собой аббревиатуру предложений на английском языке, характеризующих их основную функцию.
Например:
MOV(MOVE)-передать, переслать
ADD(ADDITION)-сложение
SUB(SUBSTRACT)-вычитание
LDA(LOAD DIRECT ACCUMULATOR)-непосредственная загрузка аккумулятора
INR(INSCREMENT REGISTER)-инкремент регистра
DCR(DECREMENT REGISTER)декремент регистра
Мнемоники команд
являются ключевыми словами ассемблера,
и если они не входят во множество
допустимых мнемоник, то ассемблер
выдает сообщение о недействительной
команде.
Поле ОПЕРАНД определяется обычно в зависимости от поля кода команды. Оно может содержать либо один, либо несколько операндов, разделенных запятыми, либо не содержать ни одного операнда для тех команд, которые оперируют внутренними рабочими регистрами.
Операнд представляет собой выражение, содержащее мнемоническое обозначение, константы и операторы.
Простейшие операнды содержат одно мнемоническое обозначение или одну константу.
В качестве мнемонического
обозначения могут
Константы могут
быть представлены в различных системах
счисления.
Процесс
разработки программы.
На рис.1 приведена общая схема процесса разработки программы на ассемблере. На схеме выделено четыре этапа этого процесса. На первом этапе, когда вводится код программы, можно использовать любой текстовый редактор. В Windows таким редактором может быть Блокнот (Notepad). При выборе редактора нужно учитывать, что он не должен вставлять «посторонних» символов (специальных символов форматирования). С этой точки зрения Microsoft Word в качестве основного редактора ассемблерных программ не годится. Созданный с помощью текстового редактора файл должен иметь расширение *.ASM.
Рис. 1. Схема
процесса разработки программы на ассемблере
Для выполнения
остальных этапов разработки требуются
специализированные программные средства
из пакета MASM или TASM.
Компиляция.
Компиляция —
трансляция программы, составленной
на исходном языке, и последующая её
компоновка в программу на некоем интерпретируемом
коде. Любой компилятор состоит из транслятора
и компоновщика.
Трансляция
программы.
Для трансляции нужен подготовленный и записанный на диск исходный текст программы.
На этапе трансляции решается несколько задач:
Программа,
которая реализует эти задачи,
называется ассемблером. Итог работы
ассемблера — два файла:
При использовании
пакета TASM получение объектного
модуля исходного файла производится
программой (ассемблером) TASM.EXE.
Формат командной
строки для запуска tasm.exe следующий:
TASM [ключи]
имя_исходнрго_файла [,имя_объектного_файла]
[,имя_файла_листинга] [,имя_файла_перекрестных_
Параметры, заключенные в скобки – это необязательные параметры. Отсюда следует, что обязательным аргументом командной строки является лишь имя исходного файла. Этот файл должен находиться на диске и обязательно иметь расширение *.ASM.
Необязательный аргумент [ключи] позволяет задавать режим работы транслятора TASM (например, ключ /zi включает полную информацию для отладчика).
После того как
инициировали трансляцию программы
командной строкой, на экране появиться
последовательность строк. Если программа содержит
ошибки, то транслятор выдаст на экран
строки сообщений, начинающиеся словами ≪Error≫
и ≪Warning≫.
Для устранения ошибок нужно определить
место их возникновения и проанализировать
ситуацию.
Файл
листинга содержит код ассемблера исходной
программы, а также расширенную информацию
об этом коде. Для каждой команды ассемблера
указываются ее машинный (объектный) код
и смещение в кодовом сегменте. Кроме того,
в конце листинга TASM формирует таблицы
с информацией о метках и сегментах, используемых
в программе. Если есть ошибки или сомнительные
участки кода, то TASM включает в конец листинга
сообщения о них. Если сравнить их с сообщениями,
выводимыми на экран, то видно, что они
совпадают. Кроме того, что очень удобно,
эти же сообщения включаются в текст листинга
непосредственно после ошибочной строки.
Строки в файле
листинга имеют следующий формат:
глубина_вложенности
номер_строки смещение
машинный_код исходный_код
глубина_вложенности — уровень вложенности включаемых файлов или макрокоманд в файле.
номер_строки — номер строки в файле листинга. Номера строк листинга используются для локализации ошибок и формирования таблицы перекрестных ссылок.
смещение — смещение в байтах текущей команды относительно начала сегмента кода. Это смещение называют также счетчиком адреса. Величину смещения вычисляет транслятор для адресации в сегменте кода.
машинный_код — машинное представление команды ассемблера, представленной далее в этой строке полем исходный_код.
исходный_код —
строка кода из исходного файла.
Компоновка
программы.
После устранения ошибок и получения объектного модуля можно приступать к следующему этапу — созданию исполняемого (загрузочного) модуля, или, как еще называют этот процесс, к компоновке программы. Главная цель этого этапа — преобразовать код и данные в объектных файлах в их перемещаемое выполняемое отображение.
Результатом работы компоновщика является создание загрузочного файла с расширением *.ЕХЕ или *.Com. После этого операционная система может загрузить такой файл в память и выполнить его. Для этого используется TLINK.exe фирмы Borland
(для макроассемблера
LINK.EXE фирмы Microsoft).
Для выполнения
компоновки запускается программа например
tlink.exe командной строкой вида:
TLINK [ключи]
список_объектных_файлов [необязательные
параметры]
список_объектных_файлов — обязательный параметр, содержащий список компонуемых файлов с расширением .obj. Файлы должны быть разделены пробелами или знаком + (плюс), например: t l i n k /v prog + mdf + fdr
В результате получаем
исполняемый модуль с расширением *.ЕХЕ.
Отладка
программы.
На этапе отладки в соответствие с алгоритмом проверяется правильность функционирования, как отдельных фрагментов кода, так и программы в целом. Но даже успешное завершение отладки еще не является гарантией того, что программа будет работать правильно со всеми возможными исходными данными. Поэтому нужно обязательно провести тестирование программы, то есть проверить ее работу на «пограничных» и заведомо некорректных исходных данных. Для этого составляются тесты. Вполне возможно, что результаты тестирования не удовлетворят разработчика программы. В этом случае ему придется вносить поправки в код программы, то есть возвращаться к первому шагу процесса разработки.
Специфика программ
на ассемблере состоит в том, что
они интенсивно работают с аппаратными
ресурсами компьютера. Это обстоятельство
заставляет программиста постоянно
отслеживать содержимое определенных
регистров и областей памяти. Естественно,
что человеку трудно следить за этой
информацией с большой степенью
детализации. Поэтому для локализации
логических ошибок в программах используют
специальный тип программного обеспечения
— программные
отладчики.
Отладчики бывают
двух типов:
Ни MASM, ни TASM не имеет своей интегрированной среды, поэтому для отладки написанных на языке ассемблера программ используют либо автономные отладчики, либо отладчики некоторой среды программирования (например, Visual C++). С помощью автономного отладчика можно исследовать работу любой программы, для которой создан исполняемый модуль, независимо от того, на каком языке был написан его исходный текст.
Например отладчик Turbo Debugger (TD), разработанный фирмой Borland International.
Представляет собой
оконную среду отладки программ на уровне
исходного ассемблерного текста.
Он позволяет
решить две главные задачи:
Некоторые возможности
TD:
инструкция;
трассировки.
Эти действия позволяют определить место и источник ошибки в программе.
TD не позволяет
вносить исправления в исходный текст
программы. Однако после определения причины
ошибочной ситуации можно, не завершая
работу отладчика, внести исправления
прямо в машинный код и снова запустить
программу.
Список
использованной литературы: