首页 > 应用 > 单片机应用
[导读]ARM汇编语言以段(分为代码段和数据段)为单位组织源文件。一个ARM源程序至少要有一个代码段,大的程序可以包含多个代码段和数据段。 代码段通常是只读的, 0个或者多个包含初始值的数据段。通常可读。 0个或者多个不

ARM汇编语言以段(分为代码段和数据段)为单位组织源文件。一个ARM源程序至少要有一个代码段,大的程序可以包含多个代码段和数据段。

本文引用地址: http://www.21ic.com/app/mcu/201807/784585.htm

代码段通常是只读的,

0个或者多个包含初始值的数据段。通常可读。

0个或者多个不包含初始值的数据段。这些数据段被初始化为0,通常可读。

如:

1、入口

AREA Init,CODE,READONLY

ENTRY

--------------------ENTRY伪操作标识了程序执行的第一条指令。一个ARM程序至少要有一个ENTRY,

END告诉汇编编译器编译源文件结束,每一个汇编必须包含一个END

2、子程序调用

BL 子程序调用名称

BL指令完成两个操作,将子程序返回地址放在LR寄存器中,同时将PC寄存器的值设置成目标子程序的第一条指令地址。子程序调用通常使用寄存器R0~R3来返回结果和传递参数。

在2440init.s中有大量的子程序调用例子

;===========================================================
ReadNandID
mov r7,#NFCONF
ldr r0,[r7,#4];NFChipEn();
bic r0,r0,#2
str r0,[r7,#4]
mov r0,#0x90;WrNFCmd(RdIDCMD);
strb r0,[r7,#8]
mov r4,#0;WrNFAddr(0);
strb r4,[r7,#0xc]

;===========================================================
1;while(NFIsBusy());
ldr r0,[r7,#0x20]
tst r0,#1
beq %B1
ldrb r0,[r7,#0x10];id = RdNFDat()<<8;
mov r0,r0,lsl #8
ldrb r1,[r7,#0x10];id |= RdNFDat();
orr r5,r1,r0
ldr r0,[r7,#4];NFChipDs();
orr r0,r0,#2
str r0,[r7,#4]
mov pc,lr

-----------------------------------看到上面两个例子,唯一区别就是后面这个有mov pc,lr,这个表明这个程序完了之后会返回到这个程序BL的下一句执行。


换一批

延伸阅读

[单片机应用] 两个8031系统进行双机通信的电路连接图及通讯单片汇编语言

两个8031系统进行双机通信的电路连接图及通讯单片汇编语言

两个8031系统进行双机通信,工作于方式1,将甲机芯片内RAM30H~4FH单元存放的数据送到乙机相应单元。要求画出电路连接图,选择波特率,编写完整的通信程序。答案:图片1甲机:main:movscon,#01000000bmovtmod,......

关键字:8031系统 双机通信 汇编语言

[显示光电] Moto Z3 Play原型机谍照曝光 双摄像头 骁龙636

Moto Z3 Play原型机谍照曝光 双摄像头 骁龙636

继上月通过FCC认证且多张高清渲染图曝光之后,今天国外又有用户在社交网络上晒出了Moto Z3 Play的原型机谍照。外观基本上和渲染图相符,正面为全面屏设计,背面配有双摄像头,依然留有16个磁吸式出点,可以和Moto Mods连接扩展使......

关键字:Moto Z3 Play 骁龙636

[破谣言] 真理真的掌握在少数人手里吗?

真理真的掌握在少数人手里吗?

只有偏复杂问题会有少数人正确而多数人糊涂的情况。所以实际情况是真理往往掌握在多数人手中,个别时候掌握在少数人手中。......

关键字:真理

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客