ARM裸机基础学习--汇编语法和指令

来源:互联网 发布:杭州php招聘 编辑:程序博客网 时间:2024/04/30 01:24

一直对汇编不感冒的我,为了学好ARM裸机开发,我再次学习汇编语言和指令,值得高兴的是今天看着资料自己编写出了自己的第一个汇编程序。用汇编实现1加到100的和,源代码如下:

;i为循环因子    sum为总和变量  

; for(i=0; i<10; i++)

; {  sum+=i;

; }

sumR0iR1 (isum均为无符号整数)

AREA RESET,CODE,READONLY ; 声明代码段sum

ENTRY ; 标识程序入口

CODE32 ; 声明32ARM指令

START

MOV R0,#0 ; 初始化sum的值

MOV R1,#0 ; 设置i=0

MY_FOR CMP R1,#100 ; 判断i<100?

BHS FOR_END ; R1>=100,退出循环

ADD R1,R1,#1 ; 循环体,i++

ADD R0,R0,R1 ; sum+=i

B MY_FOR

FOR_END NOP

NOP

B FOR_END

END


AREA    
    语法格式:    
    AREA 段名 属性,属性……    
    AREA伪指令用于定义一个代码段或数据段

属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。    — CODE 属性:用于定义代码段,默认为READONLY 。    
    — DATA 属性:用于定义数据段,默认为READWRITE 。    
    — READONLY 属性:指定本段为只读,代码段默认为READONLY 。    
    — READWRITE 属性:指定本段为可读可写,数据段的默认属性为READWRITE 。  

ENTRY    
    语法格式:    
    ENTRY    
    ENTRY伪指令用于指定汇编程序的入口点。

    AREA Init CODE READONLY    
    ENTRY ; 指定应用程序的入口点

GBLA Test        ; 声明一个全局的数学变量,变量名为Test1

Test       SETA    0x3           ; 将变量Test1赋值为3,注意书写格式,需要顶格写

; EQU伪指令

COUNT EQU 0x30003100 ; 定义一个变量,地址为0x30003100

结束的时候一般让程序停在这也就是死循环

OUT

B OUT

NOP

            END

原创粉丝点击