您的当前位置:首页IAR汇编

IAR汇编

来源:锐游网


最近IAR送了我们一套EWARM软件。过几天IAR公司有人要来讲座。

用了一下这个强大的集成开发环境,就一个字,太方便了。

很早之前就想回过头去重新学习一下ARM的体系结构和汇编。

这次正好这个机会。

借助使用EWARM来学习arm汇编。

EWARM的文档相当丰富。

基本上网上的所有资料都来自官方文档,翻译的或是写的也同官方的差不多。

有本书《IAR EWARM 嵌入式系统编程与实践》,北航出的,徐爱钧编著

中间一大段,大概50%以上内容,基本上就是翻译官方文档。

文档在安装目录的arm/doc目录下,有tutor,汇编参考,C,C++参考,还有ADS和RVDS移植到 IAR 的参考,比较了两个编译器,IDE的不同相同点,

不过文档是英文,还有日文的。

同这些文档奋斗了几个小时后,终于有了hello world

PROGRAM hello ;伪指令PROGRAM定义一个汇编程序模块,模块名为hello,

也可以用MODULE,NAME

SECTION MYCODE:CODE;ROOT(2) ;SECTION定义一个段的开始,也可以用RSEG,

;段名叫MYCODE,属性可以是CODE,CONST和DATA,

;ROOT NOROOT是这个段名的标志,NOROOT表示如果这个段里

;没有标号被引用,则抛弃,ROOT则一定不抛弃,

;一般除了 startup 代码和中断向量外的所有段都可以标注 NOROOT标记

ARM ;告诉编译器为arm指令,也可以用CODE32

PUBLIC __iar_program_start ;编译器默认的程序入口标号,必不可少,可以用--entry的编译器选项改变

;;;;;;LDR R0,=0x10 ;这句话就算没有被注释掉,也会忽略

__iar_program_start: ;cpu复位后从这里开始执行__iar_program_start

LDR R0,=0x30000000

LDR R1,=0xff

str R1,[R0]

MOV R0,#0x10

MOV R1,#0x20

ADD R0,R0,R1

stop: B stop

ENDMOD ;模块结束

END ;源文件结束

因篇幅问题不能全部显示,请点此查看更多更全内容

Top