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