Команда ST (STD) - записать косвенно из регистра в СОЗУ с использованием индекса Y
Описание:
Записывается косвенно, со смещением или без смещения, один байт из регистра в СОЗУ. Положение байта в СОЗУ указывается 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
|