Содержание
Лекция 1. Основные понятия и определения
Программы и программное обеспечение...........................3
Системное программирование ....................................5
Этапы подготовки программы ....................................7
Лекция 2. Ассемблеры
Программирование на языке Ассемблера ..........................11
Предложения языка Ассемблера ..................................12
Регистры .......................................................15
Биты и байты ...................................................15
ASCII ..........................................................16
Двоичные числа .................................................17
Шестнадцатеричное представление ...............................20
Сегменты .......................................................21
Расширение набора команд ......................................23
Способы адресации..............................................27
Директивы......................................................29
Директивы определения данных ..................................30
Директива определения байта (DB) ...............................33
Директива определения слова (DW) ...............................33
Директива определения двойного слова (DD) ......................34
Директива определения учетверенного слова (DQ) .................34
Директива определения десяти байт (DT) ..........................35
Непосредственные операнды .....................................35
Директива EQU .................................................37
Лекция 3. Регистры
Сегментные регистры: CS, DS, SS и ES ............................38
Регистры общего назначения: АХ, ВХ, СХ и DX ....................39
Регистровые указатели: SP и PB...................................40
Индексные регистры: SI и DI .....................................40
Регистр командного указателя: IP .................................41
Флаговый регистр ...............................................41
Лекция 4. Арифметические операции
Обработка двоичных данных .....................................43
Беззнаковые и знаковые данные ..................................44
Умножение .....................................................46
Сдвиг регистровой пары DX:AX ..................................49
Деление ........................................................50
Преобразование знака ...........................................53
Обработка данных в форматах ASCII и BCD .......................55
Двоично-десятичный формат (BCD) ..............................57
Сдвиг и округление ..............................................59
Лекция 5. Команды обработки строк
Свойства операций над строками .................................61
REP: Префикс повторения цепочечной команды ...................62
MOVS: Пересылка строк .........................................63
LODS: Загрузка строки ..........................................64
STOS: Запись строки ............................................64
CMPS: Сравнение строк .........................................65
SCAS: Сканирование строк.......................................66
Сканирование и замена ..........................................66
Альтернативное кодирование .....................................67
Дублирование образца ...........................................67
Лекция 6. Обработка таблиц
Определение таблиц .............................................70
Прямой табличный доступ .......................................71
Табличный поиск ...............................................72
Транслирующая команда XLAT ..................................73
Операторы типа, длина и размеры ................................74
Лекция 7. Свойства операторов работы с экраном
Команда прерывания INT .......................................76
Установка курсора...............................................77
Очистка экрана .................................................78
Использование символов возврата каретки,
конца строки и табуляции для вывода на экран.....................79
Расширенные возможности экранных операций ...................80
Расширенный ASCII код .........................................85
Другие операции ввода/вывода ...................................86
Ввод с клавиатуры по команде BIOS INT 16H .....................87
Функциональные клавиши .......................................89
Цвет и графика .................................................91
Лекция 8. Требования языка
Комментарии в программах на Ассемблере ........................93
Формат кодирования ............................................93
Директивы......................................................95
Память и регистры ..............................................99
Инициализация программы ......................................99
Лекция 9. Ввод и выполнение программ
Ввод программы ................................................102
Подготовка программы для выполнения ...........................103
Ассемблирование программы.....................................104
Компоновка программы .........................................106
Выполнение программы .........................................107
Файл перекрестных ссылок.......................................108
Лекция 10. Алгоритмы работы Ассемблеров
Двухпроходный Ассемблер — первый проход ......................110
Структура таблиц Ассемблера ....................................117
Двухпроходный Ассемблер — второй проход .......................118
Некоторые дополнительные директивы ...........................125
Директивы связывания ..........................................126
Одно- и многопроходный Ассемблер ..............................127
Лекция 11. Логика и организация программы
Команда JMP ...................................................129
Команда LOOP .................................................130
Флаговый регистр ...............................................131
Команды условного перехода .....................................133
Процедуры и оператор CALL ....................................134
Сегмент стека ...................................................136
Команды логических операций: AND, OR, XOR, TEST, NOT .......137
Изменение строчных букв на заглавные ...........................139
Команды сдвига и циклического сдвига ...........................139
Организация программ ..........................................142
Лекция 12. Компоновка программ
Межсегментные вызовы .........................................145
Атрибуты EXTRN и PUBLIC .....................................147
Компоновка программ на языке С и Ассемблере ...................148
Выполнение COM-программы ...................................149
Выполнение EXE-программы ....................................149
Функции загрузки и выполнения программы ......................152
Лекция 13. Выполнение программ
Начинаем работать ..............................................155
Определение данных ............................................159
Машинная адресация ............................................160
Определение размера памяти .....................................162
Специальные средства отладчика .................................163
Лекция 14. Макросредства
Простое макроопределение ......................................166
Использование параметров в макрокомандах ......................167
Комментарии ...................................................168
Использование макрокоманд в макроопределениях.................169
Директива LOCAL ..............................................170
Использование библиотек макроопределений ......................170
Конкатенация (&) ..............................................172
Директивы повторения: REPT, IRP, IRPC .........................172
Условные директивы ............................................174
Директива выхода из макроса EXITM .............................175
Макрокоманды, использующие IF и IFNDEF ......................176
Макрос, использующий IFIDN-условие ...........................177
Лекция 15. Макропроцессоры
Основные понятия ..............................................179
Сравнение макросредств и подпрограмм ..........................182
Некоторые возможности Макроязыка .............................183
Локальные переменные макроопределения ........................185
Присваивание значений переменным макроопределения ...........186
Глобальные переменные макроопределения .......................187
Уникальные метки ..............................................187
Операторы повторений ..........................................189
Выдача сообщения ..............................................190
Завершение обработки ...........................................191
Комментарии макроопределения .................................191
Макрорасширения в листинге ....................................192
Алгоритм работы Макропроцессора ...............................193
Библиотеки макроопределений ...................................204
Вложенные макровызовы. Вложенные макроопределения...........205
Качественное расширение возможностей ..........................207
Структурный Ассемблер .........................................208
Объектно-ориентированный Ассемблер ...........................208
Переносимый машинный язык ...................................209
Лекция 16. Загрузчики и редакторы связей
Основные понятия ..............................................210
Формат объектного модуля .......................................214
Алгоритм работы Непосредственно Связывающего Загрузчика ......216
Лекция 17. Кросс-системы
Вычислительные системы ........................................223
Модель регистров ...............................................226
Модель оперативной памяти .....................................227
Модель процессора ..............................................229
Лекция 18. Ошибки программирования
Классификация ошибок программирования .......................240
Ошибки при задании необходимых начальных условий для отдельных программ ...........242
Распознавание ошибок Ассемблером ..............................243
Распространенные ошибки в драйверах ввода-вывода ..............244
Распространенные ошибки в программах прерывания ..............245
Лекция 19. Введение в макроассемблер
Состав пакета ...................................................247
Общие сведения.................................................248
Запуск макроассемблера .........................................249
Опции MASM...................................................251
LINK: линкер модулей ...........................................254
SYMDEB: символьный отладчик программ ........................265
CREF: утилита перекрестных ссылок ..............................295
LIB: утилита обслуживания библиотек ............................296
МАКЕ: утилита сопровождения программ .........................302
Сегментация программы .........................................306
Условные директивы ............................................314
Директивы условной генерации ошибок ...........................317
Макросредства ..................................................319
Макродирективы ................................................320
Блоки повторений ...............................................324
Макрооператоры ................................................327
Директивы определения памяти ..................................329
Скалярные данные ..............................................329
Записи .........................................................332
Структуры ......................................................334
Описание символических имен ...................................336
Директивы управления файлами ..................................339
Управление листингом ...........................................341
Другие директивы ...............................................344
Глобальные объявления ..........................................345
Инструкции процессоров ........................................346
Инструкции пересылки данных...................................348
Инструкции общего назначения ..................................349
Ввод/вывод ....................................................350
Адресные операции..............................................351
Операции с флагами .............................................352
Арифметические инструкции .....................................353
Арифметические операции и флаги ...............................354
Сложение ......................................................356
Вычитание......................................................357
Умножение .....................................................359
Деление ........................................................360
Инструкции обработки бит .......................................361
Сдвиги .........................................................363
Вращения ......................................................364
Инструкции обработки строк .....................................365
Пересылка строк ................................................368
Сравнение строк ................................................369
Сканирование ..................................................370
Практикум
Двупросмотровый алгоритм ......................................371
Однопросмотровый алгоритм.....................................375
Реализация внутри Ассемблера ...................................377
Лабораторные работы
Общие указания к выполнению ...................................379
Язык С как инструмент системного программирования .............379
Порядок выполнения работ ......................................381
Содержание отчета ..............................................382
Лабораторная работа №1. Работа с символьными строками..........382
Пример решения задачи .........................................386
Лабораторная работа №2. Представление в памяти
массивов и матриц ..............................................391
Лабораторная работа №4. Проверка оборудования .................403
Лаборатория работа №5. Управление клавиатурой ..................413
Лабораторная работа №6. Управление таймером ...................419
Лабораторная работа №7. Управление видеоадаптером..............425
Лабораторная работа №8. Главная загрузочная запись ..............432
Лабораторная работа №9. Дисковые структуры данных DOS ........437
Лабораторная работа N10. Управление программами ...............452
Что нужно знать для экзамена
Функции прерывания DOS INT 21H ..............................461
Порты ..........................................................466
Что нужно знать для семинара
Справочник по директивам языка Ассемблера .....................468
Справочник по командам языка Ассемблера .......................477
Список использованной литературы ..............................502
Сергей Фельдман "Системное программирование на персональном компьютере" 2006 г.