- •Программирование на языке Ассемблер
- •Классификация языков программирования
- •Поколения мп
- •Структура мп 8086
- •Регистры мп
- •Регистры общего назначения
- •Сегментные регистры
- •Регистры смещений
- •Регистр флагов
- •Структура и организация памяти
- •Сегментация памяти и формирование адреса
- •Особенности машинных команд
- •Основные команды мп
- •1.2 Перестановка (exchange):
- •1.3 Загрузка исполнительного адреса (load effective address):
- •3.1 Команды умножения
- •3.2 Команды деления
- •Переходы. Циклы
- •Команды сравнения и условного перехода
- •Команды условного перехода
- •3. Команды управления циклом
- •Язык Ассемблера ibm pc. Структура операторов и директив. Метки, переменные и их атрибуты
- •Команды
- •Директивы
- •Директивы определения данных
- •Конструкция повторения dup
- •Директива dd (define double word, определить двойное слово)
- •Директивы эквивалентности и присваивания
- •Структура программы. Логические сегменты
- •Побитовая обработка и ее основные виды
- •2. Команды сдвига
- •2.1. Логические сдвиги
- •2.2. Арифметические сдвиги
- •2.3. Циклические сдвиги
- •Стек и сегмент стека
- •Стековые команды
- •Пример использования стека
- •Модульное программирование
- •Типы объединения модулей
- •Связь Паскаль-Ассемблер
- •Параметры-значения
- •Параметры-переменные
- •Способы адресации
- •Команды строковых примитивов
- •Сканирование строки: scasb, scasw
- •Приемы обработки структурированной информации
- •Inc si ; к следующей оценке
- •Inc dx ; учет отличника
- •Составление и оформление программ на ассемблере
- •Префикс программного сегмента. Com- и exe-программы
- •Команда прерывания
- •Функции прерывания 21h
- •Процесс разработки программы на языке ассемблера
- •Трансляция программы
- •Компоновка программы
- •Макроповторения
- •Макрооператоры
- •Директива local
- •Директивы условного ассемблирования
- •Директивы if и ife
- •Директивы ifidn и ifdif
Регистры общего назначения
РОН можно использовать в любых арифметических и логических машинных операциях.
К этой группе относятся:
AX - регистр-аккумулятор (применяется для хранения промежуточных данных, в некоторых командах его использование обязательно);
BX - базовый регистр (применяется для хранения базового адреса некоторого объекта в памяти);
CX - регистр-счетчик (применяется в командах, производящих некоторые повторяющиеся действия);
DX - регистр данных (так же как и регистр АХ, хранит промежуточные данные). В некоторых командах его явное использование обязательно, в других он используется неявно.
Регистры AX, BX, CX и DX устроены так, что возможен независимый доступ к их старшей H (high) и младшей L (low) половинам. Целиком регистр используется при работе с числами, а его половины – при работе с частями чисел или символами.
Сегментные регистры
Вторую группу регистров образуют следующие 4 регистра: CS, DS, SS, ES, служащих для доступа к четырем типам сегментов.
Сегмент кода содержит команды программы. Для доступа к этому сегменту служит регистр сегмента кода (Code Segment register) CS. Он содержит адрес сегмента с машинными командами, к которому имеет доступ процессор.
Сегмент данных содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр сегмента данных (Data Segment register) DS, который хранит адрес сегмента данных текущей программы.
Сегмент стека представляет собой область памяти, называемую стеком. Для доступа к этой области служит регистр сегмента стека (Stack Segment register) SS, содержащий адрес сегмента стека.
Дополнительный сегмент данных. Если программе недостаточно одного сегмента данных, то она имеет возможность задействовать дополнительный сегмент данных. Адрес дополнительного сегмента данных должен содержаться в регистре дополнительного сегмента данных ES.
Ни в каких арифметических, логических операциях эти регистры участвовать не могут.
Регистры смещений
Регистры смещений используются для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов):
регистр IPхранит смещение адреса текущей команды программы;
в регистр BPзаписывается начальный адрес поля памяти, непосредственно отведенного под стек;
регистр SPуказывает на вершину стека – смещение относительно начала стека;
регистры SIиDIпредназначены для хранения адресов индексов источника и приемника данных при операциях над строками и другими структурами данных.
Регистр флагов
Регистр Flags – это регистр состояния процессора. Из его 16 разрядов используются только 9. Флаг – это бит, принимающий значение 1 («флаг установлен»), если выполнено некоторое условие, и значение 0 («флаг сброшен») в противном случае. Каждый флаг – это один из разрядов данного регистра. Некоторые разряды регистра не используются.
Флаги условий:
CF (carry flag) – флаг переноса при арифметических операциях.
OF (overflow flag) – флаг переполнения в арифметических операциях.
ZF (zero flag) – флаг нуля (нулевого результата).
SF (sign flag) – флаг знака.
PF (parity flag) – флаг четности результата.
AF (auxiliary carry flag) – флаг дополнительного переноса.
Флаги состояний:
DF (direction flag) – флаг направления. Устанавливает направление просмотра строк в строковых командах.
IF (interrupt flag) – флаг прерываний.
TF (trap flag) – флаг трассировки. Используется при отладке.