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