- •Введение
- •Сведения об архитектуре процессоров 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
- •Оглавление
2.3.2. Имена пользователя
Имена, которые определяет пользователь, имеют смысл символьных адресов. Если имя пользователя указывает на строку, в которой содержится команда, и служит для передачи управления, то оно называется меткой. Если имя пользователя указывает на адрес, в котором записаны данные, то оно является именем переменной. Переменная характеризуется типом. Сегмент и смещение в режиме реального адреса, смещение в защищенном режиме определяют адрес ячейки памяти, содержащей переменную. Тип определяет число байтов, одновременно подвергающихся обработке при работе с данной переменной.
Имена пользователя могут включать в себя латинские буквы, цифры от 0 до 9 и специальные знаки: .,?,_,§,$. Любой знак за исключением цифры может стоять в имени на первой позиции. В именах пользователя допускается любое число знаков, но только первый 32 знака учитываются транслятором.
2.4. Константы
Константы бывают числовыми и символьными. Числовые константы можно представить в разной форме в различных системах исчисления. Они включают в себя целые числа в двоичной, восьмеричной, десятичной или шестнадцатеричной системах исчисления, целые числа со знаком, вещественные в форме с плавающей запятой и в кодированной шестнадцатеричной форме.
2.4.1.Целые числа
Целые числа в двоичной системе исчисления изображаются с помощью двух цифр: 0 и 1. Двоичное число должно оканчиваться признаком системы исчисления - буквой В. Например: 101В.
Восьмеричное число изображается цифрами 0-7 и должно оканчиваться признаком системы исчисления - буквой О или Q. Например: 3245Q.
Целое число в десятичной системе исчисления изображается цифрами 0-9. Если с помощью директивы .RADIX не указана другая система исчисления, используемая по умолчанию, то по умолчанию для представления целых чисел используется десятичная система. Тогда указывать признак системы исчисления не требуется. В случае, когда по умолчанию используется другая система, десятичное число должно оканчиваться буквой D. Например: 2345D.
Шестнадцатеричные числа изображаются десятичными цифрами 0-9 и шестнадцатеричными цифрами A,B,C,D,E,F, что эквивалентно числам 10,11,12,13,14,15 в десятичной системе исчисления. Если шестнадцатеричное число начинается с шестнадцатеричной цифры, то перед этой цифрой должен стоять 0. Признак шестнадцатеричной системы - буква Н. Например: 0F43AH.
2.4.2. Вещественные числа
Вещественные числа могут быть представлены в форме с плавающей запятой и в кодированной форме в виде последовательности шестнадцатеричных цифр, заканчивающейся буквой R.
формат числа в форме с плавающей запятой:
[знак(+ или -)]мантисса[Е[+ или -)порядок] В квадратные скобки заключены необязательные символы или последовательности символов. Пример представления числа в такой форме: 57.3Е-2 или 3.14.
Кодированное вещественное число изображается последовательностью из восьми, двенадцати или двадцати шестнадцатеричных цифр. Если число начинается с шестнадцатеричной цифры, то ей должен предшествовать 0. Число имеет знак, мантиссу и порядок, которые размещаются в соответствующих полях машинного представления числа. Кодированные вещественные числа могут определяться директивами DD.DQ и DT. Например; DD 0A345F678R. Такое представление вещественного числа в настоящее время не используют.
