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
ARM 第一个汇编程序(跳转,循环,reset_handler,swi_handler 软件中断)
最新推荐文章于 2023-06-16 09:08:03 发布
这篇博客介绍了ARM汇编语言的基础,包括如何编写第一个汇编程序,涉及到复位处理(reset_handler)、软件中断处理(swi_handler)以及简单的跳转和循环操作。通过示例代码解释了中断处理过程,如栈的操作、模式切换,并展示了如何调用系统调用(swi)以及实现延迟函数。

最低0.47元/天 解锁文章
452

被折叠的 条评论
为什么被折叠?



