
- •Конспект лекций по ассемблеру
- •Структурная схема эвм
- •Организация памяти
- •Порты ввода/вывода
- •Сегментация памяти
- •Логические и физические адреса памяти
- •Адресация команд
- •Адресация данных
- •Адресация сегмента стека
- •Перемещаемые программы
- •Структура микропроцессора
- •Назначение регистров микропроцессора
- •Регистр флагов
- •Ассемблер
- •Выражения
- •Структура машинного оператора
- •Директивы ассемблера
- •Директивы определения данных
- •Определение слова
- •Команды и способы адресации операндов
- •Режимы адресации
- •Команда сложения add
- •Команда сложения с переносом adc
- •Команда вычитания sub
- •Imul – команда умножения со знаком
- •Idiv – команда деления со знаком
- •Команда сравнения cmp
- •Команды безусловного перехода jmp
- •1. Короткий относительный переход
- •2. Внутрисегментный переход
- •Команды условных переходов
- •Знаковые
- •Беззнаковые
- •Специальные
- •Способы адресации
- •Двухоперандные команды
- •Косвенная адресация
- •Регистровая адресация
- •Прямая адресация с индексированием
- •Прямая адресация с базированием
- •Адресация по сумме d8 и индексный регистр
- •Адресация по сумме базового регистра и смещения
- •Адресация с базированием и индексированием
- •Прямая адресация с базированием и индексированием
- •Двухоперандная команда, в которой второй операнд непосредственный
- •Формат двухоперандных команд с акумулятором и но
- •Форматы команды inc
- •Форматы команд pop и push
- •Однобайтные команды без операндов
- •Команды передачи данных mov
- •Команда обмена xchg
- •Команда загрузки исполнительного адреса lea
- •Команды управления циклами команда цикла loop
- •Команды переходов loopz, loope
- •Команды вызова подпрограмм call
- •Структура подпрограммы
- •Команды возврата
- •Передача параметров в процедуру
- •Примеры на обработку матрицы
- •Функции ввода/вывода
- •Функция вызова команды int 21h
- •Вывод на экран дисплея
- •Ввод с клавиатуры
- •Процедура ввода числа форматом слово
Ассемблер
Ассемблер – язык программирования низкого уровня, в котором в большинстве случаев одному оператору соответствует одна машинная команда. Это позволяет создавать оптимальные программы специального системного назначения.
Основные понятия языка:
- символы;
- элементарные конструкции;
- выражения;
- операторы.
Алфавит языка:
- прописные и строчные буквы латинского алфавита;
- арабские цифры 0,1, ... ,9;
- знаки арифметических операций + - * / ;
- знаки операций сравнения < > = ;
- скобки () [] ;
- разделители . , : ; ' "
- специальные символы:
- знак вопроса: ?
- коммерческое эт: @
- амперсанд: &
- знак доллара: $
- знак подчеркивания: _
непечатные символы:
- пробел;
- табуляция;
- возврат каретки.
┌───────────────────────────┐
│ Элементарные конструкции │
└──────┬──────┬─────────┬───┘
┌──────────────┘ │ └──────────┐
┌──────────────────┐ ┌──────────────┐ ┌─────────┐
│Зарезервированные │ │Идентификаторы│ │Константы│
│слова │ │ │ │ │
└─┬───────┬─────┬──┘ └─────┬───┬────┘ └──┬───┬──┘
│ │ │ ┌─────┘ │ ┌─────┘ │
│ │
┌─────────┐ │ ┌─────────┐ │ ┌───────────┐ ┌───────┐ ┌──────────┐
│Мнемокоды│ │ │Указатели│ │ │Стандартные│ │ Числа │ │Символьные│
└─────────┘ │ │и функции│ │ │имена │ └─┬───┬─┘ │строки │
│ └─────────┘ │ │регистров │ │ │ │до 255 │
│ └───────────┘ ┌─┘ │ │символов │
┌──────────┐ │ └──────────┘
│Директивы │ ┌────────────────┐ │ ┌─────────────────┐
│ассемблера│ │ Идентификаторы │ │ │Двоичные, │
└──────────┘ │ пользователя │ │ │восьмеричные, │
└────────────────┘ │ │шестнадцатеричные│
└─────────────────┘
┌──────────┐
│Десятичные│
│со знаком │
└──────────┘
Выражения
Выражения ассемблера могут быть двух типов: числовые и адресные. Числовые – вычисляют значение операнда. Адресные – адреса операндов и других объектов.
MOV AX,B[BX+SI]
└──v──┘ – адресное выражение
Операторы языка делятся на машинные операторы, которым после трансляции соответствуют команды процессора, и директивы ассемблера, которые используются как указания транслятору. Директивам ассемблера не соответствует адрес в памяти, т. е. в исполняемой программе директив нет.
┌─────────────────┐
│ Операторы языка │
└──┬─────┬────┬───┘
┌──────────────┘ │ └────────────────────┐
┌────────────┐ ┌─────────────────────────┐ ┌────────────┐
│ Командные │ │ Операторы распределения │ │ Директивы │
│ операторы │ │ данных │ │ ассемблера │
└────────────┘ └─────────────────────────┘ └────────────┘
( mov al,ah ) ( a db 5 ) ( start proc near )