Операция |
Ассемблерная мнемоника |
Примечание |
Преиндексное непосредственное смещение |
[Rn, #+/- 8bit_Imm] {!} |
|
Преиндексное нулевое смещение |
[Rn] |
Эквивалентно [Rn, #0] |
Преиндексное регистровое смещени? |
[Rn, +/-Rm] {!} |
|
Постиндексное непосредственное смещение |
[Rn], #+/- 8bit_Imm |
|
Постиндексное регистровое смещение |
[Rn], +/-Rm |
Режим адресации, обозначенный при описании форматов и ассемблерных мнемоник команд процессора ARM7TDMI-S как <a_mode3>, описан в Табл. 1.10.
Для того чтобы уточнить синтаксис ассемблерных команд ARM7TDMI-S состояния ARM, рекомендуется обратиться к источникам [2, 3], а также к файлам технической документации, которые находятся на прилагаемом к данной книге компакт-диске.
В отношении команд ARM ARM7TDMI-S, перечисленных в Табл. 1.7, необходимо сделать следующие дополнительные пояснения:
1. При записи в регистр CPSR командой MSR в режиме User изменяются только флаги признаков N, Z, V и С, содержащиеся в поле флагов состояния CPSR_f, а остальные биты сохраняют свое прежнее значение. В любом режиме с помощью команды MSR нельзя изменить бит Т регистра CPSR.
2. Ядро ARM7TDMI-S выполняет несколько разновидностей операции умножения. Существуют две основные команды — простое умножение MUL и умножение с накоплением MLA. Каждая из этих команд может иметь короткую форму (результат записывается в один регистр с потерей старших битов) либо длинную форму (результат записывается в два регистра). В ассемблерной мнемонике команды длинная форма имеет суффикс L. С короткой формой команды операции умножения можно производить как со знаковыми, так и с беззнаковыми целыми числами. Длинная форма команды умножения имеет два различных варианта — знаковый и беззнаковый, которые отличаются префиксом S и U соответственно. Таким образом, команда умножения имеет следующие разновидности: MUL, SMULL, UMULL. Аналогично, команда умножения с накоплением имеет разновидности MLA, SMLAL, UMLAL.
3. Команда обратного вычитания RSB позволяет изменить порядок записи операндов в операции вычитания на обратный. Она соответствует последовательности команд «Вычесть из операнда <Oprnd2> содержимое регистра Rn и записать результат в регистр Rd». Команда CMN позволяет сравнить два операнда, у одного из которых перед сравнением изменяется знак.
4. Команды передачи управления служат для изменения хода выполнения программы. Команда перехода В с соответствующим суффиксом условия (Табл. 1.5) обеспечивает выполнение условных или безусловных переходов. Переход к подпрограмме осуществляется командой BL, при этом текущее содержимое программного счетчика PC (адрес возврата) сохраняется в регистре связи LR. В качестве операнда в команде задается смещение label, ко-
торое, с учетом знакового расширения, добавляется к текущему содержимому PC. При вызове вложенных подпрограмм необходимо программно организовать сохранение промежуточных значений адресов возврата (содержимого LR) в стеке, используя регистр SP в качестве указателя. Также программно обеспечивается в случае необходимости сохранение в стеке содержимого рабочих регистров. Указанный в команде адрес перехода должен быть четным, если процессор находится в состоянии THUMB, или кратным четырем, если процессор находится в состоянии ARM.
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |