×
单片机 > 单片机程序设计 > 详情

ARM中的汇编指令

发布时间:2020-08-25 发布时间:
|
BIC:ARM指令,对某些位,清零。先取反再相与。

         asm("BIC  r2, r2, #0x1f");        ##对R2的低5位清零。

ORR:ARM指令,逻辑或

         asm("ORR r2, r2, #0x10");       ##R2逻辑与0x10。

MRS:asm("MRS  r2, CPSR");          ##将CPSR的值加载到R2中。

MSR:asm("MSR  CPSR, r2");          ##将R2的值加载到CPSR中。

asm(" SWI 0x0");           ##跳转到软件中断函数,并转换为SVC模式。

LDR:{条件}目的寄存器 存储器寄存器。将存储地址所指的4个字节数据传送到寄存器,其中寻址方式会有很多种。

         asm("ldr r0,=0xddeeaabb");        ##在这里ldr是一个伪指令,相当于move指令。

         asm("ldr r0, [r1]");           ##将存储器地址为r1的一个字的数据加载到r0中。

MRC与MCR:在处理器寄存器与协处理器寄存器之间交换数据。

         MRC {cond} coproc, opcode1, Rd, CRn, CRm {,opcode2}

         asm("mrc p15,0,r0,c1,c1,0");   ##在CRn, CRm均为c1, opcode均为0时,表示SCR

                                                           (Secure Configuration Register),表示将c1的值赋值给r0.

         asm("mcr p15,0,r0,c1,c1,0");   ##将r0的值赋值给c1.

         asm("mcr p15,0,r0,c12,c0,0");   ##将r0的值赋值给c12,此时c12表示VBAR,

                                                                Vector Base Address Register,存放异常时的入口地址。

SMC:(Secure Monitor Call).    asm(" SMC 0x0");       ##将ARM core切换到Trust Zone模式。

        asm("mov r2, r2, lsr, #4");    ##r2左移4位后,加载到r2中。

        asm("str r3, [sp, #-4]");      ##将r3中的数据加载到堆栈中,堆栈顶指针向前移4.

        asm("ldmia r0!, {r3-r10}");      ##ldmia多寄存器加载指令,将r0地址中的数据加载到r3中,且每次r0增加4.

                                                           !表示,最终r0的值会改变。

        asm("SVC 0x0");    ##arm core转为Supervisor模式。

关键字:ARM中  汇编指令

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机的线阵CCD实时检测系统的开发