Составители:
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 ("Очистка регистра переноса");  
  сдвинуть биты слова на старое место. 
Страницы
- « первая
- ‹ предыдущая
- …
- 63
- 64
- 65
- 66
- 67
- …
- следующая ›
- последняя »
