Команда ST - записать косвенно из регистра в СОЗУ с использованием индекса X
Описание:
Записывается косвенно один байт из регистра в СОЗУ. Положение байта в СОЗУ
указывается 16-разрядным регистром-указателем X в регистровом файле. Обращение к памяти ограничено текущей страницей объемом 64 Кбайта. Для обращения к другой странице СОЗУ необходимо изменить регистр RAMPX в I/O области. Регистр-указатель X может остаться неизменным после выполнения команды, но может быть инкрементирован или декрементирован. Эта особенность очень удобна при использовании регистра-указателя X в качестве указателя стека.
Использование X-указателя:
|
Операция: |
|
Комментарий: |
(i) |
(X) <-- Rr |
|
X: Неизменен |
(ii) |
(X) <-- Rr |
X <-- X + 1 |
X: Инкрементирован впоследствии |
(iii) |
X <-- X - 1 |
( X) <-- Rr |
X: Предварительно декрементирован |
|
|
Синтаксис |
Операнды: |
Счетчик программ: |
(i) |
ST X,Rr |
0 < d < 31 |
PC <-- PC + 1 |
(ii) |
ST X+,Rr |
0 < d < 31 |
PC <-- PC + 1 |
(iii) |
ST -X,Rr |
0 < d < 31 |
PC <-- PC + 1 |
16-разрядный код операции:
(i) |
1001 |
001r |
rrrr |
1100 |
(ii) |
1001 |
001r |
rrrr |
1101 |
(iii) |
1001 |
001r |
rrrr |
1110 |
Булевы выражения регистра статуса (SREG)
Пример:
clr r27 ; Очистить старший байт X
ldi r26, $20 ; Установить $20 в младший байт X
st X+,r0 ; Сохранить в r0 содержимое SRAM по адресу $20 (X постинкрементируется)
st X, r1 ; Сохранить в r1 содержимое SRAM по адресу $21
ldi r26, $23 ; Установить $23 в младший байт X
st r2, X ; Сохранить в r2 содержимое SRAM по адресу $23
st r3, -X ; Сохранить в r3 содержимое SRAM по адресу $22 (X преддекрементируется)
Слов: 1 (2 байта)
Циклов: 2
|