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