博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编语言学习
阅读量:4284 次
发布时间:2019-05-27

本文共 1451 字,大约阅读时间需要 4 分钟。

ARM9,ARM11,cortex系列的处理器都是中高端处理器,利用这些处理器来完成项目时我们不会纯粹使用汇编来编写工程,但在bootloader和内核这两部分的初始化代码中会使用到汇编编程,这是学习汇编语言的语言。一般来说,工作中使用到汇编编程的地方有:①启动代码②对效率有特殊要求的地方。

目前的ARM汇编指令有两种:

1.ARM标准汇编:适用于ARM公司的汇编器,适用在window系统下运行,如ADS中使用;
2.GNU汇编:适用于GNU交叉编译工具链中的编译器,适用于Linux开发平台。

我们使用的是GNU汇编。

汇编程序框架:

.Section .data       
<初始化的数据>
.Section .bss
<未初始化的数据>
.Section .text.global _start_start:
<汇编代码>

如果没有初始化的数据和未初始化的数据,一般可简略为:

.text.global _start_start:       
<汇编代码>

下面介绍常用的ARM汇编指令

注:ARM标准汇编和GNU汇编指令大小写不同
按功能分类,可分为:算数和逻辑指令、比较指令、跳转指令、移位指令、程序状态字访问指令、存储器访问指令
1.算数和逻辑指令
①mov:传送赋值

MOV{条件}{S}  
,
dest = op_1

②mvn:传送取反

MVN{条件}{S}  
,
dest = !op_1

③sub:减法

SUB{条件}{S}  
,
,
dest = op_1 - op_2

④add:加法

ADD{条件}{S}  
,
,
dest = op_1 + op_2

⑤and:逻辑与

AND{条件}{S}  
,
,
dest = op_1 AND op_2

⑥bic:位清除

BIC{条件}{S}  
,
,
dest = op_1 AND (!op_2)

2.比较指令

①cmp:比较

CMP{条件}{P}  
,
status = op_1 - op_2

②tst:测试位

TST{条件}{P}  
,
Status = op_1 AND op_2

3.跳转指令

①b:分支
B{条件} <地址>
②bl:带连接的分支
BL{条件} <地址>

4.移位指令

①lsl:逻辑或算数左移
②ror:循环右移

5.程序状态字访问指令

①msr:复制一个寄存器到 PSR 中
②mrs:复制 PSR 到一个寄存器中

6.存储器访问指令

①ldr:字装载,将内存的值导出到寄存器中
②str:字存储,将寄存器的值写到内存中

转载地址:http://shigi.baihongyu.com/

你可能感兴趣的文章
ExtJs4.2学习--Ext.tab.Panel 选项卡
查看>>
mybatis+spring+struts2框架整合
查看>>
你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
查看>>
数据挖掘开源软件:WEKA基础操作
查看>>
Python一些容易忽略的知识
查看>>
Ubuntu(-13.10)中安装JDK图文详解教程
查看>>
Hadoop2.2.0单节点安装和配置环境图文详解
查看>>
数据挖掘学习笔记--决策树C4.5
查看>>
数据挖掘学习笔记之人工神经网络(一)
查看>>
数据挖掘学习笔记之人工神经网络(二)
查看>>
人工神经网络关键核心知识点
查看>>
贝叶斯学习--极大后验概率假设和极大似然假设
查看>>
贝叶斯学习--极大后验假设学习
查看>>
朴素贝叶斯分类器
查看>>
贝叶斯学习举例--学习分类文本
查看>>
hadoop HDFS原理基础知识
查看>>
数据挖掘十大算法----EM算法(最大期望算法)
查看>>
android StrictMode应用
查看>>
TabHost的两种使用方法
查看>>
Android---TextView属性详解
查看>>