Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 8

Unknown Author

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

И, наконец, в ПК имеется регистр флагов. Флаг - это бит, принимающий значение 1 ("флаг установлен"), если выполнено некоторое условие, и значение О ("флаг сброшен") в противном случае. В ПК используется 9 флагов, причем конструктивно они собраны в один 16-разрядный регистр, называемый регистром флагов и обозначаемый как Flags. Каждый флаг - это один из разрядов данного регистра (некоторые разряды регистра не заняты):

Flags

15    14    13    12    11    10

9

8

7

6

5

4

3

1

0

Некоторые флаги принято называть флагами условий; они автоматически меняются при выполнении команд и фиксируют те или иные свойства их результата (например, равен ли он нулю); проверка этих флагов позволяет проанализировать результаты команд. Другие флаги называются флагами состояний; сами по себе они не меняются и менять их должна программа; состояние этих флагов оказывает влияние на дальнейшее поведение процессора.

Флаги условий:

CF (carry flag) - флаг переноса. Наиболее полезен в арифметических операциях

над числами без знака; например, если при сложении беззнаковых чисел получилась слишком большая сумма - с единицей переноса, которой нет места в ячейке, тогда флаг CF принимает значение 1, а если сумма "укладывается" в размер ячейки, то значением CF будет 0.

OF (overflow flag) - флаг переполнения. Полезен в арифметических операциях

над числами со знаком; например, если при сложении или вычитании знаковых чисел получился результат, по модулю превосходящий допустимую величину (произошло переполнение мантиссы), тогда флаг OF получает значение 1, а если переполнения мантиссы не было - значение 0.

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

нулевым.

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

числами получился отрицательный результат.

PF (parity flag) - флаг четности. Равен 1, если в 8 младших битах результата

очередной команды содержится четное количество двоичных единиц. Учитывается обычно только в операциях ввода-вывода.

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

Флаги состояний:

DF (direction flag) - флаг направления. Устанавливает направление просмотра

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

IF (interrupt flag) - флаг прерываний. При IF=0 процессор перестает реагировать

на поступающие к нему прерывания, а при IF=1 блокировка прерываний снимается.

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

процессор делает прерывание, чем можно воспользоваться при отладке программы - для ее трассировки.

[ставление данных

1.3 Л.    Представление целых чисел

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