嵌入式,ARM指令基础

ARM两种数据存储格式:大端格式,数据高字节存储在地址低字节,数据低字节存储在地址高字节

                                       小端格式,数据高字节存储在地址高字节,数据低字节存储在地址低字节

ARM工作模式:用户模式Usr,正常执行程序

                         快熟中断模式FIQ,用于高速传输数据

                         外部中断模式IRQ,用于通常的中断处理

                         管理模式svc,操作系统使用的保护模式

                         数据访问终止模式abt,当数据或指令预取终止时进入该模式,用于虚拟存储和存储保护

                         系统模式sys,运行有特权的操作系统任务

                         未定义指令终止模式und,当未定义的指令执行时进入该模式,用于硬件支持

ARM 的运行模式可以通过软件改变,或者通过外部中断改变。除用户模式外的其他6种模式有叫非用户模式或特权模式,除去用户模式和系统模式,其他5种又叫异常模式,用于处理中断或异常

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,他们不能同时被访问。但是在任何时候R0~R14,程序计数器PC(R15),一个状态寄存器(CPSR)都可以访问。

不分组寄存器R0~R7,分组寄存器R8~R14

R8_fiq~R14_fiq,  R13_svc~R14_svc,  R13_abt~R14_abt,  R13_irq~R14_irq,R13_und~R14_und

R13堆栈指针(SP),R14函数指针,指向子函数的返回地址(LR

SPSR用来保护异常模式下CPSR的值

嵌入式,ARM指令基础

 

嵌入式,ARM指令基础

 

嵌入式,ARM指令基础
V溢出标志,C进位标志,Z结果为0,N负数,最高位位1
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ARM寻址方式
立即数寻址:ADD  R0,R0,#1                       R0=R0+1
                     ADD  R0,R0,#0X83                 R0=R0+0X83
                     ADD  R0,R0,#&83                   R0=R0+0X83
寄存器寻址    ADD  R0,R1,R2                      R0=R1+R2
寄存器间接寻址     ADD  R0,R1, [R2]              R2存放的不是操作数,而是操作数的地址 
基址变址寻址         LDR  R0,[R1,#4]                 R0=[R1+4]
                              LDR  R0,[R1,#4]!           R0=[R1+4], R1=R1+4 
                              LDR  R0,[R1],#4               R0=[R1], R1=R1+4
多寄存器寻址         LDMIA  R0,{R1,R2,R3,R4}
                              IA表示每次执行完加载操作后,R0按字长增加,R1=R0,R2-R0+4,R3=R0+8,R4=R0+12
相对寻址                 MOV   PC,  LR                     从子程序返回
堆栈寻址                先进后出。
满堆栈:堆栈指针指向最后压入堆栈的有效数据
空堆栈:堆栈指针指向将要压入堆栈的数据地址
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
上一篇:1.顺序表的查找运算


下一篇:《C++语言基础》程序阅读——标准输入输出对象及文本文件