微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM指令中的内存访问指令的总结

ARM指令中的内存访问指令的总结

时间:11-20 来源:互联网 点击:
内存访问指令

LDR,STR,LDM,STM

LDR:表示从内存中读取数据到寄存器当中,如ldr r0,[r2];表示从r2指向的内存单元读取数据保存到r0当中

STR:表示把寄存器当中的数据保存到内存单元当中,如str r1,[r2];表示把r1中的值保存到地址为r2指向的内存单元当中

LDM/STM是指内存访问指令,用一条指令就可以读取多个数据,格式如下

LDM{cond} {!} {^}

STM{cond} {!} {^}

其中cond代表条件码

1.ia (incrementafter):事后递增方式

2.ib (incrementbefore):事先递增方式

3.da(decrementafter):事后递减方式

4.db(decrementbefore):事先递减方式

rn保存内存单元的地址,如果加上!,表示,使用后更新,等于下一个内存单元的地址

表示寄存器列表,最后的^表示如果register_list当中有pc寄存器,它表示指令执行后,将spsr的值自动到cpsr当中,常用于中断函数的返回;如果register_list当中没有pc,^表示操作的是用户模式下的寄存器,而不是当前特权模式下的寄存器.指令中的对应关系,编号低的寄存对应内存中低地址的单元,高编号的寄存器对应高内存地址.

irq_handler:sublr, lr, #4               ;计算返回地址stmdbsp!, {r0-r12, lr}      ;事前递减,!使得sp = sp -14*4,lr保存在高地址当中sp, r0保存在低地址当中 sp - 14*4ldrr2, = int_handler        ;中断处理函数blr2                        ;真实中断处理ldrlr, = int_return;        ;从中断中返回irq_retrun:ldmiasp!, {r0-r12, lr}^     ;^将spsr拷贝到cpsr,!使得sp = sp + 14*4,r0中的值是低地下中的sp,lr中的得到是高地址sp +14*4指向的值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top