Низкоуровневые языки
Покупка
Основная коллекция
Издательство:
Российский университет транспорта
Автор:
Ларина Татьяна Борисовна
Год издания: 2018
Кол-во страниц: 147
Дополнительно
Учебное пособие содержит авторский конспект лекций в форме лекционных презентаций, а также дополнительные справочные и методические материалы для использования студентами при изучении дисциплин «Низкоуровневые языки программирования» и «Языки ассемблера». Рекомендуется для бакалавров направлений подготовки «Информатика и вычислительная техника» и «Информационная безопасность».
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 10.03.01: Информационная безопасность
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство транспорта Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Российский университет транспорта (МИИТ)» ________________________________________________________ Институт управления и информационных технологий Кафедра «Вычислительные системы и сети» Т.Б. ЛАРИНА НИЗКОУРОВНЕВЫЕ ЯЗЫКИ Учебное пособие Москва - 2018
Министерство транспорта Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Российский университет транспорта (МИИТ)» ________________________________________________________ Институт управления и информационных технологий Кафедра «Вычислительные системы и сети» Т.Б. ЛАРИНА НИЗКОУРОВНЕВЫЕ ЯЗЫКИ Учебное пособие для бакалавров направлений подготовки «Информатика и вычислительная техника» и «Информационная безопасность» Москва – 2018
УДК 004 Л-25 Ларина Т.Б. Низкоуровневые языки: Учебное пособие. - М.: РУТ (МИИТ), 2018. – 147 с. Учебное пособие содержит авторский конспект лекций в форме лекционных презентаций, а также дополнительные справочные и методические материалы для использования студентами при изучении дисциплин «Низкоуровневые языки программирования» и «Языки ассемблера». Рекомендуется для бакалавров направлений подготовки «Информатика и вычислительная техника» и «Информационная безопасность». Рецензенты: - профессор департамента программной инженерии факультета компьютерных наук НИУ «Высшая школа экономики», к.т.н., с.н.с. Шилов В.В. - доцент кафедры «Управление транспортным бизнесом и интеллектуальные системы» РУТ (МИИТ), к.т.н. Малинский С.В. РУТ (МИИТ), 2018
Т.Б.Ларина Низкоуровневые языки 3 СОДЕРЖАНИЕ Лекция 1. Введение в курс . . . . . . . . . . . . . . . . . . . . . . 4 Лекция 2. Основные понятия о вычислительной системе . . . . . 10 Лекция 3. Процессоры семейства х86. Регистры.. Форматы данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Лекция 4. Сегментная адресация памяти. Сегментация программ . 24 Лекция 5. Обзор системы команд процессора. Операнды в командах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Лекция 6. Символический язык транслятора (ассемблера) . . . . . 35 Лекция 7. Этапы подготовки исполняемой программы. Трансляция и компоновка . . . . . . . . . . . . . . . . . . . . . . 46 Лекция 8. Отладка программы . . . . . . . . . . . . . . . . . . . . 57 Лекция 9. Арифметические команды . . . . . . . . . . . . . . . . 63 Лекция 10. Логические команды, сдвиги, битовые команды . . . . 67 Лекция 11. Команды передачи управления. Разветвления. . . . . . 74 Лекция 12. Организация циклов. Работа с массивами данных. Строковые команды . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Лекция 13. Стековые команды. Процедуры . . . . . . . . . . . . 87 Лекция 14. Программные прерывания. Системный сервис для вывода символьной информации на экран . . . . . . . . . . . . . 94 Лекция 15. Системный сервис для ввода с клавиатуры . . . . . . . 103 Лекция 16. Системный файловый сервис . . . . . . . . . . . . . . 108 Лекция 17. Форматы команд процессора. . . . . . . . . . . . . . . 114 Лекция 18. Команды обращения к портам . . . . . . . . . . . . . . 126 Система команд процессора х386 . . . . . . . . . . . . . . . . . . 132 Таблица кодов операций базовых команд . . . . . . . . . . . . . . 144 Таблица ASCII- кодов . . . . . . . . . . . . . . . . . . . . . . . . 147
Т.Б.Ларина Низкоуровневые языки 4 1 Лекция 1. Введение в курс Программы пишутся для исполнения их процессором Исходная программа - это описание алгоритма действий и используемых данных с помощью символических языков. Чем «выше» (абстрактнее) язык, тем больше в нем символических конструкций, упрощающих реализацию алгоритмов и отладку программы. Для исполнения процессором исходная программа должна быть преобразована с символического языка (удобного программисту) на «язык» процессора: в коды команд и коды данных. То есть, получить «исполняемую» программу 2 Исполняемая программа (исполняемый код) Это последовательность кодов для процессора. Состоит из: - кодов команд процессора («машинные коды»), реализующих алгоритм - кодов данных (если есть в программе) На внешнем носителе исполняемый код размещается в файлах с расширением .exe , .com или dll. Исполняемый код доступен процессору для исполнения только, если он находится в системной памяти (ОЗУ, ПЗУ). Загрузку исполняемой программы из файла внешнего носителя в оперативную память выполняет операционная система (ОС).
Т.Б.Ларина Низкоуровневые языки 5 3 «Низкоуровневые» символические языки «Низкий» языковый уровень - это реализация алгоритмов непосредственно командами процессора Символический язык для записи исходного текста программы на уровне команд процессора называют языком ассемблера (языком транслятора). Ассемблер (транслятор) – служебная программа для преобразования символической записи команд и данных в машинные коды для процессора. 4 Пример работы транслятора Символическая запись команд в исходном тексте: add al, bl mov ah, 4ch nop Машинный код (в hex) после трансляции: 8E D8 B4 4C 90
Т.Б.Ларина Низкоуровневые языки 6 5 Отличие символических языков высокого уровня и низкоуровневых (языки ассемблеров) Не алгоритмические языки Реализуя алгоритм непосредственно командами процессора, можно влиять на объем кода и его быстродействие Это алгоритмические языки: имеют разнообразные языковые конструкции, библиотеки для упрощения реализации алгоритмов. Но, на объем и эффективность будущего кода автор повлиять не может «Машинно-зависимые» языки: используется система команд конкретного процессора (семейства процессоров) Это универсальные языки: не зависят от конкретной аппаратной платформы (архитектуры процессора) Языки ассемблеров ЯВУ 6 Отличие компиляторов с ЯВУ от трансляторов с языков ассемблера Цель: получить из исходного текста исполняемый код для процессора Компилятор - преобразует один оператор ЯВУ в последовательность из нескольких машинных команд: 1 оператор ?? машинных команд Транслятор преобразует одну символически записанную команду процессора в одну машинную команду: 1 символическая команда 1 машинная команда Сравним объем полученного исполняемого кода компилятором и транслятором на простом примере:
Т.Б.Ларина Низкоуровневые языки 7 7 Пример: Увеличить на 2 каждый элемент массива из 5-ти однобайтных чисел Исходный текст на С++ (primer.cpp) void main () ; { short int x[5] = {1,5, -3, 23, 12} ; for (int k =0; k<5; ++k) x[k]= x[k]+2; } ================= Исходный текст - 98 байт. Исполняемый код Рrimer.exe, полученный компилятором Borland C++ v.3, составляет 6356 байт Исходный текст на ассемблере (primer.asm) code segment assume cs:code a1: mov bx, ds ; команды mov ds, bx xor si,si mov cx,5 a2: add сs:x[si],2 inc si loop a2 mov ah,4ch int 21h x db 1,5,-3,23,12 ; данные code ends end a1 ======================= Исходный текст - 212 байт. Исполняемый код Primer.exe после трансляции - 539 байт 8 Место низкоуровневых языков программирования Для прямого программного доступа к аппаратным ресурсам системы Для создания минимальной по размеру и по времени исполнения программы Инструмент анализа исполняемых кодов при отсутствии их исходных текстов Уникальное учебное средство для понимания принципов работы вычислительной системы: работы процессора, его взаимодействия с памятью и аппаратурой
Т.Б.Ларина Низкоуровневые языки 8 9 Организация работы Конспект лекций доступен студенту для предварительного ознакомления с материалом лекции и самостоятельной работы Лекции и практические занятия - единое целое. На практических занятиях будут рассматриваться вопросы, не включенные в лекции Требуется активная работа на занятиях ! Вести тетрадь для работы на практических занятиях и лекциях (полезно иметь: карандаш + ластик) Выполнение индивидуальных заданий в рамках самостоятельной домашней работы для приобретения и закрепления навыков работы на низкоуровневых языках 10 Критерии оценки успеваемости (промежуточной и текущей) активная работа на занятиях умение ответить на контрольные вопросы по каждой теме успешное выполнение контрольных работ по предлагаемым темам грамотное, самостоятельное выполнение и защита индивидуальных заданий успешная сдача экзамена Помнить: умения и навыки по разработке и реализации алгоритмов на уровне команд процессора приобретаются постепенно, пропорционально затраченному на работу времени
Т.Б.Ларина Низкоуровневые языки 9 11 Правила отчетности по курсу Предоставление отчета (в печатном виде) и защита выполненного индивидуального задания на занятиях. В защиту работы входят контрольные вопросы по теме и вопросы по заданию. Очередное задание выдается после успешной защиты предыдущего и при условии выполнения контрольной работы по предыдущей теме. Аттестация текущего контроля происходит 2 раза на основе результатов текущей работы студента. Результаты текущего контроля учитываются в аттестации (экзамен) по завершении семестра. В конце семестра будет предоставлено 2-3 дополнительных занятия для отстающих студентов. Студенты, не выполнившие в семестре программу курса в достаточной степени (менее 6 защищенных индивидуальных заданий), к сдаче экзамена не допускаются и аттестованы не будут. Студентам, получившим на экзамене неудовлетворительную оценку, будет предоставлена возможность двух переэкзаменовок в течение первого месяца следующего семестра.