ARM裸机基础学习--汇编语法和指令
来源:互联网 发布:杭州php招聘 编辑:程序博客网 时间:2024/04/30 01:24
一直对汇编不感冒的我,为了学好ARM裸机开发,我再次学习汇编语言和指令,值得高兴的是今天看着资料自己编写出了自己的第一个汇编程序。用汇编实现1加到100的和,源代码如下:
;i为循环因子 sum为总和变量
; for(i=0; i<10; i++)
; { sum+=i;
; }
; 设sum为R0,i为R1 (i、sum均为无符号整数)
AREA RESET,CODE,READONLY ; 声明代码段sum
ENTRY ; 标识程序入口
CODE32 ; 声明32位ARM指令
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 段名 属性1 ,属性2 ,……
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
- ARM裸机基础学习--汇编语法和指令
- ARM汇编基础-存储和加载指令
- ARM汇编指令基础
- 一.ARM裸机学习之ARM汇编
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(ARM汇编简介)
- 1.2.ARM裸机第二部分-ARM体系结构与汇编指令
- arm基础汇编指令小结
- ARM汇编指令基础总结
- 4412裸机程序之常用gcc/makefile/arm汇编指令
- S5PV210系列(裸机三)ARM体系结构与汇编指令
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(C与ARM汇编混合编程)
- ARM:ARM汇编语言与基础汇编指令
- ARM常用汇编指令学习
- ARM汇编-LDR指令学习
- GNU风格 ARM 汇编指令语法总结
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(Makefile 简介)
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(ATPCS 简介)
- 朱老师ARM裸机学习笔记(六):ARM汇编
- 命令行设置组件的日志等级
- android高级用户界面设计他
- VB.NET C#实现基于UDP的免服务器局域网多客户端点对点通讯
- PrintWriter 的Write()+flush()和println()方法区别
- 给hibernate的Set增加死条件筛选
- ARM裸机基础学习--汇编语法和指令
- 东软总结03-C++与数据库 写入数据
- Windows下Critical Section、Event、Mutex、Semaphores区别
- system 函数
- eclipse运行ant build.xml文件 complie javac 时停止
- 诺基亚CEO埃洛普:不后悔选择WP平台
- 随机采样系列4:MCMC
- Inbound接口 一次解析外部IO报文中多个节点值
- Lucene评分机制