- •Содержание
- •Введение
- •Архитектура микропроцессоров Intel 8086
- •Общие принципы работы мп 8086 при выполнении прикладных программ
- •Регистры
- •Адресация
- •Непосредственная адресация
- •Прямая адресация
- •Регистровая адресация
- •Косвенная регистровая адресация
- •Адресация no базе
- •Индексная адресация
- •Индексная адресация со смещением
- •Система команд
- •Команды пересылки данных
- •Арифметические команды
- •Битовые команды
- •Строковые команды
- •Команды передачи управления
- •Команды перехода
- •Условные
- •Безусловные
- •Команды условного перехода
- •Команды управления циклом
- •Тело цикла
- •Команды прерываний
- •Структура программы на языке ассемблера
- •Основные понятия языка ассемблера
- •Написание сегмента данных
- •Написание сегмента стека
- •Написание сегмента кода
- •Написание головной подпрограммы
- •Подготовка программ к выполнению
- •Отладка программ в Turbo Debugger
- •Специфика встроенного ассемблера
- •Оператор asm
- •Синтаксис ассемблерных команд
- •Коды инструкций
- •Операнды
- •Константы
- •Выражения
- •Операции
- •Бинарная операция -
- •Побитовые операции not, and, or, xor
- •Директивы ассемблера
-
Регистры
Во время работы программы команды и данные хранятся в оперативной памяти. Для повышения скорости обработки данных их можно разместить в регистрах – ячейках памяти внутри процессора. Они имеют собственные имена и обладают очень малым временем доступа к данным. В МП 8086/8088 имеется 14 регистров. В функциональном отношении они делятся на группы:
-
регистры общего назначения (АХ, ВХ, СХ, DX); предназначены для хранения операндов и выполнения основных команд; любой из них может использоваться как совокупность двух независящих друг от друга 8-разрядных регистров: старшего байта регистра (АН, ВН, СН, DH) и младшего байта (AL, BL, CL, DL); например, АХ состоит из АН и AL;
AH AL
AX
Рис. 1.3. Структура регистра общего назначения
-
сегментные регистры (CS, DS, SS, ES); используются для указания сегмента при адресации памяти;
-
регистры-указатели (SP, BP, IP); используются для указания смещения при адресации памяти;
-
индексные регистры (SI, DI); применяются для индексной адресации;
• регистр флагов; используется для хранения признаков состояния процессора. Внутри одной и той же функциональной группы регистры используются различным образом. Ниже описывается специфика использования регистров.
Регистр АХ Является основным сумматором. Используется во всех арифметических операциях (сложить, умножить и т.п.). Только с помощью АХ и его полурегистров AH/AL возможен обмен данными с портами ввода/вывода.
Регистр ВХ Используется как сумматор в арифметических операциях, а также как базовый регистр при индексной адресации.
Регистр СХ В основном используется как счетчик при выполнении операций повторения и сдвига. Может также участвовать в арифметических операциях.
Регистр DX Используется как регистр данных в операциях ввода/вывода, а также как сумматор при обработке длинных целых чисел (32-разрядных).
Регистр CS Содержит номер сегмента памяти (сегмента кода), в котором располагается текущая машинная инструкция. Для получения полного адреса следующей команды его содержимое сдвигается влево на 4 разряда и складывается с регистром-указателем IP. Содержимое CS автоматически изменяется в командах дальнего (межсегментного) перехода и вызова процедур.
Регистр IP Определяет смещение относительно начала сегмента кода CS очередной исполняемой машинной инструкции. Содержимое IP автоматически изменяется в ходе исполнения инструкции, обеспечивая правильный порядок выборки команд из памяти.
Регистр DS Содержит номер сегмента памяти (сегмента данных), в котором располагаются данные (константы и переменные). Все глобальные переменные и типизированные константы программы Турбо Паскаля всегда располагаются в единственном сегменте, адресуемом этим регистром.
Регистр SS Содержит номер сегмента стека. Стек - это участок автоадресуемой памяти, предназначенный для временного хранения операндов. Память стека используется по правилу «последним пришел - первую ушел»: самый последний помещенный в стек операнд будет первым извлекаться из него.
Регистр SP Указывает на вершину стека, т.е. совместно с регистром SS адресует ячейку памяти, куда будет помещаться операнд или откуда он будет извлекаться. Содержимое этого регистра автоматически уменьшается после размещения в стеке очередного операнда и увеличивается после извлечения операнда из стека.
Регистр ВР Так называемый указатель базы. Облегчает создание и использование локального стека (т.е. стека для использования внутри процедуры).
Регистр ES Дополнительный сегментный регистр ES используется для межсегментного обмена данными и в некоторых строковых операциях.
Регистр SI Определяет адрес источника информации при индексной адресации данных (например, при обработке массивов). Обычно используется в паре с регистра, DS.
Регистр DI В паре с регистром ES определяет приемник информации при межсегментном обмене данными.
Регистр флагов FLAGS содержит информацию о результате последней арифметико-логической команды (рис. 1.4). Команды пересылки и передачи управления на него не воздействуют. Этот регистр состоит из отдельных бит, называемых флагами, каждый из которых имеет определенный смысл. Рассмотрим некоторые из них:
OF SF ZF CF
Рис. 1.4. Структура регистра флагов
Флаг переноса CF Содержит 1, если произошел перенос единицы при сложении или заем единицы при вычитании. Используется также в циклических операциях и операциях сравнения.
Флаг четности PF Содержит 1, если в результате операции получено число с четным количеством значащих разрядов, т.е. дополняет результат до нечета - используется в операциях обмена для контроля данных.
Флаг внешнего переноса AF Контролирует перенос из 3-го бита данных. Полезен при операциях над упакованными десятичными числами.
Флаг нуля ZF Равен 1, если в результате операции получен ноль, и равен 0 в противном случае.
Флаг знака SF Равен 1, если в результате операции получено отрицательное число (с единицей в старшем разряде).
Флаг трассировки TF Равен 1, если программа исполняется по шагам, с передачей управления после каждой выполненной команды по прерыванию с вектором 1.
Флаг прерываний IF Содержит 1, если микропроцессору разрешена обработка прерываний.
Флаг направления DF Управляет направлением передачи данных: если он содержит 0, то после каждой индексной операции содержимое индексных регистров увеличивается на 1, в противном случае - уменьшается на 1.
Флаг переполнения OF Устанавливается в единицу, если в результате опepaции получено число, выходящее за разрядную сетку микропроцессора.