Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
43
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

25 Асемблер. Регістри та біти ознак процесора Intel 8086. (регістри загального вжитку та сегментні регістри, їх призначення; ознаки cf, of, sf, pf, af, zf)

Оперативная память. Объем оперативной памяти ПК - 220 байтов (1 Мб). Байты нумеруются начиная с 0, номер байта называется его адресом. Для ссылок на байты памяти используются 20-разрядные адреса: от 00000 до FFFFF (в 16-ричной системе). Байт содержит 8 разрядов (битов), каждый из которых может принимать значение 1 или 0. Разряды нумеруются справа налево от 0 до 7:

Байты используются для хранения небольших целых чисел и символов, слова - для хранения целых чисел и адресов, двойные слова - для хранения "длинных" целых чисел и адресов в виде сегмент:смещение.

Регистры – ячейки, входящие в состав процессора, для кратковременного хранения данных. Доступ к регистрам осуществляется значительно быстрее, чем к ячейкам памяти, поэтому использование регистров заметно уменьшает время выполнения программ.

Все регистры имеют размер слова (16 битов), за каждым из них закреплено определенное имя. По назначению и способу использования регистры можно разбить на следующие группы:

  • регистры общего назначения (АХ, ВХ, СХ, DX, BP, SI, DI, SP);

  • сегментные регистры (CS, DS, SS,ES);

  • счетчик команд (IP);

  • регистр флагов (Flags). Расшифровка этих названий:

A accumulator, аккумулятор;

В base, база;

С counter, счетчик;

D data, данные;

BP base pointer, указатель базы;

SI source index, индекс источника;

DI destination index, индекс приемника;

SP stack pointer, указатель стека;

CS code segment, сегмент команд;

DS data segment, сегмент данных;

SS stack segment, сегмент стека;

ES extra segment, дополнительный сегмент;

IP instruction pointer, счетчик команд.

Регистры общего назначения можно использовать во всех арифметических и логических командах. В то же время каждый их них имеет определенную специализацию, т.е. для некоторых команд необходимы только определенные регистры. Например, команды умножения и деления требуют, чтобы один из операндов находился в регистре АХ или в регистрах АХ и DX (в зависимости от размера операнда), а команды управления циклом используют регистр СХ в качестве счетчика цикла. Регистры ВХ и ВР обычно используются как базовые регистры, a SI и DI - как индексные. Регистр SP как правило указывает на вершину стека, аппаратно поддерживаемого в ПК.

Регистры АХ, ВХ, СХ и DX конструктивно устроены так, что возможен независимый доступ к их старшей и младшей половинам; можно сказать, что каждый из этих регистров состоит из двух регистров, размер которых один байт и обозначаемых АН, AL, BH, BL, CH, CL, DH, DL соответственно (Н - high, старший; L - low, младший). Таким образом, с каждым из этих регистров можно работать как с единым целым, так и с его частями. Например, можно записать слово в АХ, а затем считать только часть слова из регистра АН или заменить только часть в регистре AL и т.д. Такое устройство регистров позволяет использовать их для работы и с числами, и с символами.

Все остальные регистры не делятся на части, поэтому считать или записать их содержимое (16 битов) можно только целиком.

Сегментные регистры CS, DS, SS и ES не могут быть операндами никаких команд, кроме команд пересылки и стековых команд. Эти регистры используются только для сегментирования адресов.

Счетчик команд IP всегда содержит адрес (смещение от начала программы) той команды, которая должна быть выполнена следующей (начало программы хранится в регистре CS). Содержимое регистра IP можно изменить только командами перехода.

Флаги. Процессор имеет специальный регистр флагов. Флаг - это бит, принимающий значение "1", если выполнено некоторое условие, и значение "О" в противном случае. В процессоре i8086 используются 9 флагов, каждому из них присвоено определенное имя. Все они собраны в регистре флагов, т.е. каждый флаг - это один из разрядов регистра. Структура регистра флагов показана на рис. 1.

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

15

14

13

12

11

10

9

8

7

б

5

4

3

2

1

0

X

X

X

X

OF

DF

IF

TF

SF

ZF

X

AF

X

PF

X

CF

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

К флагам условий относятся:

CF (carry flag) - флаг переноса. Принимает значение 1, если операция произвела перенос из старшего бита результата. Старшим является 7-й, 15-й, 31-й биты в зависимости от размерности операнда. Это происходит, например, если при сложении целых чисел результат вышел за пределы разрядной сетки, или если при вычитании чисел без знака первое из них было меньше второго. В командах сдвига в CF заносится бит, вышедший за разрядную сетку;

OF (overflow flag) - флаг переполнения. Устанавливается в 1, если в результате операции происходит перенос в старший, знаковый бит (7-й, 15-й, или 31-й). Устанавливается в 1, если происходит заем из этих разрядов. Этот флаг необходим для работы с числами со знаком;

ZF (zero flag) - флаг нуля. Равен 1, если результат операции оказался равным 0;

SF (sign flag) - флаг знака. Устанавливается в 1, если в операции над знаковыми числами получился отрицательный результат;

PF (parity flag) - флаг четности. Равен 1, если результат очередной команды содержит четное количество двоичных единиц. Учитывается обычно при операциях ввода-вывода;

AF (auxiliary carry flag) - флаг дополнительного переноса. Фиксирует особенности выполнения операций над двоично-десятичными числами.

К флагам состояний относятся:

DF (direction flag) - флаг направления. Устанавливает направление просмотра строк в строковых командах: при DF=0 строки просматриваются от начала к концу, при DF=1 - в обратном направлении;

IF (interrupt flag) - флаг прерываний. При IF=0 процессор перестает реагировать на поступающие к нему прерывания, при IF=1 блокировка прерываний снимается;

TF (trap flag) - флаг трассировки. При TF=1 после выполнения каждой команды процессор делает прерывание (с номером 1), что используется при отладке программы для ее трассировки (выполнения по шагам).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]