Архитектура базовой ЭВМ. Кириллов В.В. - 65 стр.

UptoLike

Составители: 

62
Сдвигами битов числа влево или вправо можно реализовать операции
умножения или деления на 2 (один сдвиг), 4 (два сдвига) и т. д.
Действительно, после сдвига числа
(0000 0000 0011 1010)
2
= 58
на один разряд влево будет получено число
(0000 0000 0111 0100)
2
=116,
а после еще одного такого сдвига - число
(0000 0000 1110 1000)
2
= 232
(здесь предполагалось, что регистр переноса был очищен перед сдвигами).
Рассмотрим еще один пример упрощения программы за счет
использования команд сдвигов: проанализировать элементы массива X
(ячейки 010–02F) и при отрицательном Х(1) присвоить Н(1)-му элементу
массива Н значение 1, а при положительном Х(1) – значение 0 (табл. 2.16).
Таблица 2.16
Программа выделения знака числа
Адрес
Содержимое
Комментарии
Код
Мнемоника
7
8
9
FFE0
0010
0030
Отрицательное число элементов массивов X и H
Текущий адрес элемента массива X
Текущий адрес элемента массива H
10
2F
Численные значения элементов массива X
30
4F
Численные значения элементов массива H
50
51
52
53
54
55
56
57
58
F200
4808
F600
F200
F600
3809
0007
C050
F000
CLA
ADD (8)
ROL
CLA
ROL
MOV (9)
ISZ 7
BR 50
HLT
Очистка аккумулятора
В аккумулятор очередной элемент массива X
Сдвиг знакового разряда X(I) в регистр переноса
Очистка аккумулятора
Сдвиг содержимого регистра переноса в младший
разряд аккумулятора и запись полученного
значения в H(I)
Модификация содержимого счетчика элементов
массива и переход по адресу 50, пока это
содержимое меньше 0
Останов ЭВМ
В некоторых приложениях возникает необходимость инвертирования
или очистки определенного бита слова. Для этого, например, можно:
поместить слово в аккумулятор;
сдвинуть слово так, чтобы нужный бит попал в регистр переноса;
выполнить команду CMC ("Инвертирование регистра переноса") или
CLC ("Очистка регистра переноса");
сдвинуть биты слова на старое место.