Формат 10: Косвенная загрузка/хранение полуслова
Рис. 48. Формат 10
Действие
Эти команды выполняют передачу полуслова между Lo регистром и памятью с прединдексной адресацией, задаваемой в виде 6-битной константы. Синтаксис в ассемблере для этих команд приведен в таблице 21.
Табл. 21. Команды формата 10
L |
THUMB ассемблер |
ARM эквивалент |
Действия |
0 |
STRH Rd, [Rb, #Imm] |
STRH Rd, [Rb, #Imm] |
Вычислить адрес ячейки памяти посредством сложения содержимого базового регистра Rb и константы #Imm. Полуслово из Rd (биты 0…15) поместить в память по этому адресу. |
1 |
LDRH Rd, [Rb, #Imm] |
LDRH Rd, [Rb, #Imm] |
Прочитать байт из памяти по адресу, полученному сложением содержимого базового регистра Rb и константы #Imm. Результат разместить в младшем полуслове регистра Rd (биты 0…15) и обнулить биты 8..31 этого регистра. |
Примечание: Константа #Imm - это полный 6-битный адрес, у которого бит [0] должен быть равен нулю (выравнивание по границе полуслова). При этом ассемблер при формировании команды фактически выполнить деление на 2 (#Imm >> 1), чтобы получить верное значение поля 5-битного смещения.
Число машинных тактов при выполнения команд
Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 21. Число машинных тактов выполнения этой команды в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.
Примеры
STRH R6, [R1, #56] ; Записать в память по адресу R1+56 младшее полуслово R4.
; Примечание: в код команды будет помещено число 28.
LDRH R4, [R7, #4] ; Прочитать из памяти полуслово по адресу R7+4
; и записать его в биты 0…15 регистра R4.
; Примечание: в код команды будет помещено число 2.
|
охранные извещатели: активные, пассивные, уличные, инфракрасные | Rainbowpiter.ru - центральный пылесос, пылесос rainbow
|