常用▲RM指令集及汇编 ver:10.12 DCFD和 DCFDU DCFS和 DCESU 和DC DCW和DCWU 报告伪指令 ASSERT OPT TTL和SUBT 汇编控制伪指令. IF、ELSE和 ENDIF 772334 MACRO和MEND WHL和WEND 杂项伪指令 AlIGN AREA CODE16和CODE32 78y END ENTRY EQU EXPORT和 GLOBA IMPORT和 EXTERN GET和 INCLUDE INCBIN KEEP NOFP REQUIRE PEQUIRE8和 PRESERⅤE8 ROUT ARM伪指令 ADR ADRL LDR 66666 LDFD LDFS Thumb伪指令 ADR LDR ARM汇编程序设计 .88 文件格式 By宛城布衣QQ:57523799emai:mcu8031@163cm
常用 ARM 指令集及汇编 Ver:1.0.12 DCFD 和 DCFDU........................................................................................................68 DCFS 和 DCFSU.........................................................................................................68 DCI...............................................................................................................................69 DCQ 和 DCQU............................................................................................................69 DCW 和 DCWU ..........................................................................................................70 报告伪指令..................................................................................................................................70 ASSERT.......................................................................................................................70 INFO ............................................................................................................................71 OPT..............................................................................................................................71 TTL 和 SUBT ..............................................................................................................72 汇编控制伪指令..........................................................................................................................73 IF、ELSE 和 ENDIF...................................................................................................73 MACRO 和 MEND .....................................................................................................74 WHIL 和 WEND .........................................................................................................75 杂项伪指令..................................................................................................................................76 ALIGN .........................................................................................................................77 AREA...........................................................................................................................78 CODE16 和 CODE32 ..................................................................................................79 END .............................................................................................................................80 ENTRY.........................................................................................................................80 EQU .............................................................................................................................81 EXPORT 和 GLOBAL ................................................................................................81 IMPORT 和 EXTERN .................................................................................................82 GET 和 INCLUDE ......................................................................................................83 INCBIN........................................................................................................................83 KEEP............................................................................................................................83 NOFP ...........................................................................................................................84 REQUIRE ....................................................................................................................84 PEQUIRE8 和 PRESERVE8 .......................................................................................84 RN................................................................................................................................84 ROUT...........................................................................................................................85 ARM 伪指令................................................................................................................................86 ADR .............................................................................................................................86 ADRL...........................................................................................................................86 LDR..............................................................................................................................86 NOP..............................................................................................................................86 LDFD ...........................................................................................................................86 LDFS............................................................................................................................87 Thumb 伪指令.............................................................................................................................87 ADR .............................................................................................................................87 LDR..............................................................................................................................87 NOP..............................................................................................................................88 ARM 汇编程序设计............................................................................................................................88 文件格式......................................................................................................................................88 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII By 宛城布衣 QQ:57523799 email: mcu8031@163.com 第 IV 页
常用▲RM指令集及汇编 ver:10.12 ARM汇编的一些规范 汇编语句格式 88 标号 基于PC的标号 基于寄存器的标号 绝对地址 局部标号 符号 常量 数字常数 字符常量 布尔常量 段定义 宏定义及其作用 子程序的调用 数据比较跳转 循环 数据块复制 栈操作 特殊寄存器定义及应用 散转功能 查表操作 长跳转 对信号量的支持… 999 伪指令使用 个完整的例子 外围部件控制 三级流水线介绍 C与汇编混合编程 内嵌汇编 10 内嵌汇编的指令用法 内嵌汇编器与 armas汇编器的差异 内嵌汇编注意事项 访问全局变量 C与汇编相互调用 107 寄存器的使用规则 堆栈使用规则 参数传递规则 C程序调用汇编程序 10 编程序调用C程序 ARM指令集列表 ARM存储器访问指令表列表 ARM数据处理指令列表 ARM乘法指令列表 嗡嗡%%嗡嗡嗡嗡嗡吼嗡嗡嗡嗡%嗡嗡嗡%嗡嗡嗡吼嗡嗡嗡嗡嗡嗡 By宛城布衣QQ:57523799emai:mcu8031@163cm
常用 ARM 指令集及汇编 Ver:1.0.12 ARM 汇编的一些规范................................................................................................................88 汇编语句格式......................................................................................................................88 标号......................................................................................................................................89 基于 PC 的标号...................................................................................................89 基于寄存器的标号..............................................................................................90 绝对地址..............................................................................................................90 局部标号..............................................................................................................................90 符号......................................................................................................................................91 常量......................................................................................................................................91 数字常数..............................................................................................................91 字符常量..............................................................................................................92 布尔常量..............................................................................................................92 段定义..................................................................................................................................92 宏定义及其作用..................................................................................................................93 子程序的调用..............................................................................................................................94 数据比较跳转..............................................................................................................................95 循环..............................................................................................................................................95 数据块复制..................................................................................................................................95 栈操作..........................................................................................................................................96 特殊寄存器定义及应用..............................................................................................................96 散转功能......................................................................................................................................97 查表操作......................................................................................................................................97 长跳转..........................................................................................................................................97 对信号量的支持..........................................................................................................................98 伪指令使用..................................................................................................................................98 一个完整的例子..........................................................................................................................98 外围部件控制..............................................................................................................................99 三级流水线介绍..........................................................................................................................99 C 与汇编混合编程............................................................................................................................100 内嵌汇编....................................................................................................................................100 内嵌汇编的指令用法........................................................................................................103 内嵌汇编器与 armasm 汇编器的差异 .............................................................................104 内嵌汇编注意事项............................................................................................................104 访问全局变量............................................................................................................................106 C 与汇编相互调用....................................................................................................................107 寄存器的使用规则............................................................................................................108 堆栈使用规则....................................................................................................................108 参数传递规则....................................................................................................................109 C 程序调用汇编程序........................................................................................................ 110 汇编程序调用 C 程序....................................................................................................... 111 ARM 指令集列表.............................................................................................................................. 113 ARM 存储器访问指令表列表.................................................................................................. 113 ARM 数据处理指令列表.......................................................................................................... 114 ARM 乘法指令列表.................................................................................................................. 115 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII By 宛城布衣 QQ:57523799 email: mcu8031@163.com 第 V 页
常用▲RM指令集及汇编 ver:10.12 ARM跳转指令列表 116 ARM协处理器指令列表 117 ARM杂项指令列表 118 ARM伪指令列表 Thumb指令集列表 Thumb存储器访问指令列表 Thumb数据处理指令列表 Thumb跳转指令及软中断指令列表 Thumb伪指令列表 汇编预定义变量及伪指令 预定义的寄存器和协处理器名 通用寄存器 程序状态寄存器 浮点数寄存器 协处理器及协处理器寄存器 内置变量列表 125 伪指令列表 126 指令条件码列表 .128 CPSR和SPSR分配图 129 嗡嗡%%嗡嗡嗡嗡嗡吼嗡嗡嗡嗡%嗡嗡嗡%嗡嗡嗡吼嗡嗡嗡嗡嗡嗡 By宛城布衣QQ:57523799emai:mcu8031@163cm
常用 ARM 指令集及汇编 Ver:1.0.12 ARM 跳转指令列表.................................................................................................................. 116 ARM 协处理器指令列表.......................................................................................................... 117 ARM 杂项指令列表.................................................................................................................. 118 ARM 伪指令列表...................................................................................................................... 119 Thumb 指令集列表...........................................................................................................................120 Thumb 存储器访问指令列表 ...................................................................................................120 Thumb 数据处理指令列表 .......................................................................................................121 Thumb 跳转指令及软中断指令列表 .......................................................................................122 Thumb 伪指令列表...................................................................................................................123 汇编预定义变量及伪指令................................................................................................................124 预定义的寄存器和协处理器名................................................................................................124 通用寄存器........................................................................................................................124 程序状态寄存器................................................................................................................124 浮点数寄存器....................................................................................................................124 协处理器及协处理器寄存器............................................................................................125 内置变量列表............................................................................................................................125 伪指令列表................................................................................................................................126 指令条件码列表........................................................................................................................128 CPSR 和 SPSR 分配图 .............................................................................................................................129 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII By 宛城布衣 QQ:57523799 email: mcu8031@163.com 第 VI 页
常用▲RM指令集及汇编 ver:10.12 ARMTTDMIO(S)指令集及汇编 AM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制 较为简单,ARM7TDMI(-S)具有32位AM指令集和16位 Thumb指令集,ARM指令集效率 高,但是代码密度低,而 Thumb指令集具有更好的代码密度,却仍然保持ARM的大多数 性能上的优势,它是ARM指令集的子集。所有AM指令都是可以有条件执行的,而 Thumb 指令仅有一条指令具备条件执行功能。ARM程序和 Thumb程序可相互调用,相互之间的 状态切换开销几乎为零。 %%嗡%嗡嗡%嗡%嗡嗡吼嗡%嗡嗡嗡吼哈嗡嗡%嗡 By宛城布衣QQ:57523799emai:mcu8031@163cm
常用 ARM 指令集及汇编 Ver:1.0.12 ARM7TDMI(-S)指令集及汇编 ARM 处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制 较为简单,ARM7TDMI(-S)具有 32 位 ARM 指令集和 16 位 Thumb 指令集,ARM 指令集效率 高,但是代码密度低,而 Thumb 指令集具有更好的代码密度,却仍然保持 ARM 的大多数 性能上的优势,它是 ARM 指令集的子集。所有 ARM 指令都是可以有条件执行的,而 Thumb 指令仅有一条指令具备条件执行功能。ARM 程序和 Thumb 程序可相互调用,相互之间的 状态切换开销几乎为零。 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII By 宛城布衣 QQ:57523799 email: mcu8031@163.com 第 1 页
常用▲RM指令集及汇编 ver:10.12 ARM处理器寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM 处理器有9种基本寻址方式。 寄存器寻址 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直 接取出寄存器值操作。 寄存器寻址指令举例如下 MOV RI, R2 R2->RI SUB RO. R1 R2 R-R2->R0 立即寻址 立即寻址指令中的操作码字段后面的地址码部分就是操作数本身,也就是说,数据 就包含在指令当中,取出指令也就取出了可以立即使用的操作数(立即数)。 立即寻址指令举例如下 SUBS RO RO.#1 R0-1->R0 Mov RO. #Oxff00 Oxff00-> RO 立即数要以“#”为前缀,表示16进制数值时以“0x”表示。 寄存器偏移寻址 寄存器偏移寻址是ARM指令集特有的寻址方式,当第2操作数是寄存器偏移方式时 第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。 寄存器偏移寻址方式指令举例如下 MOV RO, R2 LSL #3 R2的值左移3位,结果放入R0,即R0=R2*8 ANDS R1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相与操作,结果放入R1 可采用的移位操作如下 LSL:逻辑左移( Logical Shift Left),寄存器中字的低端空出的位补0 y宛城布衣QQ:57523799 email: mcu8031@163cm 第2页
常用 ARM 指令集及汇编 Ver:1.0.12 ARM 处理器寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM 处理器有 9 种基本寻址方式。 寄存器寻址 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直 接取出寄存器值操作。 寄存器寻址指令举例如下: MOV R1,R2 ;R2 -> R1 SUB R0,R1,R2 ;R1 - R2 -> R0 立即寻址 立即寻址指令中的操作码字段后面的地址码部分就是操作数本身,也就是说,数据 就包含在指令当中,取出指令也就取出了可以立即使用的操作数(立即数)。 立即寻址指令举例如下: SUBS R0,R0,#1 ;R0 – 1 -> R0 MOV R0,#0xff00 ;0xff00 -> R0 立即数要以“#”为前缀,表示 16 进制数值时以“0x”表示。 寄存器偏移寻址 寄存器偏移寻址是ARM指令集特有的寻址方式,当第2操作数是寄存器偏移方式时, 第 2 个寄存器操作数在与第 1 个操作数结合之前,选择进行移位操作。 寄存器偏移寻址方式指令举例如下: MOV R0,R2,LSL #3 ;R2 的值左移 3 位,结果放入 R0,即 R0 = R2 * 8 ANDS R1,R1,R2,LSL R3 ;R2 的值左移 R3 位,然后和 R1 相与操作,结果放入 R1 可采用的移位操作如下: LSL:逻辑左移(Logical Shift Left),寄存器中字的低端空出的位补 0 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII By 宛城布衣 QQ:57523799 email: mcu8031@163.com 第 2 页