
- •История разработки микропроцессоров
- •3.Регистр флагов eflags/flags
- •Сегментная организация памяти
- •Сегментная организация памяти в защищенном режиме
- •Страничная организация памяти
- •Команды передачи данных
- •Двоично-десятичная арифметика
- •2.Команда add
- •Команда sar
- •Команда shr
- •Особые случаи
- •Округления
Команда sar
Сдвиг арифметический вправо.
С

Бит знака
При выполнении этой команды значение флага SFне изменяется и поэтому флагOFвсегда равен 0. Из таблицы 2 получаются следующие комбинации флагов для этой команды (таблица 8). Последний сдвигаемый вправо бит образует флагCF. Позиции сдвигаемых вправо бит заполняются нулями
Таблица 8 (команда SAR)
№№ |
C |
O |
S |
Z |
P |
Маски флагов |
0 |
0 |
0 |
0 |
0 |
0 |
000 |
1 |
0 |
0 |
0 |
0 |
1 |
004 |
3 |
0 |
0 |
0 |
1 |
1 |
044 |
4 |
0 |
0 |
1 |
0 |
0 |
080 |
5 |
0 |
0 |
1 |
0 |
1 |
084 |
16 |
1 |
0 |
0 |
0 |
0 |
001 |
17 |
1 |
0 |
0 |
0 |
1 |
005 |
19 |
1 |
0 |
0 |
1 |
1 |
045 |
20 |
1 |
0 |
1 |
0 |
0 |
081 |
21 |
1 |
0 |
1 |
0 |
1 |
085 |
Команда shr
Сдвиг логический вправо
0
С


При выполнении этой команды флаг SFвсегда равен 0. ФлагOFформируется только в случае единичного сдвига, а при множественном сдвиге значение этого флага не определено и поэтому при таком сдвиге этот флаг должен быть замаскирован. При единичном сдвиге флагOF=1, если в исходном операнде старший бит равен 1.
Таблица при единичном сдвиге для команды SHR.
№№ |
C |
O |
S |
Z |
P |
Маски флагов |
0 |
0 |
0 |
0 |
0 |
0 |
0000 |
1 |
0 |
0 |
0 |
0 |
1 |
0004 |
3 |
0 |
0 |
0 |
1 |
1 |
0044 |
8 |
0 |
1 |
0 |
0 |
0 |
0800 |
9 |
0 |
1 |
0 |
0 |
1 |
0804 |
11 |
0 |
1 |
0 |
1 |
1 |
0844 |
16 |
1 |
0 |
0 |
0 |
0 |
0001 |
17 |
1 |
0 |
0 |
0 |
1 |
0005 |
19 |
1 |
0 |
0 |
1 |
1 |
0045 |
24 |
1 |
1 |
0 |
0 |
0 |
0801 |
25 |
1 |
1 |
0 |
0 |
1 |
0805 |
27 |
1 |
1 |
0 |
1 |
1 |
0845 |
Форматы чисел с плавающей точкой
Число состоит из 3-х полей: знака, порядка и мантиссы
Существует 3 формата: представления: одинарной точности, двойной точности и расширенной точности.
Поле знака во всех форматах представлено одним разрядом, причем 0 показывает положительное число, а 1 - отрицательное. При переходе от положительных чисел к отрицательным изменяется только знаковый разряд, дополнительный код не применяется.
Формат |
Порядок |
Мантисса |
Общее число разрядов |
Диапазоны чисел | |
Отрицат числа |
Положительные числа | ||||
Одинарная точность |
8 |
23 |
32 |
-3,37х1038 - -1,17х10-38 |
1,17х10-38 1,17х10-38 |
Двойная точность |
11 |
52 |
64 |
-1,67х10308 -2,23х10-308 |
2,23х10-308 1,67х10308 |
Расширенная точность |
15 |
64 |
80 |
-1,2х104932 -3,37х10-4932 |
3,37х10-4932 1,2х104032 |
Нуль в формате с плавающей запятой изображается числом, содержащим все нули в полях порядка и мантиссы. Следовательно, в этом формате имеются два нуля: +0 и -0.
Числа с плавающей точкой нормализованы, то есть старший разряд мантиссы равен 1, Для получения дополнительного разряда этот разряд отсутствует.
Чтобы иметь отрицательные порядки в поле порядка указывается сумма истинного порядка и положительной константы, которая называется смещением. Для одинарной точности смещение равно 127, для двойной точности – 1023 и для расширенной точности – 16383.
разделе Представление вещественных чисел в памяти компьютера первый шаг мы уже сделали и получили двоичное представление целой и дробной части числа 3,14:
3 = 11b
0,14 < 1/2, поэтому старший разряд равен 0
0,14 < 1/4, поэтому следующий разряд также равен 0
0,14 > (1/8 = 0,125), поэтому следующий разряд равен 1
0,14 – 0,125 = 0,015
0,015 < (1/16 = 0,0625), поэтому следующий разряд равен 0
0,015 < (1/32 = 0,03125), поэтому следующий разряд равен 0
0,015 < (1/64 = 0,015625), поэтому следующий разряд равен 0
0,015 > (1/128 = 0,0078125), поэтому следующий разряд равен 1
0,015 – 0,0078125 = 0,0071875
0,0071875 > (1/256 = 0,00390625), поэтому следующий разряд равен 1
0,14 = 0,00100011b
То есть число 3,14 в двоичном виде равно:
3,14 = 11,00100011b
Теперь рассчитаем смещённый порядок (предположим, что для хранения порядка у нас используется 5 бит). Тогда исходные данные:
ИП = 1 (у нас 2 в степени 1)
k = 5
СП = ИП + 2k-1 – 1 = 1 + 25-1 – 1 = 1 + 16 – 1 = 16
Записываем знак числа, порядок и мантиссу в соответствующие разряды:
Знак |
Порядок |
Мантисса |
0 |
10000 |
0010001100 |