Описание:
Загружает косвенно, со смещением или без смещения, один байт из СОЗУ в регистр. Положение байта в СОЗУ указывается 16-разрядным регистром-указателем Y в регистровом файле. Обращение к памяти ограничено текущей страницей объемом 64 Кбайта. Для обращения к другой странице СОЗУ необходимо изменить регистр RAMPY в I/O области. Регистр-указатель Y может остаться неизменным после выполнения команды, но может быть инкрементирован или декрементирован. Использование регистра-указателя Y обеспечивает удобную возможность обращения к матрицам, таблицам, указателю стека.
Использование Y-указателя:
Операция: | Комментарий: | ||
(i) | Rd <-- (Y) | Y: Неизменен | |
(ii) | Rd <-- (Y) | Y <-- Y + 1 | Y: Инкрементирован впоследствии |
(iii) | Y <-- Y + 1 | Rd <-- (Y) | Y: Предварительнo декрементирован |
(iv) | Rd <-- (Y + q) | Y: Неизменен, q: смещение | |
Синтаксис | Операнды: | Счетчик программ: | |
(i) | LD Rd,Y | 0 < d < 31 | PC<-- + 1 |
(ii) | LD Rd,Y+ | 0 < d < 31 | PC<-- + 1 |
(iii) | LD Rd,-Y | 0 < d < 31 | PC<-- + 1 |
(iv) | LDD Rd, Y + q | 0 < d < 31 0 < q < 63 |
PC<-- + 1 |
16-разрядный код операции:
(i) | 1000 | 000d | dddd | 1000 |
(ii) | 1001 | 000d | dddd | 1001 |
(iii) | 1001 | 000d | dddd | 1010 |
(iv) | 10q0 | qq0d | dddd | 1qqq |
Булевы выражения регистра статуса (SREG)
|
||||||||
|
Пример:
clr r29 ;Очистить старший байт Y ldi r28, $20 ;Установить $20 в младший байт Y ld r0, Y+ ;Загрузить в r0 содерж. SRAM по адресу $20 (Y постинкрементируется) ld r1, Y ;Загрузить в r1 содержимое SRAM по адресу $21 ldi r28, $23 ;Установить $23 в младший байт Y ld r2, Y ;Загрузить в r2 содержимое SRAM по адресу $23 ld r3, -Y ;Загрузить в r3 содерж. SRAM по адресу $22 (Y преддекрементируется) ldd r4, Y+2 ;Загрузить в r4 содержимое SRAM по адресу $24
Слов: 1 (2 байта)
Циклов: 2