内存拜访指令
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保存内存单元的地址,假如加上!,一共,使用后更新,等于下一个内存单元的地址
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指向的值