Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Ассемблеру.docx
Скачиваний:
12
Добавлен:
09.11.2018
Размер:
125.1 Кб
Скачать
    1. Регистры

Во время работы программы команды и данные хранятся в оперативной памяти. Для повышения скорости обработки данных их можно разместить в регистрах – ячейках памяти внутри процессора. Они имеют собственные имена и обладают очень малым временем доступа к данным. В МП 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ции получено число, выходящее за разрядную сетку микропроцессора.