ВУЗ:
Составители:
46
Регистр Р д
о сдв
и
га
0
1
1
1
0
1
1
1
Регистр Р после сдвига
L
С(Р,1)
1
1
1
0
1
1
1
1
CF=0; SF=1; ZF=0; OF=0.
Пример 4
(в цепь сдвига включается флаг CF, значение которого
до сдвига равно 0).
Регистр Р д
о сдв
и
га
0
1
1
1
0
1
1
1
Р
егистр Р после сдвига
R
C
(Р,1)
0
0
1
1
1
0
1
1
CF=1; SF=0; ZF=0; OF=0.
Алгоритм выполнения циклического сдвига не зависит от кода,
в котором работает процессор.
4.2.3. Арифметический сдвиг
Арифметический сдвиг выполняется с учетом знака операнда, по-
этому алгоритм его выполнения зависит от кода, в котором работает
процессор. Арифметический сдвиг операнда влево на 1 бит эквива-
лентен увеличению его в два раза, а арифметический сдвиг вправо на
1 бит эквивалентен делению операнда на 2. Примем следующие обо-
значения: AL – левый арифметический сдвиг (arithmetical left); AR –
правый арифметический сдвиг (arithmetical right).
Операция арифметического сдвига будет обозначаться:
<арифметический сдвиг>(<регистр>,<константа сдвига>).
4.2.3.1. Алгоритм арифметического сдвига в прямом коде
В прямом коде сдвигается только числовая часть операнда, знак
остается на месте. При этом освобождающиеся биты слева или спра-
ва (в зависимости от направления сдвига) заполняются нулями. При
сдвиге влево делается анализ на переполнение разрядной сетки про-
цессора. Переполнение возникает, если значение старшего сдвигае-
мого числового бита равно 1.
Рассмотрим примеры выполнения арифметического сдвига в пря-
мом коде.
Пример 1.
Пусть регистр Р восьмиразрядного процессора хранит
операнд 01110111.
Р
егистр Р д
о сдв
и
га
0
1
1
1
0
1
1
1
Регистр Р до сдвига 0 1 1 1 0 1 1 1
Регистр Р после сдвига LС(Р,1) 1 1 1 0 1 1 1 1
CF=0; SF=1; ZF=0; OF=0.
Пример 4 (в цепь сдвига включается флаг CF, значение которого
до сдвига равно 0).
Регистр Р до сдвига 0 1 1 1 0 1 1 1
Регистр Р после сдвига RC(Р,1) 0 0 1 1 1 0 1 1
CF=1; SF=0; ZF=0; OF=0.
Алгоритм выполнения циклического сдвига не зависит от кода,
в котором работает процессор.
4.2.3. Арифметический сдвиг
Арифметический сдвиг выполняется с учетом знака операнда, по-
этому алгоритм его выполнения зависит от кода, в котором работает
процессор. Арифметический сдвиг операнда влево на 1 бит эквива-
лентен увеличению его в два раза, а арифметический сдвиг вправо на
1 бит эквивалентен делению операнда на 2. Примем следующие обо-
значения: AL – левый арифметический сдвиг (arithmetical left); AR –
правый арифметический сдвиг (arithmetical right).
Операция арифметического сдвига будет обозначаться:
<арифметический сдвиг>(<регистр>,<константа сдвига>).
4.2.3.1. Алгоритм арифметического сдвига в прямом коде
В прямом коде сдвигается только числовая часть операнда, знак
остается на месте. При этом освобождающиеся биты слева или спра-
ва (в зависимости от направления сдвига) заполняются нулями. При
сдвиге влево делается анализ на переполнение разрядной сетки про-
цессора. Переполнение возникает, если значение старшего сдвигае-
мого числового бита равно 1.
Рассмотрим примеры выполнения арифметического сдвига в пря-
мом коде.
Пример 1. Пусть регистр Р восьмиразрядного процессора хранит
операнд 01110111.
Регистр Р до сдвига 0 1 1 1 0 1 1 1
46
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »
