Формат 8: Косвенная загрузка/хранение байта/полуслова со знаком
Рис. 46. Формат 8
Действия
Эти команды выполняют передачу байта или полуслова без знака или со знаком между регистрами и памятью. Синтаксис в ассемблере для этих команд приведен в таблице 19.
Табл. 19. Команды формата 8
L |
B |
THUMB ассемблер |
ARM эквивалент |
Действия |
0 |
0 |
STRH Rd, [Rb, Ro] |
STRH Rd, [Rb, Ro] |
Запись полуслова без знака в память: Сохранить младшее полуслово Rd в ячейку памяти по адресу, полученному сложением Ro с базовым адресом в Rb. |
0 |
1 |
LDRH Rd, [Rb, Ro] |
LDRH Rd, [Rb, Ro] |
Чтение полуслова без знака из памяти: Прочитать полуслово из памяти по адресу, полученному сложением Ro с базовым адресом в R. Результат разместить в младшем полуслове регистра Rd (биты 0…15). Старшее полуслово этого регистра (биты 16..31) обнулить. |
1 |
0 |
LDSB Rd, [Rb, Ro] |
LDRSB Rd, [Rb, Ro] |
Чтение байта со знаком из памяти: Прочитать байт из памяти по адресу, полученному сложением Ro с базовым адресом в Rb. Результат разместить в младшем байте регистра Rd (биты 0…7), а биты 8..31 этого регистра установить равными значению бита 7. |
1 |
1 |
LDSH Rd, [Rb, Ro] |
LDRSH Rd, [Rb, Ro] |
Чтение полуслова со знаком из памяти: Прочитать полуслово из памяти по адресу, полученному сложением Ro с базовым адресом в Rb. Результат разместить в младшем полуслове регистра Rd (биты 0…15), а биты 16..31 этого регистра установить равными значению бита 15. |
Число машинных тактов при выполнения команд
Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 19. Число машинных тактов выполнения этой команды в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.
Примеры
STRH R4, [R3, R0] ; Сохранить младшее полуслово R4 в памяти по адресу R0+R3.
LDSB R2, [R7, R1] ; Прочитать байт со знаком из памяти по адресу R1+R7
; и записать его в регистр R2.
LDSH R3, [R4, R2] ; Прочитать полуслово со знаком из памяти по адресу R2+R4
; и записать его в регистр R3.
|
|