AREA demo, CODE, READONLY
ENTRY
b reset_handler //0x0复位入口
nop
b swi_handler 0x08 软件中断入口
nop
nop
nop
nop //0x18 TRQ(硬件中断)入口
nop
swi_handler ///0x08 软件中断程序
sub r0,lr,#4 //lr(r14)中存的是中断之前程序的下一条程序地址
减去4之后就是中断时的地址
ldr r1,[r0] //从地址中取出地址放到r1 里 ldr r2,[r13] 为出栈
str r2,[r13] 为入栈 ,str往内存中写,ldr从内存中读
bic r1,r1,#0xff000000 // 将r1的高八位清零 类似的
orr r1,r1,#0xff000000将高八位置1;
cmp r1,#0x01 //比较之后会置状态位
beq call1 //判断,相等跳转,不等执行下一条
cmp r1,#0x02
beq call2
movs pc, lr //movs 在 p156 ,将lr 给pc 完成跳转,同时将spsr给cpsr
完成模式切换,spsr为之前的模式状态,cpsr为当前模式
call1
add r4,r3,r2
movs pc, lr
call2
sub r4,r3,r2
movs