Регистр флагов
Бит | Название | Расшифровка | Назначение |
CF | Carry flag | Флаг переноса | |
Установлен в "1" | |||
PF | Parity flag | Флаг четности | |
Установлен в "0" | |||
AF | Auxiliary flag | Флаг вспомогательного переноса | |
Установлен в "0" | |||
ZF | Zero flag | Флаг нуля | |
SF | Sign flag | Флаг знака | |
TF | Trace flag | Флаг трассировки | |
IF | Interrupt flag | Флаг разрешения прерываний | |
DF | Direction flag | Флаг направления | |
OF | Overflow flag | Флаг переполнения | |
12,13 | IOPL | I/O Privilege Level | Уровень привелегий инструкций ввода-вывода |
NT | Nested Task Flag | Флаг вложенной задачи | |
Установлен в "0" | |||
RF | Resume flag | Флаг возобновления | |
VM | Virtual-8086 Mode | Разрешение виртуального режима процессора 8086 | |
AC | Alignment Check | Разрешение проверки выравнивания указателей на ОЗУ | |
VIF | Virtual Interrupt Flag | Виртуальный образ флага IF | |
VIP | Virtual Interrupt Pending | Указывает на наличие необслуженного прерывания | |
ID | Identification Flag | Указывает на поддержку инструкции Команда CPUID | |
22-31 | Установлены в "0" |
Лекция № 7 (90-минут)
Тема: КОДИРОВАНИЕ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ
В связи с тем, что алгоритмы выполнения операций в компьютерных системах имеют свою специфику, возникает проблема представления отрицательных чисел.
Ее решают за счет использования особых способов кодирования числовых данных.
Рассмотрим три наиболее распространенных кода, которые применяются на практике: - прямой код; - обратный код; - дополнительный код.
Прямой код используется для представления отрицательных чисел в запоминающем устройстве компьютерной системы, а также при умножении и делении.
Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока компьютерной системы.
К кодам выдвигаются следующие требования:
- разряды числа в коде жестко связаны с определенной разрядной сеткой;
- для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.
1. Прямой код. Наиболее естественный код. Формируется следующим образом: в знаковый бит (SX) числа помещают знак числа (0 - если число положительное и 1 - если число отрицательное ), а остальные биты используют для абсолютного значения (модуля) числа. Правило преобразования чисел в прямом коде можно записать так:
. (3.8)
где A - вес старшего разряда в n-разрядной сетке, A=2s-1.
Отображение (s-битных) наборов ( прямой код, верхняя числовая прямая) на числовую ось ( числа, нижняя числовая прямая ) для компьютерной системы показано на рис. 3.3
Рисунок 3.3- Отображение s-битных наборов (прямой код ) на числовую ось
Например:
Десятичное число | Двоичное число | Прямой код | Комментарии |
(0(10)) | 0000(2) | 0,000 | положительный (0) |
(0(10)) | 0000(2) | 1,000 | отрицательный (0) |
(4(10)) | 0100(2) | 0,100 | положительная (4) |
(- 4(10)) | 1100(2) | 1,100 | отрицательная (4) |
(3(10)) | 0011(2) | 0,011 | положительная (3) |
(- 3(10)) | 1011(2) | 1,011 | отрицательная (3) |
Диапазон представимых чисел: -(2s-1-1)…(2s-1).
Положительный момент заключается в удобстве операции ввода-вывода данных. Отрицательный момент в том, что существует два представления (0) и операция алгебраического сложения требует анализа знаков и модулей операндов, и выбора фактической операции сложения или вычитания.
2. Обратный код.Обратный ( n - разрядный ) двоичный код положительного целого числа состоит из одноразрядного кода знака (0), за которым следует ( n - 1) разрядное двоичное представление модуля числа, то есть обратный код для положительного числа совпадает с прямым кодом.
Обратный ( n - разрядный ) двоичный код отрицательного целого числа состоит из одноразрядного кода знака (1), за которым следует ( n - 1) разрядное двоичное число, представляющее собой инвертированное (n - 1) разрядное представление модуля числа, то есть для отрицательного числа все цифры числа заменяются на противоположные, а именно ( 1 на 0, а 0 на 1) и в знаковый разряд заносится единица.
Обратный код числа определяется соотношением:
. (3.9)
где B=2s-1=Xmax - максимальное число в n-разрядной сетке.
Отображение (s-битных) наборов ( обратный код, верхняя числовая прямая) на числовую ось ( числа, нижняя числовая прямая ) для компьютерной системы показано на рис. 3.4.
Рисунок 3.4 - Отображение s-битных наборов (обратный код ) на числовую ось
Например:
Десятичное число | Двоичное число | Обратный код | Комментарии |
(0(10)) | 0000(2) | 0,000 | положительный (0) |
(0(10)) | 1111(2) | 1,111 | отрицательный (0) |
(4(10)) | 0100(2) | 0,100 | положительная (4) |
(- 4(10)) | 1011(2) | 1,011 | отрицательная (4) |
(3(10)) | 0011(2) | 0,011 | положительная (3) |
(- 3(10)) | 1100(2) | 1,100 | отрицательная (3) |
Диапазон представимых чисел: -(2s-1-1)…(2s-1).
Положительный момент заключается в том, что при сложении обратных кодов чисел как беззнаковых чисел получаем обратный код суммы.
Отрицательный момент заключается в том, что существует два представления (0) и при выполнении операций сложения в обратном коде требуется коррекция суммы с помощью циклического переноса единицы переполнения из знаковых разрядов суммы.
3. Дополнительный код. Наиболее распространенный способ представления отрицательных целых чисел в компьютерных системах.
Он позволяет заменить операцию вычитания на операцию сложения, чем упрощает архитектуру компьютерной системы.
Дополнительный код является дополнением числа до некоторого граничного числа (|Xmax+1|=2s).
Дополнительный код положительного числа совпадает с прямым кодом.
Для получения дополнительного кода отрицательного числа существует три способа:
- все цифры модуля исходного числа заменяются на взаимно обратные, то есть производится инверсия всех цифр числа, затем к полученному значению добавляется единица в младшем разряде;
- из модуля числа вычитается (1) младший бит, а затем инвертируются все разряды;
- необходимо записать n-битный модуль числа. Затем просматривать число справа налево, сохранить все младшие нули и первую встретившуюся (1), а остальные биты инвертировать.
Дополнительный код числа определяется соотношением:
. (3.10)
. (3.11)
где - , C = Xгр. равняется весу не существующего в данном числе разряда, расположенного слева от знаковой цифры.
Отображение s-битных наборов ( дополнительный код верхняя числовая прямая) на числовую ось ( числа нижняя числовая прямая ) для компьютерной системы показано на рис. 3.5.
Рисунок 3.5 - Отображение s-битных наборов (дополнительный код ) на числовую ось
Например:
Десятичное число | Двоичное число | Дополнительный код | Комментарии |
(0(10)) | 0000(2) | 0,000 | положительный (0) |
(4(10)) | 0100(2) | 0,100 | положительная (4) |
(- 4(10)) | 1100(2) | 1,100 | отрицательная (4) |
(3(10)) | 0011(2) | 0,011 | положительная (3) |
(- 3(10)) | 1101(2) | 1,101 | отрицательная (3) |
Диапазон представимых чисел: -(2s-1)…(2s-1).
Свойства дополнительного кода:
- при сложении чисел в дополнительном коде как беззнаковых чисел получаем дополнительный код суммы. Знаковые биты суммируются обычным образом, а возникающий при их сложении перенос игнорируется.
- любое число в дополнительном коде можно считать младшими битами («хвостом») числа любой длины, если содержимое знакового бита копировать влево. Эта операция называется расширением знака. Используется, когда исходные операнды в операциях сложения и вычитания имеют разную длину.
Свойства кодов:
1. Операции должны выполняться над данными, представленными в одном и том же коде: ПК-ПК, ОК-ОК, ДК-ДК;
2. Положительные числа в ПК, ОК, ДК не меняют своего представления;
3. Результат выполнения операций сложения и вычитания над числами, представленными в ПК, ОК или ДК, являются ПК, ОК или ДК соответственно;
4. Двоичный набор, представляющий (-0) в ПК и ДК, является запрещенной комбинацией;
5. В отличие от ПК, в ОК и ДК нельзя отбрасывать нули после знакового разряда в целой части и нули в конце дробной части отрицательного числа (разрешается отбрасывать 1).
Лекция № 8 (90-минут)