Page 228 - 4503
P. 228
h’31’ , вміст якого 00011010. Значення ознаки С до операції
зсування дорівнює 1.
У результаті виконання команди rrf h’31’ вміст
регістру став іншим — b’10001101’, а ознака С набула
значення 0.
Знаючи такі особливості операцій циклічного зсування,
ми можемо перед їх викликом онулити значення С, а потім
здійснити відповідну команду:
bcf STATUS, C ; погашення біту
;перенесення
rrf h’31’, f ; зсування вправо
Внаслідок застосування цього фрагменту у регістрі h’31’
опиниться число b’00001101’, а ознака С матиме значення 0.
Якщо є потреба в онуленні кількох старших бітів
регістра, то його можна здійснити шляхом кількаразового
виконання щойно наведеного програмного фрагменту. Вміст
регістра h’31’ буде поступового очищатися: зліва у нього за
кожний виклик представленого фрагменту буде заходити 0:
00001101 →00000110→00000011→00000001→00000000.
Звісно це можна робити циклом, вказавши відповідну
кількість проходів по ньому, тобто кількість викликів
вказаного програмного фрагменту.
Значно більшу цікавість може викликати задача
перевірки кількості 1 (або 0) в певному регістрі.
Задача 7.2 У регістрі h’21’ зберігається певне
поточне значення стану групи перемикачів. Ввімкнутим
перемикачам відповідає значення 1, розімкнутим 0. Слід
знайти кількість ввімкнутих перемикачів.
228