Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ ПО АССЕМБЛЕРУ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
471.55 Кб
Скачать

Назначение регистров микропроцессора

Регистры делятся на группы:

Группа регистров общего назначения AX, BX, CX, DX могут использоваться для различного применения. В арифметико-логических командах – в качестве операндов, в командах пересылки – в качестве источников и приемников. Отличительная особенность этих регистров определяется возможностью использования раздельно левой (H) и правой (L) половины. Наряду с тем, что регистры имеют общее применение, некоторые команды используют эти регистры специальным образом, что отражено в их названии:

AX – аккумулятор. Является основным сумматором и применяется во всех операциях ввода/вывода, некоторых операциях над строками и некоторых арифметических операциях. Некоторые команды имеют более эффективный код, если они используют аккумулятор;

AL – аккумулятор младший;

AH – аккумулятор старший;

BX – база. Может содержать адрес начала поля (массива) в сегменте данных. Относительно этого адреса вычисляются адреса элементов поля;

CX – счётчик, необходим для управления числом повторений циклов и для операций сдвига;

CL – счетчик младший;

DX – регистр данных, используется для некоторых операций ввода/вывода и для операций умножения и деления.

Группа указательных и индексных регистров представлена регистрами:

SP – указатель стека. Указывает на вершину стека;

BP – указатель базы. Может содержать адрес начала поля (массива) в сегменте стека.

Относительно этого адреса вычисляются адреса элементов поля. По назначению отли-

чается от регистра BX тем, что определяет адрес относительно начала сегмента стека;

SI – индекс источника. Определяет адрес элемента поля, относительно базового адреса

(начала поля);

DI – индекс приемника. Определяет адрес элемента поля, относительно базового адре-

са (начала поля). Функции регистров DI и SI различаются при их использовании в ко-

мандах обработки строк.

Наряду со специальными функциями эти регистры могут использоваться и как общие регистры. Указательные и индексные регистры только 16-ти разрядные и на старшие и младшие половинки не делятся.

mov AX,B[SI]

{ AX:=B[SI] }

B ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

0 1 2 3...................................FFFFh <- SI

B – вектор

SI – индекс (указывает на один из элементов вектора)

Третья группа регистров сегментов. Их назначение рассмотрено ранее.

Регистр IP – счётчик команд. Он определяет адрес выполняемой команды. Сосчитать значение IP или переслать в него новое значение не представляется возможным, поэтому IP – программно-недоступный регистр.

Регистр флагов

Регистр флагов определяет состояние МП и значение результата выполняемой операции. Не все биты регистра определены.

СТАРШИЙ БАЙТ МЛАДШИЙ БАЙТ

├<──────────────────────>┼<──────────────────────>┤

│┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐│

│X │X │X │X │OF│DF│IF│TF│SF│ZF│X │AF│X │PF│X │CF│

└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

15 13 11 9 7 5 3 1

14 12 10 8 6 4 2 0

Флаги делят на две группы. Первая группа флагов обычно получает значения при выполнении арифметических и логических команд. Значения флагов являются признаками результата выполненной команды:

1) AF – флажок вспомогательного переноса; фиксирует перенос (заём) из младшей тетрады в старшую 8-ми или 16-битного результата. Он необходим только в командах десятичной арифметики;

2) CF – фиксирует значение переноса (заёма), возникающего при сложении или вычитании байт или слов, а также при сдвиге операндов;

3) SF – повторяет значение старшего бита результата (0 - плюс, 1 - минус);

4) OF – переполнение при сложении (вычитании) (происходит потеря старшего бита результата);

5) PF – флажок паритета. Фиксирует наличие четного числа единиц в младших 8 битах результата операции (0 – чётный, 1 – нечётный);

6) ZF – сигнализирует о получении нулевого результата операции (0 – ненулевой, 1 – нулевой результат).

Три дополнительных флажка предназначены для управления некоторыми действиями микропроцессора:

1) DF – флажок направления, определяет порядок сканирования цепочек в строковых командах:

DF=0, от меньших адресов к большим;

DF=1, от больших адресов к меньшим;

2) IF – определяет реакцию микропроцессора на запросы внешних маскируемых прерываний по входу INT:

IF=0, запросы прерываний игнорируются;

IF=1, запросы прерываний обрабатываются;

3) TF – флажок трассировки. При его установке в состояние «1» МП переходит в пошаговый режим (покомандный).

Значение первых шести флагов используются в командах условных переходов. Для работы с последними тремя флагами предусмотрены специальные команды сброса и установки.