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

       

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

Основные определения

Цель курса.
Характеристика языков системного программирования
История развития ассемблера. Характеристика машинного языка
Структура 4-х адресной команды
Структура 2-х адресной команды
Структура 1 адресной команды.
Структура безадресных команд
Сравнительный анализ команд с различной адресностью для современных процессоров
Пример программирования в машинных кодах.


Система команд

Распределение памяти
Программа вычисления
Характеристика языков ассемблерного типа
Пример программы на ассемблере для 16 битного приложения (DOS приложение)
Пример программы на ассемблере для 32 - битного приложения
ВВЕДЕНИЕ В АРХИТЕКТУРУ INTEL ПРОЦЕССОРОВ
Арифметико-логический блок
Прогнозирование переходов
Память

Регистровая память.
Кэш память
Блок с плавающей точкой
Особенности MMX процессоров
Перспективы разработки процессоров
Классификация простейших конструкций
Константы
Целые двоичные данные
Целые десятичные числа
Константы с плавающей точкой

Символьные и строковые константы
Однобайтовая кодировка
Двухбайтовая кодировка
Идентификаторы
Адреса
Внутреннее представление адреса для реального режима
Внутреннее представление адреса для защищенного режима
Внешнее представление адресов.
Выражения

Классификация операторов
Директивы для определения констант
Директива EQU
Директива =
Директивы выделения памяти
Классификация команд
Команда MOV
Использование данных разной длины
Команды обмена

Команды пересылки для работы с адресами
Использование команды lea для арифметических вычислений
Особенности команд пересылки для работы со стеком
Использование команд mov
Использование специальных команд
Классификация арифметических команд
Правила использования арифметических команд
Основные арифметические команды
Специальные команды
Организация вычислений с многократной точностью

Дополнительные арифметические команды
Команды безусловного перехода
Коды условий
Команды условного перехода
Специальные команды
Организация вложенных циклов
Монотонное изменение индекса

Немонотонное изменение параметра цикла
Использование команд для работы с блоками
Задание двухмерного массива
Монотонное изменение индекса
Метод связанных индексов
Метод связанных индексов - 2
Использование 2-х мерного массива при немонотонном изменении индекса
Многомерные массивы
Использование метода связных индексов для многомерных массивов

Использование метода приведенных индексов для многомерных массивов
Структуры
Задание типа структуры
Выделение памяти под структуру
Инициализация полей структуры
Особенности инициализации строк и массивов
Обращение к полям структуры
Объединения
Особенности инициализации полей объединения

Перечисления
Основные команды для работы с битами
Классификация команд
Кодировка команд сдвига
Общий вид команд сдвига
Примеры использования команд сдвига.
Дополнительные команды
Группа команд: проверить и изменить
Команды длинного сдвига

Определение типа битовой структуры
Выделение памяти под битовую структуру
Особенности использования битовых структур
Пример использования битовой структуры
Типы программ
Одномодульные программы
Использование функций
Классификация параметров. Способы передачи параметров процедурам
Передача параметров через регистры
Передача параметров через общую область памяти

Передача в списке параметров простых переменных
Передача в списке параметров одномерных массивов
Передача в списке параметров многомерных массивов
Передача в списке параметров структур
Передача в списке параметров функций

Составление функций с переменным списком параметров
Составление рекурсивных функций на ассемблере
Особенности использования внешних функций
Использование общих областей памяти
Реентерабельное программирование
Использование локальных областей памяти
Особенности использования команд ENTER и LEAVE
Директива ARG

Директива LOCAL
Стыковка с языками высокого уровня
Вставка в Си команд на ассемблере
Использование отдельных функций на ассемблере
Использование отдельных функций на ассемблере - 2
Особенности создания функций для включения их в DLL
Особенности использования ассемблерных функций в качестве функций – членов классов
Недостатки функций

Макросы
Простейшие макросы
Основные определения
Макроопределение (м/о)
Макрокоманда (м/к)
Макрорасширение (м/р)
Правила записи параметров
Определение внутренних меток
Использование фактических параметров со специальными знаками

Вложенные и рекурсивные макросы
Обзор средств условной трансляции
Директивы условной трансляции
Формирование сообщений об ошибках
Безусловное повторение
Директива IRP
Директива IRPC
Директива WHILE
Обзор средств ввода-вывода

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

Обработка ошибок с помощью функции GetLastError
Составление пользовательских функций со стандартной обработкой ошибок

Обзор системных вызовов для организации ввода-вывода
Функции ввода-вывода для стандартных устройств
Функция MessageBox
Функции и константы для работы с консолью
Ввод/вывод числовых данных
Обзор функций WINDOWS API для работы с файлами

Дополнительные функции для работы с файлами
Удаление файлов
Копирование или перемещение файлов
Блокирование участков файлов
Функции для поиска файлов
Функция FindFirstFile

Функция FindNextFile
Функция FindClose
Создание временных файлов
Позиционирование файла
ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ ДЛЯ MMX
Особенности процессоров с MMX технологией с точки зрения программиста
Обзор команд для MMX
Арифметические команды
Команды сравнения

Команды преобразования
Логические крманды
Команды сдвига
Команды пересылки
Управление режимами работы процессора
Использование команд MMX в приложениях
Особенности использования режима MMX для многозадачных OS
Операционные системы, сохраняющие состояние MMX/FPU
Отладка программ с MMX командами
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Содержание раздела