Описание:
Записывается косвенно один байт из регистра в СОЗУ. Положение байта в СОЗУ указывается 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