Рекомендуем

Программирование на языке Ассемблера для микроконтроллеров семейства i8051Каспер Эрни Программирование на языке Ассемблера для микроконтроллеров семейства i8051
Самоучитель по системным функциям MS-DOSФиногенов К.Г. Самоучитель по системным функциям MS-DOS
Основы языка АссемблераФиногенов К.Г. Основы языка Ассемблера

Книга

Программирование на ассемблере

Учебное пособие для вузов
2011 г.
280 стр.
Тираж 500 экз.
Формат 70x100/16 (170x240 мм)
Исполнение: в мягкой обложке
ISBN 978-5-9912-0162-9
ББК 32.973я73
УДК 681.3
Гриф УМО
«Допущено Сибирским региональным отделением УМО вузов России по образованию в области информационной безопасности для межвузовского использования в качестве учебного пособия по специальностям: 090105 – «Комплексное обеспечение информационной безопасности автоматизированных систем» и 090102 – «Компьютерная безопасность», 090106 – «Информационная безопасность телекоммуникационных систем»
Аннотация

Изучение самого "древнего" из языков программирования - ассемблера абсолютно необходимо для всех, кто желает в совершенстве овладеть искусством программирования. Почему же ассемблер столь важен? Во-первых, ни один язык программирования кроме него не дает такого ясного представления о строении аппаратуры ЭВМ. Во-вторых, язык ассемблера незаменим для разработки программ для встроенных устройств - микропроцессорных систем и микроконтроллеров, используемых в LCD телевизорах, автомагнитолах, сотовых телефонах, медицинской аппаратуре и других подобных разработках. Эти устройства часто не имеют операционных систем и поэтому управляющие программы должны быть автономными. Материал изложен от написания и отладки простейших программ в среде отладчика debug до практической разработки автономных программ, не использующих не только операционную систему, но и BIOS. Приведенные сведения иллюстрируются примером достаточно сложной программы - шестнадцатеричного редактора, который позволяет редактировать как содержимое оперативной памяти, так и файлы на диске. Теоретический материал в совокупности с предлагаемыми индивидуальными заданиями оформлен в виде лабораторных работ, что значительно облегчает индивидуальное восприятие предмета читателем и повышает ценность книги при использовании в учебном процессе.

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

Оглавление

ВВЕДЕНИЕ

ЧАСТЬ 1. ВЫПОЛНЕНИЕ МАШИННЫХ ПРОГРАММ

1. ДВОИЧНЫЕ И ШЕСТНАДЦАТЕРИЧНЫЕ ЧИСЛА
1.1. Двоичные числа
1.2. Шестнадцатеричные числа
1.3. Символьная информация
1.4. Лабораторная работа 1

2. ВЫПОЛНЕНИЕ ПРОГРАММ ПРОЦЕССОРОМ i8086
2.1. Структура аппаратных средств
2.2. Архитектура процессора
2.3. Адресация памяти
2.4. Алгоритм работы процессора

3. ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
3.1. Чтение и заполнение регистров
3.2. Сложение двух чисел
3.3. Вычитание двух чисел
3.4. Умножение двух чисел
3.5. Деление двух чисел
3.6. Лабораторная работа 2

4. ВЫВОД СИМВОЛОВ НА ЭКРАН
4.1. Вывод одного символа
4.2. Команда завершения программы
4.3. Пересылка данных между регистрами
4.4. Вывод на экран строки символов
4.5. Лабораторная работа 3

5. ВЫВОД НА ЭКРАН ДВОИЧНЫХ ЧИСЕЛ
5.1. Флаг переноса
5.2. Циклический сдвиг
5.3. Организация циклов
5.4. Отладка программы
5.5. Лабораторная работа 4

6. ВЫВОД НА ЭКРАН ЧИСЕЛ В ШЕСТНАДЦАТЕРИЧНОЙ ФОРМЕ
6.1. Флаги состояния
6.2. Команды условного перехода
6.3. Вывод на экран одной шестнадцатеричной цифры
6.4. Вывод старшей цифры двузначного шестнадцатеричного числа
6.5. Вывод младшей цифры двузначного шестнадцатеричного числа
6.6. Лабораторная работа 5

7. СПИСКИ И ПРОЦЕДУРЫ
7.1. Несвязанные списки
7.2. Связанные списки
7.3. Программные стеки
7.4. Процедуры

8. ВВОД С КЛАВИАТУРЫ ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ
8.1. Ввод одной шестнадцатеричной цифры
8.2. Ввод двузначного шестнадцатеричного числа
8.3. Более совершенный ввод шестнадцатеричных цифр
8.4. Лабораторная работа 6

ЧАСТЬ 2. АССЕМБЛЕРНЫЕ ПРОГРАММЫ В СРЕДЕ DOS

9. СИСТЕМНЫЕ ПРОГРАММЫ
9.1. Функции системных программ
9.2. Файлы
9.3. Язык управления DOS
9.3.1. Запуск DOS
9.3.2. Общие сведения о командах DOS
9.3.3. Некоторые системные команды DOS
9.3.4. Командные файлы
9.4. Утилита DOS Navigator
9.4.1. Представление на экране файловой структуры
9.4.2. Ввод команд DOS
9.5. Лабораторная работа 7

10. ПРОСТЫЕ ПРОГРАММЫ НА АССЕМБЛЕРЕ
10.1. Общая структура простых ассемблерных программ
10.2. Пример программы на ассемблере
10.3. Подготовка программы к выполнению
10.4. Комментарии
10.5. Метки
10.6. Еще один пример программы
10.7. Вывод на экран двузначного шестнадцатеричного числа
10.8. Лабораторная работа 8

11. ВЫВОД НА ЭКРАН ДЕСЯТИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ
11.1. Получение алгоритма
11.2. Дерево подпрограмм
11.3. Запись на ассемблере
11.4. Многофайловая исходная программа
11.5. Лабораторная работа 9

12. ДАМПИРОВАНИЕ ПАМЯТИ
12.1. Дампирование шестнадцати байтов
12.2. Дампирование 256 байтов памяти
12.3. Очистка экрана
12.4. Лабораторная работа 10

13. ПЕРЕПИСКА СЕКТОРА ПАМЯТИ
13.1. Функции переписки сектора
13.2. Чтение сектора
13.3. Алгоритмы процедур
13.4. Макрооператоры
13.5. Лабораторная работа 11

14. ДИСПЕТЧЕР КОМАНД
14.1. Ввод команд
14.2. Алгоритм диспетчера
14.3. Выполнение команды
14.4. Лабораторная работа 12

15. РЕДАКТИРОВАНИЕ ИНФОРМАЦИИ В ОП
15.1. Алгоритм редактирования сектора
15.2. Установка курсора
15.3. Выполнение команды
15.4. Запись шестнадцатеричной цифры
15.5. Лабораторная работа 13

16. ОПЕРАЦИИ С ФАЙЛАМИ
16.1. Файловая система FAT
16.2. Создание и открытие файла
16.3. Операции чтения и записи
16.4. Закрытие и уничтожение файла
16.5. Пример программы
16.6. Другие операции с файлами
16.7. Модернизация редактора для работы с файлами
16.7.1. Алгоритм диспетчера
16.7.2. Алгоритмы процедур
16.8. Лабораторная работа 14

17. РАЗДЕЛЬНАЯ ТРАНСЛЯЦИЯ ПРОГРАММЫ
17.1. Префикс программного сегмента
17.2. Получение прикладной программы
17.3. Программа типа com
17.4. Программа типа exe
17.5. Адресация памяти в программе типа exe
17.6. Применение нескольких объектных модулей
17.7. Лабораторная работа 15

18. УПРАВЛЕНИЕ ПАМЯТЬЮ И ЗАПУСК ПРОГРАММ
18.1. Распределение памяти
18.2. Запуск прикладных программ
18.2.1. Описание системного вызова
18.2.2. Запуск программ из com-программы
18.2.3. Запуск программ из exe-программы
18.3. Многопрограммный редактор
18.3.1. Структура многопрограммного редактора
18.3.2. Главная программа
18.3.3. Дочерние программы
18.4. Лабораторная работа 16

19. ПРЕРЫВАНИЯ И РЕЗИДЕНТНЫЕ ПРОГРАММЫ
19.1. Прерывания
19.1.1. Внешние аппаратные прерывания
19.1.2. Исключения
19.1.3. Программные прерывания
19.1.4. Алгоритм выполнения прерывания
19.2. Резидентные программы
19.2.1. Особенности резидентных программ
19.2.2. Использование свободных прерываний
19.2.3. Перехват прерываний
19.3. Резидентный редактор информации
19.4. Лабораторная работа 17

ЗАДАНИЯ ДЛЯ ПРОГРАММИРОВАНИЯ

ЧАСТЬ 3. РАЗРАБОТКА АВТОНОМНЫХ ПРОГРАММ

20. УПРАВЛЕНИЕ УСТРОЙСТВАМИ БЕЗ ПРЕРЫВАНИЙ
20.1. Управление устройствами на аппаратном уровне
20.2. Синхронный ввод-вывод
20.2.1. Логическая схема драйвера
20.2.2. Программа синхронного драйвера
20.3. Асинхронный вывод с общей памятью
20.3.1. Видеоадаптер
20.3.2. Видеопамять
20.3.3. Управление курсором
20.3.4. Логическая схема
20.4. Лабораторная работа 18
20.4.1. Задание
20.4.2. Рекомендуемый план отладки

21. УПРАВЛЕНИЕ УСТРОЙСТВАМИ С ПРЕРЫВАНИЯМИ
21.1. Контроллер прерываний
21.2. Алгоритм обработки прерываний
21.3 Пример драйвера
21.3.1. Логическая схема
21.3.2. Программа драйвера
21.4. Программирование драйвера клавиатуры
21.4.1. Логическая схема ввода с клавиатуры
21.4.2. Скан - коды
21.4.3. Алгоритмы программных модулей
21.5. Прямой доступ в память
21.6 Лабораторная работа 19
21.6.1. Задание
21.6.2. Рекомендуемый план отладки

22. ПРОСТЕЙШИЙ НАЧАЛЬНЫЙ ЗАГРУЗЧИК
22.1. Общая схема начальной загрузки
22.2. Программирование дисковода
22.3. Укрупненная структура первичного загрузчика
22.4. Программа начального загрузчика
22.5. Подготовка начального загрузчика к выполнению
22.6. Лабораторная работа 20

23. НАЧАЛЬНАЯ ЗАГРУЗКА С ИСПОЛЬЗОВАНИЕМ ИМЕНИ ФАЙЛА
23.1. Общая структура информации на диске
23.2. Структура каталога
23.3. Структура таблицы FAT
23.4. Требования к загружаемой программе
23.5. Алгоритм модифицированного начального загрузчика
23.6. Алгоритмы процедур
23.7. Лабораторная работа 21

24. ВТОРИЧНЫЙ НАЧАЛЬНЫЙ ЗАГРУЗЧИК-РУСИФИКАТОР
24.1. Функции вторичного загрузчика
24.2. Алгоритм вторичного начального загрузчика
24.3. Установка русского шрифта
24.4. Близкий косвенный вызов процедуры
24.5. Дальний косвенный вызов процедуры
24.6. Инициализация векторов прерываний
24.7. Выполнение системных вызовов
24.8. Лабораторная работа 22

25. РЕДАКТИРОВАНИЕ ВСЕЙ ОПЕРАТИВНОЙ ПАМЯТИ
25.1. Режимы работы процессора
25.2. Увеличение разрядности регистров
25.3. Аппаратные дескрипторы сегментов
25.4. Переход в режим линейной адресации
25.5. Совершенствование редактора
25.6. Лабораторная работа 23

ОСНОВНАЯ ЛИТЕРАТУРА

ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА

ПРИЛОЖЕНИЕ 1. ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА

П1. Типы операторов

П2. Операторы обработки данных
П2.1. Арифметические операторы
П2.2. Логические операторы
П2.3. Операторы передачи данных
П2.4. Операции над регистром флагов
П2.5. Операторы сдвига
П2.6. Цепочечные (строковые) операторы

П3. Адресация данных

П4. Определение данных
П4.1. Метки
П4.2. Определение байтов
П4.3. Определение слов
П4.4. Определение констант
П4.5. Структуры

П5. Операторы передачи управления
П5.1. Операторы условных переходов
П5.2. Операторы безусловных переходов
П5.3. Операторы циклов
П5.4. Операторы процедур
П5.5. Другие операторы передачи управления

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

П7. Вспомогательные псевдооператоры

П8. Макрооператоры

ПРИЛОЖЕНИЕ 2. ВИРТУАЛЬНЫЕ МАШИНЫ “Virtual PC”