Содержание

Содержание

Лекция 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 г.