×
单片机 > 单片机程序设计 > 详情

ARM汇编语言程序格式

发布时间:2020-06-02 发布时间:
|

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

    代码段通常是只读的,

    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的下一句执行。


关键字:ARM  汇编语言  程序格式

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈msp430f5529入门(2)----时钟配置.例程分析