Читать «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 Л. Представление целых чисел
В общем случае под целое число можно отвести любое число соседних байтов памяти, однако система команд ПК поддерживает работу с числами только размером в байт и слово и частично поддерживает работу с числами размером в двойное слово (если числа занимают иное количество байтов, то все операции над ними надо реализовывать самому программисту). Поэтому можно считать, что в ПК целые числа представляются только байтом, словом или двойным словом. Именно эти форматы чисел мы и будем рассматривать.