Машинно-ориентированное программирование
Покупка
Основная коллекция
Тематика:
Программирование и алгоритмизация
Издательство:
Южный федеральный университет
Год издания: 2016
Кол-во страниц: 87
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Магистратура
ISBN: 978-5-9275-2065-7
Артикул: 695800.01.99
Настоящее учебное пособие посвящено изучению основных принципов применения языка программирования Ассемблер. Большое количество наглядных примеров позволит освоить ос-новные принципы составления программ на языке Ассемблер. А комплекс лабораторных работ по изучению основных приемов использования языка Ассемблер будет способствовать закреп-лению изученного материала. Учебное пособие по курсу "Ма-шинно-ориентированное программирование" рассчитано на сту-дентов, магистрантов и аспирантов направлений 10.03.01 «Ин-формационная безопасность», 10.05.02 «Информационная без-опасность телекоммуникационных систем», 10.05.03 «Инфор-мационная безопасность автоматизированных систем». Изучен-ный материал позволит самостоятельно применять полученные знания на практике.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 10.03.01: Информационная безопасность
- ВО - Специалитет
- 10.05.02: Информационная безопасность телекоммуникационных систем
- 10.05.03: Информационная безопасность автоматизированных систем
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Е.С. Абрамов, И.Д. Сидоров МАШИННО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» ИНЖЕНЕРНО-ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ Е.С. Абрамов, И.Д. Сидоров МАШИННО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Учебное пособие Таганрог Издательство Южного федерального университета 2016
УДК 004.431.4(075.8) ББК 32.973Я73 А161 Печатается по решению редакционно-издательского совета Южного федерального университета Рецензенты: главный научный сотрудник ГНИИИ ПТЗИ ФСТЭК, доктор технических наук Ю. К. Язов; директор ООО «GigitalPro», кандидат технических наук М. Н. Казарин. Абрамов, Е.С., Сидоров, И.Д. Машинно-ориентированное программирование : учебное пособие / Е.С. Абрамов, И.Д. Сидоров ; Южный федеральный университет. – Таганрог : Издательство Южного федерального университета, 2016. – 87 с. ISBN 978-5-9275-2065-7 Настоящее учебное пособие посвящено изучению основных принципов применения языка программирования Ассемблер. Большое количество наглядных примеров позволит освоить основные принципы составления программ на языке Ассемблер. А комплекс лабораторных работ по изучению основных приемов использования языка Ассемблер будет способствовать закреплению изученного материала. Учебное пособие по курсу "Машинно-ориентированное программирование" рассчитано на студентов, магистрантов и аспирантов направлений 10.03.01 «Информационная безопасность», 10.05.02 «Информационная безопасность телекоммуникационных систем», 10.05.03 «Информационная безопасность автоматизированных систем». Изученный материал позволит самостоятельно применять полученные знания на практике. ISBN 978-5-9275-2065-7 УДК 004.431.4(075.8) ББК 32.973Я73 © ЮФУ, 2016 © Абрамов Е.С., Сидоров И.Д., 2016 А161
Содержание Введение..................................................................................................... 4 1. Устройство микропроцессора i386....................................................... 5 1.1. Основные сведения о микропроцессоре i386................................... 5 1.2. Виды адресации .................................................................................. 7 2. Защищённый режим микропроцессоров i386 ................................... 12 2.1. Общие сведения о защищенном режиме ........................................ 12 2.2. Дескриптор........................................................................................ 13 2.3. Таблицы дескрипторов..................................................................... 16 2.4. Селектор ............................................................................................ 17 2.5. Преобразование логического адреса в линейный.......................... 18 2.6. Сегментный регистр ......................................................................... 20 2.6. Страничная адресация...................................................................... 21 2.7. Каталоги и таблицы страниц ........................................................... 23 2.8 Линейная адресная трансляция (4 кб страницы) ............................ 24 2.9. Линейная адресная трансляция (4 мб страницы)........................... 24 2.10. Элементы каталогов и таблиц страниц......................................... 26 3. Механизмы защиты ............................................................................. 30 Лабораторная работа № 1 ....................................................................... 36 Лабораторная работа № 2 ....................................................................... 43 Лабораторная работа № 3 ....................................................................... 46 Лабораторная работа № 4 ....................................................................... 52 Лабораторная работа № 5 ....................................................................... 56 Лабораторная работа № 6 ....................................................................... 60 Лабораторная работа № 7 ....................................................................... 66 Лабораторная работа № 8 ....................................................................... 73
Введение Данное учебное пособие предназначено для теоретической и практической подготовки по курсу «Машинно ориентированное программирование». Учебное пособие содержит теоретический материал по изучению основных регистров и команд для низкоуровневого языка программирования Ассемблер. В учебном пособии приведен комплекс лабораторных ра бот, направленных на изучение студентами различных аспектов программирования на языке ассемблера, таких как: работа с арифметическими и логическими командами, командами передачи управления. Учебное пособие ориентировано на студентов, магистран тов и аспирантов Института компьютерных технологий и информационной безопасности Южного федерального университета, обучающихся по направлениям 10.03.01 «Информационная безопасность», 10.05.02 «Информационная безопасность телекоммуникационных систем», 10.05.03 «Информационная безопасность автоматизированных систем». Изученный материал позволит самостоятельно применять полученные знания на практике. Предполагается, что студенты знакомы с основами про граммирования на языке Си, а также имеют представление об операционных системах Windows и *nix.
1. УСТРОЙСТВО МИКРОПРОЦЕССОРА I386 1.1. Основные сведения о микропроцессоре i386 В ходе изучения данного курса мы будем работать с Ассем блером процессора Intel 386, а также процессоров, совместимых с ним. Выбор 32-разрядного процессора обусловлен тем, что 16разрядные процессоры на сегодняшний день сильно устарели, а для 64-разрядных нет бесплатных инструментов разработчика, удобных для работы студентов. Программная архитектура процессора Intel 386 представлена на рис. 1. Рис.1. Программная архитектура процессора Intel 386 С точки зрения программиста на Ассемблере, центральный процессор представляет собой устройство, интерпретирующее и выполняющее поток команд, а также ячейки памяти, называемые регистрами. Микропроцессор Intel 386 имеет в своем составе:
регистры общего назначения (EAX, EBX, ECX, EDX) – предназначены для хранения операндов и промежуточных результатов выполняемых операций; регистры-указатели стека (ESP, EBP) и индексные ре гистры (ESI, EDI) – используются для хранения базовых адресов и индексов при реализации некоторых способов адресации сложных структур данных; указатель команд (EIP); регистр признаков (EFLAGS) – содержит признаки ре зультата выполненной операции и флаги управления. Название регистров зависит от их назначения: EAX/AX/AH/AL (accumulator register) – аккумулятор, ис пользуется для обмена информацией с внешними устройствами; EBX/BX/BH/BL (base register) – регистр базы, используется для косвенной адресации; ECX/CX/CH/CL (counter register) – счётчик, используется в командах организации циклов; EDX/DX/DH/DL (data register) – регистр данных, использу ется для расширения целых чисел в командах умножения и деления; ESI/SI (source index register) – индекс источника, использу ется для косвенной адресации и в строковых (цепочечных) командах; EDI/DI (destination index register) – индекс приёмника (по лучателя), используется для косвенной адресации и в строковых (цепочечных) командах; ESP/SP (stack pointer register) – регистр указателя стека, ука зывает на первый заполненный байт в стеке; EBP/BP (base pointer register) – регистр указателя базы кадра стека, используется для организации кадра стека в процедурах/функциях на языках высокого уровня. Также модель процессора включает в себя сегментные ре гистры – CS,SS,DD,ES,FS,GS. Они не используются при выполнении лабораторных работ, так как за их заполнение отвечает операционная система Windows или Linux. Показанные на рис. 1 регистры EIP (указатель на текущую выполняемую команду) и EFLAGS (флаги) не могут быть непо
средственно использованы в командах ассемблера. Доступ к ним возможен косвенным образом. 1.2. Виды адресации Все имеющиеся способы адресации можно условно разде лить на три группы: регистровая, непосредственная и с указанием адреса в памяти. При этом адрес в памяти можно задавать поразному: прямым указанием символического обозначения ячейки памяти, указанием регистра, в котором хранится требуемый адрес, или и того и другого. Таким образом, третья группа включает, в сущности, целый ряд способов адресации. Они обычно носят названия: прямая, базовая, индексная, базовоиндексная, а также базовая, индексная или базово-индексная со смещением [6]. Регистровая адресация Операнд (байт или слово) находится в регистре. Способ применим ко всем программно-адресуемым регистрам процессора [6]. Примеры: push DS; Сохранение DS в стеке mov BP,SP; Пересылка содержимого SP в ВР Непосредственная адресация Операнд (байт или слово) может быть представлен в виде числа, адреса, кода ASCII, а также иметь символьное обозначение. Примеры: mov AX, 4C00h; Операнд – 16-ричное число mov DX, offset mas; Смещение массива mas заносится в DX mov DL,'!'; Операнд – код ASCII символа '!' num=9; Число 9 получает обозначение num mov CX, num; Число, обозначенное тип, загружается в СХ Прямая адресация памяти