Contents
  1. 1. ADS开发环境实验

东京,上野

ADS开发环境实验

IDE:ARM Developer Suite v1.2

  1. 新建工程
    新建工程
  1. 添加程序源文件到工程
  1. 编写代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	AREA	takethat,CODE,READONLY	;/*声明一段名为takethat的CODE*/
    ENTRY ;/*指定函数的入口*/
    START
    MOV R0,#0xFF ;/*把#0xFF传送到R0*/
    MOV R1,#0xEF000000 ;/*把#0XEF000000传送到R1*/
    MOV R2,#0x2F000000 ;/*把#0x2F000000传送到R2*/
    MVN R3,#0Xff ;/*把#0xFF取反后传送到R3*/
    ADD R4,R2,R1 ;/*把R2加R1的值传送到R4*/
    ADDS R5,R2,R1 ;/*把R2加R1的值传送R5,s表示会影响cpsr*/
    ADCS R6,R2,R1 ;/*把R2加R1的值,再加上carry的值后传送到R6.
    ;s表示值会影响cpsr*/
    SUB R4,R2,R1 ;/R2减R1的值传送到R4*/
    SUBS R4,R2,R1 ;/*R2减R1的值传送到R4, s表示影响cpsr*/
    RSB R5,R2,R1 ;/*R1减R2的值传送到R5*/
    RSBS R5,R2,R1 ;/*R1减R2的值后传送到R5,
    ; s表示会影响cpsr*/
    SBC R6,R1,R2 ;/*R1减R2的值再减去!CARRY
    ;后传送到R6*/
    RSC R7,R1,R2 ;/*R2减R1的值再减去!CARRY ;后传送到R7*/
    stop
    BL stop
    END ;/*程序结束*/

代码解读:
AREA
语法

  • AREA 段名 属性1 属性2 

作用

  • 用于定义一个代码或数据段
  • 短命若以数字开头,则段名需要&nbps;|  括起来,如 |1takethat|
  • 属性字段表示该代码段(或数据段)的相关属性,多个属性用都好分隔。

**常见属性如下:
CODE
>定义代码段
DATA
>定义数据段
READONLY
>指定本段为只读,代码段默认为READONLY
READWRITE
>指定本段为可读可写,数据段的默认为READWRITE
COMMON
>定义一个通用的段,不包含任何的用户和数据。各源文件中同名的COMMON段共享一段存储单元.

1
AREA	takethat,CODE,READONLY	;/*声明一段名为takethat的CODE*/

ENTRY
语法格式:
ENTRY
作用
ENTRY伪指令用于指定汇编程序的入口点。在一个完整的汇编程序中至少要有一个ENTRY(也可以有多个,当有多个ENTRY时,程序的真正入口点由链接器指定),但在一个源文件里最多只能有一个ENTRY(可以没有)。

START
作用:START: 作为汇编程序的一个标号,定义了程序的入口,既程序从START:处开始执行。
若程序的第一条指令就是程序的入口,则START可以缺省。

其中 START 可以用其他字符代替,但是对应的END START中的START也必须用同字符代替。

若第一个START缺省,则END START中的 START 也必须去掉。

MOV
语法格式

MOV source, destination

source 和 destination 的值可以是内存地址,存储在内存中的数据值,指令语句中定义的数据值,或者寄存器。
应该注意的是:

  1. 目的操作数与源操作数类型要一致;
  2. 汇编还提供许多mov变体,如:movzx,movsx等等。

作用
传送指令MOV(move)把一个字节、字或双字操作数从原位置传送到目的未知,源操作数的内容不变。

该操作属于复制性质,不属于搬家性质。

MVN:传送取反值

与MOV不同之处是在传送之前位被反转了,所以把一个被取反的值传送到一个寄存器中

指令 说明 示例
sub 2个操作对象**相减** sub ax,9 给ax减9,之后的结果赋值给ax
add 2个操作对象**相加** ADD R4,R2,R1 把R2加R1的值传送到R4
Contents
  1. 1. ADS开发环境实验