Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Низкоуровневые языки

Покупка
Основная коллекция
Артикул: 787108.01.99
Учебное пособие содержит авторский конспект лекций в форме лекционных презентаций, а также дополнительные справочные и методические материалы для использования студентами при изучении дисциплин «Низкоуровневые языки программирования» и «Языки ассемблера». Рекомендуется для бакалавров направлений подготовки «Информатика и вычислительная техника» и «Информационная безопасность».
Ларина, Т. Б. Низкоуровневые языки : учебное пособие / Т. Б. Ларина. - Москва : РУТ (МИИТ), 2018. - 147 с. - Текст : электронный. - URL: https://znanium.com/catalog/product/1895286 (дата обращения: 06.10.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство транспорта Российской Федерации 

Федеральное государственное бюджетное образовательное 

учреждение высшего образования 

 «Российский университет транспорта (МИИТ)» 

________________________________________________________ 

 

Институт управления и информационных технологий 

 

Кафедра «Вычислительные системы и сети» 

 
 
 
 
 

Т.Б.  ЛАРИНА 

 
 

НИЗКОУРОВНЕВЫЕ  ЯЗЫКИ  

 
 
 
 
 

Учебное  пособие 

 
 
 
 
 
 
 

Москва - 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 защищенных индивидуальных
заданий),  к сдаче экзамена не допускаются и аттестованы не будут.


Студентам, получившим на экзамене неудовлетворительную
оценку, будет предоставлена возможность двух переэкзаменовок в
течение первого месяца следующего семестра.