arm汇编指令集 pdf网

ARM汇编程序---1-100累加和一个简单排序
ARM汇编程序---1-100累加和一个简单排序
  嵌入式初学者,这学期刚开课,学起来感觉很不错。
  第一个累加和的源码:
  AREA TEXT,CODE,READWRITE& & & ENTRY& & & MOV R0,#100&循环数目& & & MOV R1,#0& & & & ;初始化数据& LOOP& & & ADD R1,R1,R0& ;将数据进行相加,获得最后的数据& & & SUBS R0,R0,#1 ;循环数据R0减去1& & & CMP R0,#0& & & & ;将R0与0比较看循环是否结束& & & BNE LOOP& & & &判断循环是否结束,接受则进行下面的步骤& &
& & LDR R2,=RESULT& & & STR R1,[R2]& RESULT& & & DCD 0& STOP& & & B STOP&
  第二个排序的源码附上:
  ;排列算法:先将所有的数据与第一个进行比较,最后取出最小的数据放到第一个内存单元中& & & ;然后再从第二个内存单元开始进行比较,将第二小的数据放到第二个内存单元中,& & & ;以此内推则能将十个数据进行排列。& & & AREA TEXT,CODE,READWRITE& & & ENTRY& & & LDR R0,=DATA& & &获得DATA数据的起始地址& & & MOV R1,R0& & & & & MOV R5,#9& & & & & &开始的循环数目是10次,所以应该从9开始& & & MOV R6,R5& COMPARE& & & ADD R0,R0,#4& & &将R0所存储的地址+4表示为下一个要比较的数的地址& &
& & SUB R6,R6,#1& ;循环1次减1& & & LDR R2,[R1]& ;将放在寄存器中的数据取出进行大小比较& & & LDR R3,[R0]& & & CMP R3,R2& & & MOVCC R7,R2& ;如果后面的地址的数值比前一个小则交换他们的数据& & & MOVCC R2,R3& & & MOVCC R3,R7& & & STR R2,[R1]& ;将数据存储到相应的内存单元中& & & STR R3,[R0]& & & CMP R6,#0& & & & & &看每次的循环是否结束& & & BNE COMPARE& & & ADD R1,R1,#4& & &每次循环结束以后将初始的指向的内存地址后移一个单元& & & MOV R0,R1& & & & & &重新初始化上个循环中的寄存器中保存的地址& & & SUB R5,R5,#1& & &每次循环以后上面在以后的循环中的次数都会减1& & & MOV R6,R5& & & CMP R5,#0& & ;判断所有的循环是否结束& & & BNE COMPARE& DATA& & & DCD 9,4,6,7,8,1,3,2,0,5& STOP& & & B STOP&
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-用ARM汇编语言程序设计实现阶乘 第3页-博泰典藏网
典藏文档 篇篇精品
当前位置: >> 用ARM汇编语言程序设计实现阶乘
用ARM汇编语言程序设计实现阶乘 第3页
汇编语言程序设计报告 课程设计题目:采用汇编语言实现阶乘运算 学姓院专 号: 名...系列,以及基于 ARM 体系结构的处理器,包括苹果公司在内的大企业都是 ARM 的...
2.用汇编语言设计程序实现 10 的阶乘 AREA EXAMPLE, CODE, READONLY ENTRY .../ install.sh 安装程 序将 自动 建立 /arm2410s 目录 ,并 将所有 的开 ...
同时将当前的 PC 值保存到 R14 中 3、用 ARM 汇编语言设计程序实现求 20! (20 的阶乘) ,并将其 64 位结果放在[R9:R8]中(R9 中存放高 32 位) 。...
实验二一、实验目的 基于 ARM 的汇编语言程序设计 了解 ARM 汇编语言的基本框架,学会使用 ARM 的汇编语言编程。 二、实验设备标准硬件。 三、实验内容用汇编语言...
ARM 汇编语言程序设计总结 Operator & &= /= Alias Usage A&B A&=B Explanation A less than B A less than or equal to B A not equal to B && !...
用汇编语言计算N阶乘(0到FFFFH)_计算机软件及应用_IT/计算机_专业资料。用汇编语言计算N阶乘(0到0FFFFH)一、 设计题目编写计算 N!的程序(数值 N 由键盘输入,结...
arm常用几个汇编语言的程序_IT/计算机_专业资料。包括四个汇编语言程序.一。从一数到十 COUNT EQU 0x ;定义变量 COUNT 的基地址 AREA Example1,CODE,REA...
ARM嵌入式汇编语言程序设计重点_IT/计算机_专业资料。嵌入式,ARM,操作系统ARM 嵌入式汇编语言程序设计重点实验目的熟悉 ARM 微处理器指令系统; 学习 ARM 嵌入式汇编...
要求实现用汇编语言编写设计一个求解大数的阶乘精确值的程序;采用字节型数组 存放阶乘结果的每个数字位,采用逐位相乘,再对每一位规格化来实现;输出结成结果 的位数...
汇编 子程序设计 阶乘_工学_高等教育_教育专区。用汇编语言编写一个求N!的...ARM汇编语言程序设计实例... 3页 1下载券
汇编 求阶乘 6页 免费
定位 《ARM 汇编语言设计》是高等职业学院计算机类计算机系统维护专业的一门 专业技术必修课程, 是一门专业基础课程,在专业的课程设置中属于专业基础应 用开发课程。...注册时间: 10:41
回复数: 66556
主题数: 398
酷贴数:28
论坛积分:70550
来自: 湖南
&&ARM 指令集
?&&&&&& 寄存器和处理器模式(26-bit 体系)
?&&&&&& 寄存器和处理器模式(32-bit 体系)
?&&&&&& 程序状态寄存器和操纵它的指令
?&&&&&& 寄存器装载和存储指令
?&&&&&& 算术和逻辑指令
?&&&&&& 移位操作
?&&&&&& 乘法指令
?&&&&&& 比较指令
?&&&&&& 分支指令
?&&&&&& 条件执行
?&&&&&& 软件中断指令
? &&&&& APCS (ARM 过程调用标准)
?&&&&&& 编写安全的 32-bit 代码的基本规则
? &&&&& IEEE 浮点指令
?&&&&&& 汇编器伪指令
?&&&&&& 指令快速查找
? &&&&& ARM 指令格式
我的淘宝小店:
注册时间: 09:50
论坛积分:11
来自: 广东
回复【楼主位】&正点原子&:
-------------------------------
正在学习单片机,ARM~~~~~~~~一步一步来。
注册时间: 10:41
回复数: 66556
主题数: 398
酷贴数:28
论坛积分:70550
来自: 湖南
兄弟,可以上传些学习心得嘛,帮助别人少走弯路.
我的淘宝小店:
注册时间: 19:13
回复数: 24
论坛积分:39
来自: 成都
顶一个。。。。
心若在
梦就在
注册时间: 16:00
回复数: 31
论坛积分:52
注册时间: 10:05
回复数: 54
论坛积分:69
来自: 深圳
x谢谢LZ分享
一分耕耘一分收获
请选择一个版面...
STM32-F0/F1/F2专区
STM32-F3/F4/F7专区
MSP430专区
ARM7/ARM9/ARM11专区
其他Cortex系列
uCOS & uCGUI & Emwin
trochili(飞鸟)操作系统
中国RTOS联盟
FPGA/CPLD/DSP专区
数字,模拟,高频电路
编程语言学习
蓝牙/WIFI/Zigbee等通信技术
开发工具专栏
UOL 单片机面向对象语言
四轴飞行器
MICO智能硬件
DIY大赛专区
DIY项目资料专区
论坛建设区
二手交易专栏
& 开源电子网() |正在播放:【尚观原创】ARM指令与ARM汇编入门4【视频教程】
视频集简介
尚观ARM嵌入式开发最佳视频
版权声明:本视频来源于
.cn,仅供学习和研究使用,其版权归该视频的合法拥有者所有,如有侵犯您的版权,请联系我们,本站将在一个工作日内删除。
相关视频集
共27个视频集
一键分享:
本类热门视频ARM汇编语言小结_电工电气_中国百科网
您现在的位置: >
> 文章内容:
ARM汇编语言小结
    ARM汇编语言小结ARM汇编语言源程序语句,一般由指令,伪操作,宏指令和伪指令作成.ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令. 伪操作,是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,在源程序运行汇编程序处理,而不是在计算机运行期间有机器执行.也就是说,这些伪操作只是汇编过程中起作用,一旦汇编结束,伪操作的使命也就随之消失. 宏指令,是一段独立的程序代码,可以插在程序中,它通过伪操作来定义,宏在被使用之前必须提前定义好,宏之间可以互相调用,也可自己递归调用.通过直接书写宏名来使用宏.并本具宏指令的格式输入输出参数.宏定义本身不产生代码,只是在调用它时把宏体插入到原程序中.宏与C语言中的子函数形参和实参的调用相似,调用宏时通过实际的指令来 代替宏体实现相关的一段代码,但宏的调用与子程序的调用有本质的区别,既宏并不会节省程序的空间,其优点是简化程序代码,提高程序的可读性以及宏内容可以同步修改. 伪操作,宏指令一般与编译程序有关,因此ARM汇编语言的伪操作,宏指令在不同的编译环境下有不同的编写形式和规则.目前常用的ARM编译环境有2种. 伪指令也是ARM汇编语言程序里的特殊助记符,也不在处理器运行期间由机器执行,他们在汇编时将被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作.常见的ARM编译环境有2种: 1. ADS/SDT IDE:ARM公司开发,使用了CodeWarrior公司的编译器. 2. 集成了GNU开发工具的IDE开发环境;它由GNU的汇编器as,交叉汇编器gcc和连接器id组成.ADS编译环境下的ARM伪操作和宏指令:1. 符号定义伪操作2. 数据定义伪操作3. 汇编控制伪操作4. 框架描述伪操作5. 信息报告伪操作6. 其他伪操作1. 符号定义伪操作,用于定义ARM汇编程序中的变量,对变量进行赋值以及对定义存储器的名称.1.1 GBLA,GBLS,GBLLGBLA,GBLL,GBLS伪操作用于声明一个ARM程序中的全局变量,并在默认情况下初始化.GBLA声明一个全局的算术变量,并将其初始化成0;GBLL声明一个全局的逻辑变量,并将其初始化为FALSE;GBLS声明一个全局的字符串变量,并将其初始化为””.语法:Variable使用说明:GBLX声明的变量在其作用范围内必须唯一,即同名变量只能在作用范围内出现一次.如果用这些伪操作声明已经声明的变量,则变量的值将被初始化成第2次声明语句中的值.全局变量的作用范围为包含该变量的源程序.举例:GBLA声明一个全局的算术变量.Arithmetic SETA 0 变量赋值为0XFFSPACE 使用该变量GBLL 声明一个全局的逻辑变量logicalLogical SETL{TRUE}; 变量赋值为True1.2 LCLA,LCLL,LCLS LCLA,LCLL,LCLS 伪操作,用于声明一个ARM程序中的局部变量,并在默认情况下初始化. LCLA声明一个局部的算术变量,并将其初始化成0; LCLL 声明一个局部的逻辑变量,并将其初始化成{FALSE}; LCLS声明一个局部的字符串变量,并将其初始化成””. 语法 Variable 使用说明: 如果用这些伪操作声明已经声明的变量,则变量的值将被初始化成第2次声明语句中的值.局部变量的作用 范围为包含该局部变量的宏代码的一个实例,即局部变量一般只用在宏代码中. 举例: MACRO ; 声明一个宏 $label message $a; 宏的原形,宏的名字为message ,有一个参数$a LCLS 声明一个局部变量string string SETS “error”; 向该变量赋值 $
INFO 0 ,”string”:CC: :STR:$ 使用变量 MEND ; 宏定义结束.1.3 SETA,SETL,SETS SETA,SETL,SETS伪操作语句为ARM程序中的全局或局部变量的赋值语句SETA给一个全局或局部算术变量赋值 SETL给一个全局或局部逻辑变量赋值 SETS给一个全局或局部的字符串变量赋值 语法 Vaiable expr使用说明:在向变量赋值前,必须先声明变量. 举例: GBLA 声明算术变量 arithmetic SETA oxEF; 赋值 SPACE 运用算术变量 GBLL 声明逻辑变量 logical SETL{TRUE};赋值1.4 RLIST
RLIST为一个通用寄存器列表定义名称 语法 name RLIST {list of registers} name 是将要定义的寄存器名称,{list of registers }为通用寄存器列表. 使用说明: RLIST伪操作用于通用寄存器列表定义名称.定义的名称可以在LDM/STM指令中使用,即这个名字代表了一个通用寄存器列表,在LDM/STM指令中,寄存器列表中的寄存器的访问次序,总是先访问编号较底的寄存器,再访问编号教高的寄存器.也可以说,是编号低的寄存器对应于寄存器的低地址,而不管寄存器列表中寄存器的排列顺序.但为了编程的统一性,寄存器列表中各个寄存器一般按编号由低到高排列. 举例: List RLIST {R0-R3}; 将寄存器R0-R3列表的名字定义为L STMDF SP! L 保存寄存器列表L1.5 CN CN为一个协处理器的寄存器定义名称. 语法 name CN expr
其中name 为协处理器的寄存器的名称,expr为数值范围为0-15 举例: Power CN 6; 将协处理器的寄存器6的名字定义为Power 1.6CP CP为一个协处理定义名字 语法 name CP expr 其中name 为协处理器的名称,expr为数值范围为0-15举例: DzxCP 6;将协处理器6的名字定义为Dzx1.7 DN,SNDN 为一个双精度的VFP寄存器定义名称. SN为一个单精度的VFP寄存器定义名称. 语法: name DN expr name SN expr 其中name 为将要定义的VFP寄存器的名称.expr为VFP双精度寄存器编号(0~15)或者单精度寄存器的编号(0~31). 使用说明: DN,SN伪操作用于给一个VFP寄存器定义名称,方便程序员记忆该寄存器的功能,所以以该寄存器取的名称一般与该寄存器的功能有关. 举例: height DN 6; 将VFP双精度寄存器6名称定义为height width SN 20;将VFP单精度寄存器20名称定义为width1.8 FN FN为一个FPA浮点寄存器的名称.expr为浮点寄存器的编号,数值为0~7. 使用说明: FN伪操作用于给一个FPA浮点寄存器定义名称,方便程序员记忆该寄存器的功能,所以以该寄存器取的名称一般与该寄存器的功能有关. 举例: Length FN 6; 将FPA浮点寄存器的名称定义为Length
Mail: Copyright by ;All rights reserved.

我要回帖

更多关于 arm 反汇编 的文章

 

随机推荐