- •Введение
- •Сведения об архитектуре процессоров 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
- •Оглавление
Команды целочисленной арифметики
ADD dest,src |
Сложение двух операндов. Первый операнд может быть регистром или ячейкой памяти, второй - регистром или ячейкой памяти или константой |
ADC dest,src |
Сложение с учетом флага переноса |
INC r/m |
Инкремент |
SUB dest,src |
Вычитание двух операндов |
SBB dest,src |
Вычитание с учетом заема (флага переноса) |
DEC r/m |
Декремент |
CMP r/m, m/r |
Сравнение (вычитание без результата за исключением изменения флагов) |
NEG r/m |
Изменение знака операнда |
AAA |
Коррекция результата после сложения чисел в ASCII-формате |
AAS |
Коррекция результата после вычитания чисел в ASCII-формате |
AAM |
Преобразует результат умножения в двоично-десятичное число |
AAD |
Коррекция перед делением Предполагается, что старшая десятичная цифра делимого находится в младшей тетраде AH, - младшая – в младшей тетраде AL. Результат заносится в AX как двоичное число |
DAA |
Коррекция результата после сложения чисел в двоично-десятичном формате. Результат сложения должен быть в AL |
DAS |
Коррекция результата после вычитания чисел в двоично-десятичном формате. Результат сложения должен быть в AL, после выполнения команды содержит результат в двоично-десятичном формате |
MUL r/m |
Умножение на целое число без знака |
IMUL r/m |
Умножение чисел со знаком |
DIV r/m (src) |
Деление чисел без знака |
IDIV r/m |
Деление чисел со знаком |
CBW |
Расширение байта (AL) в слово с копированием знакового бита |
CWD |
Расширение слова (AX) в двойное слово (DX:AX)с копированием знакового бита |
CWDE |
Расширение слова (AX) в двойное слово (EAX)с копированием знакового бита |
CDQ |
Преобразование двойного слова (EAX) в учетверенное (EDX:EAX) |
Логические операции
AND dest,src |
Логическое умножение |
TEST dest,src |
Аналогична AND, но не меняет dest |
OR dest,src |
Логическое сложение |
XOR dest,src |
Поразрядное сложение по модулю 2 |
NOT dest |
Поразрядное инвертирование |
Операции сдвигов
RCL/RCR dest,src |
Циклический сдвиг через CF. Src может быть либо содержимое CL, либо непосредственны операнд |
ROL/ROR dest,src |
Аналогична RCL/RCR, CF в цикле сдвига не участвует, но в него заносится бит, перешедший из конца в начало или из начала в конец сдвигаемого кода |
SAL/SAR dest,src |
Арифметический сдвиг. При сдвиге вправо дублируется старший бит, при сдвиге влево заполняется нулем. Вытолкнутый бит помещается в CF |
SHL/SHR dest,src |
Логический сдвиг. При сдвиге вправо старший бит заполняется нулем |
SHLD/SHRD dest,src, |
Трехоперандные команды. Первый – регистр или ячейка памяти, второй – регистр общего назначения, третий – CL или непосредственный операнд |
