- •Введение
- •Сведения об архитектуре процессоров intel 80х86 и операционной системе windows, необходимые для программирования на ассемблере
- •1.1. Программно доступные регистры
- •1.2. Организация памяти [5]
- •1.2.1. Сегментация
- •1.2.2. Дескрипторы сегментов
- •1.2.3 Адресное пространство режима реального адреса
- •1.2.4. Адресное пространство защищенного режима [6]
- •1.2.5. Виртуальное адресное пространство
- •1.2.6. Способы адресации операндов
- •Регистровый операнд
- •Непосредственный операнд
- •1.3. Организация ввода – вывода
- •1.3.1. Консоль
- •1.3.2. Графический интерфейс пользователя
- •1.4. Система команд
- •Команды пересылки данных
- •Команды ввода/вывода
- •Команды целочисленной арифметики
- •Логические операции
- •Операции сдвигов
- •Команды передачи управления
- •Командные прерывания
- •Команды управления процессором
- •Команды обработки последовательности кодов
- •Команды для работы со стеком
- •2. Описание языка ассемблера
- •2.1. Алфавит языка ассемблера
- •2.2. Лексемы
- •2.3. Имена
- •2.3.1. Ключевые слова
- •2.3.2. Имена пользователя
- •2.4. Константы
- •2.4.1.Целые числа
- •2.4.2. Вещественные числа
- •2.4.3. Символьные и строковые константы
- •2.5. Структура строки языка ассемблера
- •2.5.1. Структура строки, содержащей машинную команду
- •2.6.3. Директивы упрощенного определения сегментов
- •2.6.4. Директивы определения сегментов и групп
- •2.6.5. Директивы описания процедуры
- •2.6.6. Директивы определения данных
- •2.6.7. Директивы определения имен
- •2.6.8. Директивы внешних ссылок
- •2.6.7. Директивы управления трансляцией
- •2.6.8. Макросредства
- •2.7. Операции в выражениях
- •2.7.1. Арифметические операции
- •2.7.2. Логические операции
- •2.7.3. Операции отношения
- •2.7.4. Операции, возвращающие значения
- •2.7.5. Операции присваивания атрибута
- •Трансляция программ
- •. Компиляция
- •3.2. Компоновка
- •Библиографический список
- •Функции api
- •1. Функция GetModuleHandleA
- •2. Функция LoadIcon
- •3. Функция LoadCursor
- •4. Функция Register Class
- •5. Функция CreateWindowExA
- •6. Функция ShowWindow
- •7. Функция UpdateWindow
- •8. Функция GetMessage
- •9. Функция DispatchMessage
- •10. Функция ExitProcess
- •11. Функция BeginPaint
- •12. Функция TextOutA
- •13. Функция EndPaint
- •Описание структур, определенных в фале win32.Inc
- •1. Структура wndclass
- •2. Структура сообщения
- •3. Структура paintstruct
- •Продолжение прил. 4
- •4. Структура rect
- •Формат командной строки и ключи транслятора tasm32
- •Формат командной строки и ключи компоновщика tlink32
- •Оглавление
Формат командной строки и ключи компоновщика tlink32
[path]tlink32 [options] objectfiles, [exefile][,mapfile],libfile[,deffile][,resfile]
где path – путь к компоновщику
options – перечень ключей через пробел
objectfile - имя объектного файла (расширение obj)
exefile – имя объектного файла (расширение exe)
mapfile - имя файла карты загрузки (расширение map)
libfile – путь и имя файла библиотеки импорта
defile – имя файла проекта (расширение def)
resfile - имя файла ресурсов (расширение res)
/m – создать более полный, чем по умолчанию файл карты загрузки
/x – не создавать карты
/s – в файл карты включить информацию о сегментах
/L - Определяет список путей для поиска файлов библиотек, разделенных в командной строке точкой с запятой
/c – задает чувствительность к регистру в идентификаторах переменных
/v – сохранять полную отладочную информацию
/Enn – задает максимальное количество ошибок для прекращения компоновки
/H:xxxx – определяет размер динамической памяти приложения
/B:xxxx - Определяет базовый адрес по которому файл отображается в память
передает(совершает) размер
/wxxx – разрешить или запретить (/w -) выдачу предупреждающих сообщений:
def – отсутствует файл проекта
dpl – дублирование имен в библиотечных файлах
dup – дублирование имен в объектных файлах
ent – отсутствие точки входа
imt – информация об импорте не соответствует предшествующему объявлению
/S:xxxx - определяет размер стека приложения
/Txx – определяет тип выходного файла
-/TpХ - PE файл (X: e=EXE, d=DLL)
/aa – графическое приложение WINDOWS
/Af:nnnn – определяeт файловое выравнивание
/Ao:nnnn - выравнивание объектов в памяти
/o – импорт по ординалам
Оглавление
ВВЕДЕНИЕ 3
1. СВЕДЕНИЯ ОБ АРХИТЕКТУРЕ ПРОЦЕССОРОВ INTEL 80х86 И ОПЕРАЦИОННОЙ СИСТЕМЕ WINDOWS, НЕОБХОДИМЫЕ ДЛЯ ПРОГРАММИРОВАНИЯ НА АССЕМБЛЕРЕ 3
1.1. Программно доступные регистры 4
1.2. Организация памяти [5] 8
1.2.1. Сегментация 9
1.2.2. Дескрипторы сегментов 10
1.2.3 Адресное пространство режима реального адреса 11
1.2.4. Адресное пространство защищенного режима [6] 12
1.2.5. Виртуальное адресное пространство 14
1.2.6. Способы адресации операндов 16
1.3. ОРГАНИЗАЦИЯ ВВОДА – ВЫВОДА 18
1.3.1. Консоль 18
1.3.2. Графический интерфейс пользователя 21
1.4. СИСТЕМА КОМАНД 30
Команды пересылки данных 31
Команды ввода/вывода 31
Команды целочисленной арифметики 32
Логические операции 33
Операции сдвигов 33
Команды передачи управления 33
Командные прерывания 34
Команды управления процессором 34
Команды обработки последовательности кодов 35
Команды для работы со стеком 35
2. ОПИСАНИЕ ЯЗЫКА АССЕМБЛЕРА 36
2.1. Алфавит языка ассемблера 36
2.2. Лексемы 36
2.3. Имена 37
2.3.1. Ключевые слова 37
2.3.2. Имена пользователя 38
2.4. Константы 39
2.4.1.Целые числа 39
2.4.2. Вещественные числа 39
2.4.3. Символьные и строковые константы 40
2.5. Структура строки языка ассемблера 40
2.5.1. Структура строки, содержащей машинную команду 40
2.5.2.Структура строки, содержащей только комментарий 40
2.6. Директивы 41
2.6.1. Установка режимов трансляции 41
2.6.2. Директива MODEL 41
2.6.3. Директивы упрощенного определения сегментов 42
2.6.4. Директивы определения сегментов и групп 43
2.6.5. Директивы описания процедуры 44
2.6.6. Директивы определения данных 45
2.6.7. Директивы определения имен 45
2.6.8. Директивы внешних ссылок 46
2.6.7. Директивы управления трансляцией 46
2.6.8. Макросредства 46
2.7. ОПЕРАЦИИ В ВЫРАЖЕНИЯХ 47
2.7.1. Арифметические операции 47
2.7.2. Логические операции 48
2.7.3. Операции отношения 49
2.7.4. Операции, возвращающие значения 49
2.7.5. Операции присваивания атрибута 50
3. ТРАНСЛЯЦИЯ ПРОГРАММ 50
3.1 . Компиляция 54
3.2. Компоновка 55
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 56
Функции API 61
1. Функция GetModuleHandleA 61
2. Функция LoadIcon 61
3. Функция LoadCursor 61
4. Функция Register Class 62
5. Функция CreateWindowExA 62
6. Функция ShowWindow 64
7. Функция UpdateWindow 65
8. Функция GetMessage 66
9. Функция DispatchMessage 66
10. Функция ExitProcess 67
11. Функция BeginPaint 67
12. Функция TextOutA 67
13. Функция EndPaint 68
Описание структур, определенных в фале win32.inc 69
1. Структура WNDCLASS 69
2. Структура сообщения 70
3. Структура PAINTSTRUCT 71
4. Структура RECT 72
Формат командной строки и ключи транслятора TASM32 73
Формат командной строки и ключи компоновщика TLINK32 75
ОГЛАВЛЕНИЕ 76
