Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75018
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 17:19
文章分类

全部博文(20)

文章存档

2011年(1)

2009年(18)

2008年(1)

我的朋友

分类:

2009-03-29 11:49:18

最近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               ;源文件结束      

阅读(1875) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~