Лекция: Id register,Z
Эта команда косвенно загружает (load)в рабочий регистр registerзначение, которое находится по адресу, указываемому регистром Z. Если сформировать таблицу значений, занимающих последовательные ячейки памяти, изменяя значение Z, можно считывать данные, находящиеся в этих ячейках. Например, мы храним коды для отображения на семисегментном индикаторе цифр от до 9 в регистрах R20...R29. Тогда запишем в регистр Z число 20 (чтобы он указывал на начало таблицы – регистр R20) и прибавим к регистру то число, которое хотим преобразовать. Используя после этого операцию косвенного чтения, мы получим семисегментный код, соответствующий этому числу:
Алгоритм работы этой программы:
1. Записываем адрес начального регистра (R20) в регистр ZL (младший регистр относительного адреса). ldi ZL,20
2. Прибавляем к регистру ZL цифру, семисегментный код которого хотим выставить в порте B. Add ZL,digit
3. Записываем адрес регистра, в котором хранится семисегментный код в рабочий регистр.
4. Выставляем на выходах порта B семисегментный код символа.
Ldi ZL,20; Устанавливаем ZL на адрес R20
Add ZL,digit; Прибавляем цифру к ZL
Ld temp,Z; Читаем Rx в temp
Out PortB,temp; Выводим temp в порт В
Необходимо, перед этим занести все семисегментные коды в соответствующие регистры: