Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP_MET_1.DOC
Скачиваний:
2
Добавлен:
25.08.2019
Размер:
595.97 Кб
Скачать

69

О десский национальный морской

университет

Кафедра информационных технологий

А. Д. Бодарев

Системное программирование

на языке ассемблера

Методическое пособие

по теме

«Архитектура реального режима процессора.

Директивы языка»

Одесса 2010

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 4

1. Предварительные сведения 6

1.1. Подготовка программ на языке ассемблера 6

1.2. Представление данных в компьютерах 7

Остаток 7

Разряд 7

Таблица 3. Двоичные и шестнадцатеричные числа 9

Десятичное 9

2. Процессоры intel в реальном режиме 11

2.1. Регистры процессора 11

Рис. 3. Регистры общего назначения 12

Рис. 4. Стек 14

Рис. 5. Регистр флагов FLAGS 14

2.2. Способы адресации 15

Рис. 6. Полная форма адресации 18

2.3. Основные непривилегированные команды 18

Код команды 20

Рис. 7. Сдвиговые операции 32

Рис. 8. Сдвиги двойной точности 33

ROR 35

ROL 35

RCR 35

RCL 35

Рис. 9. Циклические сдвиги 35

IRETD 41

Рис. 10. Стековый кадр процедуры 43

3. Директивы и операторы ассемблера 51

3.1. Структура программы 52

3.2. Директивы распределения памяти 53

3.3. Организация программы 55

3.4. Выражения 62

3.5. Макроопределения 64

3.6. Другие директивы 67

ЛИТЕРАТУРА 69

Введение

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

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

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

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

Применение в языке ассемблера команд микропроцессора дает возможность использовать предоставляемые им средства с максимальной полнотой. Написанные на ассемблере программы могут не зависеть ни от сред разработки, ни от библиотек подпрограмм, ни от операционной системы, ни даже от базовой системы ввода-вывода.

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

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

Разработка системных программ на языке ассемблера, независимо от предмета решаемых задач, предполагает знание архитектуры процессора, директив языка и правил оформления исходного кода. Данное методическое пособие призвано осветить именно эти вопросы, составляющие часть курса «Системное программирование». Здесь рассматриваются базовые элементы архитектуры семейства процессоров Intel (86- совместимых), в частности, машинное представление данных и используемые системы счисления, регистры, режимы адресации, группы и форматы команд; структура программы, директивы, операторы и выражения языка MASM.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]