Page 192 - 4503
P. 192
При цьому не слід забувати про той регістр, котрий
прописаний за адресою b’0000000’. Він має назву — INDF
(INDirect — неспрямовує), його адреса дійсно є нульовою в
БАНКу 0 (рисунок 6.5), якщо d = 0, або ж він прописаний у
БАНКу 1, якщо d = 1. Але це лиш адреса комірки, яка не
містить даних операнда. Усі дані прописані за адресою, що
вказана у регістрі за адресою h’04’, або його відображені
h’84’(рисунок 6.5). Важливо знати алгоритм звернення до
вмісту регістра, адреса котрого міститься у індексному
регістрі FSR. На це вказує сам формат адресації — 0000000.
Наприклад, слід очистити регістр, на який вказує FSR. Для
цього достатньо однієї команди — clrf 0, або це те саме,
що — clrf INDF.
Очищення відбудеться не у регістрі INDF, і не у реґістрі
FSR. Внаслідок дії команди онулиться вміст регістра, адреса
котрого вказана у реґістрі FSR. Для прикладу перепишемо
програму 6.1 із розділу 6.1.4.1, застосовуючи алгоритм
зображений на рисунку 6.8.
Отже, нова програма очищення масиву регістрів із
пам’яті даних містить такий перелік завдань:
— встановити вказівник на початок масиву, наприклад
вказати на адресу h’20’. (Це означає, що у регістр FSR
слід записати h’20’ );
— очистити адресований регістр, вказавши адресу h’00’(
h’00’ означає звернутися до вмісту FSR );
— інкрементувати вказівник (це означає, що в регістрі FSR
розміститься h’21’);
— перевірити, чи вміст вказівника не дійшов до останнього
регістру масиву, наприклад до адреси h’7F’, якщо ні то
перейти до пункту 2;
— продовжити виконання програми.
192