汇编语言学习
来源:互联网 发布:怎样复制淘宝链接 编辑:程序博客网 时间:2024/04/30 11:42
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> dest = op_1
②mvn:传送取反
MVN{条件}{S} <dest>, <op 1> dest = !op_1
③sub:减法
SUB{条件}{S} <dest>, <op 1>, <op 2> dest = op_1 - op_2
④add:加法
ADD{条件}{S} <dest>, <op 1>, <op 2> dest = op_1 + op_2
⑤and:逻辑与
AND{条件}{S} <dest>, <op 1>, <op 2> dest = op_1 AND op_2
⑥bic:位清除
BIC{条件}{S} <dest>, <op 1>, <op 2> dest = op_1 AND (!op_2)
2.比较指令
①cmp:比较
CMP{条件}{P} <op 1>, <op 2> status = op_1 - op_2
②tst:测试位
TST{条件}{P} <op 1>, <op 2> Status = op_1 AND op_2
3.跳转指令
①b:分支
B{条件} <地址>
②bl:带连接的分支
BL{条件} <地址>
4.移位指令
①lsl:逻辑或算数左移
②ror:循环右移
5.程序状态字访问指令
①msr:复制一个寄存器到 PSR 中
②mrs:复制 PSR 到一个寄存器中
6.存储器访问指令
①ldr:字装载,将内存的值导出到寄存器中
②str:字存储,将寄存器的值写到内存中
0 0
- 汇编语言-学习
- 学习汇编语言
- 学习汇编语言!
- 学习汇编语言
- 汇编语言学习
- 汇编语言学习
- 学习:汇编语言
- 汇编语言学习
- 汇编语言学习笔记(一):汇编语言基础知识
- CASL汇编语言学习
- 学习汇编语言的教程
- 汇编语言程序设计学习交流
- X86汇编语言学习手记
- 开始学习《汇编语言》
- 汇编语言学习笔记(一)
- 汇编语言学习笔记(二)
- 汇编语言学习笔记(三)
- 汇编语言学习笔记(四)
- 笔记链接备份
- 表单验证之validform.js使用方法
- eclipse转用android studio——常用快捷键
- javascript之函数的参数
- 第二十四天 ImageView,AdapterView
- 汇编语言学习
- Servlet单例多线程详解
- UVALive 6439 Pasti Pas!
- Android控件之checkbox
- ubuntu9.04 gedit 乱码与修改系统编码
- Antenna Placement(POJ--3020
- hdu2255
- ubuntu 建立samba共享目录
- Html5的两个本地存储对象sessionStorage和localStorage