- •Основы алгоритмизации и программирования
- •29 Декабря 2011, протокол № 4
- •Введение
- •Этапы развития эвм
- •Поколения эвм
- •Машинно-ориентированные языки программирования
- •Архитектура эвм
- •Микропроцессоры intel
- •Набор регистров
- •Регистры общего назначения
- •Сегментные регистры
- •Регистры состояния и управления
- •Организация памяти
- •Сегментная организация памяти
- •Типы данных
- •Символы
- •Целые числа
- •Указатель на память
- •Цепочки
- •Вещественые числа
- •Двоично-десятичные числа (bcd)
- •Формат команд
- •Обработка прерываний
- •Int тип_прерывания
- •Синтаксис ассемблера
- •Алфавит ассемблера
- •Директивы сегментации
- •Упрощённые директивы сегментации
- •Директивы резервирования и инициализации данных
- •Операнды
- •Способы задания операндов Прямая адресация
- •Косвенная адресация
- •Косвенная базовая адресация
- •Косвенная базовая адресация со смещением
- •Косвенная индексная адресация со смещением
- •Косвенная базовая индексная адресация
- •Косвенная базовая индексная адресация со смещением
- •Операторы
- •Функциональная классификация машинных команд
- •Команды пересылки данных Команды общего назначения
- •Работа с адресами и указателями
- •Преобразование данных
- •Xlat [адрес_таблицы_перекодировки]
- •Ввод из порта и вывод в порт
- •Работа со стеком
- •Арифметические команды Форматы арифметических данных
- •Арифметические операции над целыми двоичными числами
- •Логические команды
- •Команды передачи управления
- •Команда безусловного перехода
- •Условные переходы
- •Организация циклов
- •Основы алгоритмизации и программирования
Синтаксис ассемблера
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами. Программа может состоять из одного или нескольких таких блоков-сегментов.
Сегменты программы имеют определенное назначение, соответствующее типу сегментов: кода, данных и стека.
Каждый сегмент состоит из совокупности отдельных строк – предложений языка. Для языка ассемблера предложения, составляющие программу, могут представлять собой синтаксические конструкции четырех типов.
Команды (инструкции) представляют собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд процессора.
Макрокоманды — это оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями.
Директивы являются указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении.
Комментарии содержат любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.
Алфавит ассемблера
Определим алфавит ассемблера, то есть допустимые для написания текста программ символы:
все латинские буквы А - Z, а - z, причем прописные и строчные буквы считаются эквивалентными;
цифры от 0 до 9;
специальные знаки _, ?, @, $, &;
разделители: „ ., [, ], (, ), <, >, {, }, +, /, *, %, !, ", ", ?, \, = ,#,^.
Из символов алфавита состоят лексемы.
Лексемами языка ассемблера являются ключевые слова, идентификаторы, цепочки символов и целые числа.
Ключевые слова – это служебные символы языка ассемблера. По умолчанию регистр символов ключевых слов не имеет значения. К ключевым словам относятся:
названия регистров (AL, АН, BL, ВН, CL, СН, DL, ОН, АХ, ВХ, СХ, DX, ВР, SP, DI, SI, CS, DS, ES, SS);
операторы (BYTE, WORD, DWORD, AND, NOT, HIGH, LOW, HIGHWORD, LOWWORD, OFFSET, SEG, TYPE, THIS, PTR, WIDTH, MASK, SIZE, SIZEOF, LENGTH, ST, SHORT, TYPE, MOD, NEAR, FAR, OR, XOR, EQ, NE, LT, LE, GT, GE, SHR)
названия команд (КОП) ассемблера, префиксов.
Идентификаторы – последовательности допустимых символов, использующиеся для обозначения имен переменных и меток. Идентификатор может состоять из одного или нескольких символов. В качестве символов можно использовать буквы латинского алфавита, цифры и некоторые специальные знаки — _, ?, $, @. Идентификатор не может начинаться символом цифры. Длина идентификатора может составлять до 255 символов, хотя транслятор воспринимает лишь первые 32, а остальные игнорирует.
Цепочки символов – это последовательности символов, заключенные в одинарные или двойные кавычки.
Целые числа могут указываться в двоичной, десятичной или шестнадцатеричной системах счисления.
Важно отметить наличие символов после (h) и перед (0) записью шестнадцатеричного числа. Это сделано для того, чтобы транслятор мог отличить в программе одинаковые по форме записи десятичные и шестнадцатеричные числа. К примеру, числа 1578 и 1578h выглядят одинаково, но имеют разные значения. Шестнадцатеричное число начинающиеся с цифр A, B,...F, например fe023, обязательно должно начинаться с нуля чтобы оно не определялось как идентификатор. Для данного примера правильная запись шестнадцатеричного числа – 0fe023h.
Для двоичных чисел после записи нулей и единиц, входящих в их состав, необходимо поставить латинскую букву «b». Пример: 10010101b.
Комментарий – это любая комбинация символов ASCII, расположенная в строке за символом точки с запятой (;), транслятором игнорируется.
