Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_lek_OAiP_Meleshko.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
377.68 Кб
Скачать

Сегментные регистры

Все сегментные регистры содержат адреса памяти, с которых начинаются соответствующие сегменты.

СS

DS

SS

ES

15

0

Рисунок 3. Сегментные регистры

CS – регистр сегмента кода (Code Segment). Содержит начальный адрес сегмента кода программы. Этот адрес плюс величина смещения в регистре ip (пара CS:IP) определяют адрес команды, которая должна быть выбрана процессором для выполнения.

DS – регистр сегмента данных (Data Segment). Хранит адрес сегмента, содержащего обрабатываемые программой данные. Этот адрес плюс величина смещения, определённая в команде, указывают на конкретную ячейку в сегмента данных.

SS – регистр сегмента стека (Stack Segment). Содержит начальный адрес сегмента стека.

ES – регистр дополнительного сегмента данных (Extra Segment). Некоторые операции со строками используют этот регистр для управления адресацией памяти. Ассемблерная программа должна инициализировать регистр es явно.

Регистры состояния и управления

К даннаму типу регистров относятся:

IP – регистр указателя команды (Instruction Pointer). Он содержит смещение команды в сегменте кода, которая должна быть выполнена. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производится командами управления (команды условных и безусловных переходов, вызова процедур и др.) осуществляя тем самым переходы в требуемые точки программы.

ip

15

0

Рисунок 4. Регистр указателя команды

FLAGS – регистр флагов (Flags register). Отдельные биты этого регистра имеют определённое функциональное назначение и называются флагами. Флаг принимает значение 1, если он установлен, и 0, если он сброшен.

flags

OF

DF

IF

TF

SF

ZF

AF

PF

CF

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Рисунок 5. Регистр флагов микропроцессора i8086

Флаги можно разделить на две группы:

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

CF – флаг переноса (Carry Flag). Содержит признак переноса информациии из старшего бита (после арифметических операций), а также последний бит при операциях сдвига. 1 – перенос был, 0 – переноса не было.

PF – флаг паритета (Parity Flag). Устанавливается в 1, если 8 младших байтов результата содержат чётное число единиц, и в 0 – если нечётное. Это учитывается в операциях ввода-вывода.

AF – флаг вспомогательного переноса (Auxiliaиy Flag). используется в операциях над двоично-десятичными (BCD) числами. Устанавливается в 1, если результате операции сложения был произведен перенос из разряда 3 в старший разряд или при вычитании был заем в разряд 3 младшей тетрады из значения в старшей тетраде; 0 – переносов (заемов) не было.

ZF – флаг нуля (Zero Flag). Устанавливается в 1, если результат операции равен 0.

SF – флаг знака (Sign Flag). Копирует старший бит результата выполнения команды, показывая, таким образом, знак операции.

OF – флаг переполнения (Overflow Flag). Фиксирует переполнение, т.е. выход результата за пределы допустимого диапазона значений для чисел со знаком. Устанавливается в 1 – в результате операции происходит перенос в старший, знаковый бит результата; 0 – такого переноса нет.

  • флаги управления, позволяющие изменять некоторые условия работы процессора.

TF – флаг трассировки (Trace Flag). Используется для осуществления пошагового выполнения программы. Если TF=1, то после выполнения каждой команды процессор реализует процедуру прерывания с номером 1; если TF=0 – обычная работа.

IF – флаг прерывания (Interrupt Flag). Если флаг равен 1, то прерывания от внешних устройств разрешаются, а если 0 – запрещены.

DF – флаг направления (Directory Flag). Используется командами обработки строк. Если DF=0, строка обрабатывается в прямом направлении; если DF=1, обработка идёт в обратном направлении.

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