微机原理与嵌入式系统 chapter4ARM7TDMI汇编语言程序设计.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字节、字寄存器或存储单元、I/O端口进行处理, 同时也能直接使用CPU指令系统提供的各种寻址 方占式用,内编存汇源制 空编程语出 间序言高 少质,量而的且汇程执编序行程序,速这度样快的。目程标程序序 不但
2020/10/18
西安邮电学院 计算机系
page 5
3. 高级语言
高级语言(High Level Language)是脱 离具体机器(即独立于机器)的通用语言,不 依赖于特定计算机的结构与指令系统。
1. 机器语言
机器语言(Machine Language)是由0和1 二进制代码书写和存储的指令与数据。它的 特点是能被机器直接识别与执行;程序所占 内存空间较少。其缺点是难认、难记、难编、 易错。
2020/10/18
西安邮电学院 计算机系
page 4
2. 汇编语言
从机器汇角编度语看言:(Assembly Language)是一 种汇面编语向言物是理一层种操面作向的物理计层算操机作语的言计,算是机语一言种。采用 助不记同的符处表理示器的类程型序,设具有计不语同言的,汇使编用语助言。记使符用来表 示汇指编语令言的编操写作程码序和能操够直作接数利,用用硬标件号系或统的符特号性代表 地(址如寄、存常器量、或标变志量、。中断系统等),可直接对位、
;文件名:TEST1.S
;功能使:用实“现字;符”串进拷行贝注功释能
;说明:使用ARMulate软件仿真调试
AREA Example1,CODE,READONLY ;声明代码段Example1
num EQU 20
;设置拷贝字的个数
ENTRY
;标识程序入口
CODE32 START LDR R0, =src
;声明32位ARM指令 ; R0指向源数据块
LMDORV标号顶RR12格,,写=#dnsutm
; R1指向目的数据块 ; R2需要拷贝的数据个数
wordcopy
LDR R3, [R0], #程4 序;代从码源段数据块中取一个字,放入R3中,
; R0=R0+4
STR R3, [R1], #4 ; 将R3中的数据存入R1指向的存储
用高级语言 编写的源程序
编译或解释程序
目标程序
2020/10/18
西安邮电学院 计算机系
page 6
第4章 目录
1. 汇编语言的基本概念 2. ARM汇编程序的组成与结构 3. 汇编语言程序设计的基本方法 4. 汇编语言和C语言交叉编程
2020/10/18
西安邮电学院 计算机系
page 7
2. ARM汇编程序的组成与结构
0x123456
AREA BlockData, DATA, READWRITE ; 数据段的名字BlockData
Src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
Dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
page 10
4.2 ARM汇编器的伪操作
4.2.1符号定义伪操作 4.2.2数据定义伪操作 4.2.3汇编控制伪操作 4.2.4其它常用的伪操作
2020/10/18
西安邮电学院 计算机系
page 11
4.2.1符号定义伪操作
符号定义伪操作用于定义ARM汇编程序中的变 量、对变量赋值以及定义寄存器的别名等操。 常见的符号定义伪操作有如下几种: ➢ GBLA、GBLL、GBLS ➢ LCLA、LCLL和LCLS ➢ SETA、SETL、SETS
GBLS A3 ;定义一个全局的字符串变量,变量名为A3
A3 SETS “Testing” ;将该变量赋值为
“Testing”
2020/10/18
西安邮电学院 计算机系
page 14
2. LCLA、LCLL和LCLS
1. 汇编语言的基本概念 2. ARM汇编程序的组成与结构 3. 汇编语言程序设计的基本方法 4. 汇编语言和C语言交叉编程
2020/10/18
西安邮电学院 计算机系
page 3
1.汇编语言的基本概念
程序设计语言是专门为计算机编程所配置的 语言。它们按照形式与功能的不同可分为三 种,即机器语言、汇编语言和高级语言。
data
AREA |.extra|, NOINIFra Baidu bibliotek, READWRITE ; 未初始数据段的名字.extra
SPACE 1024
END 声明文件结束 ; 文件结束
2020/10/18
西安邮电学院 计算机系
page 9
ARM汇编器的伪操作
区别: ➢ 指令 ➢ 伪指令 ➢ 伪操作
2020/10/18
西安邮电学院 计算机系
第4章 ARM7TDMI汇编语言
程序设计
2020/10/18
西安邮电学院 计算机系
page 1
第4章 目录
1. 汇编语言的基本概念 2. ARM汇编程序的组成与结构 3. 汇编语言程序设计的基本方法 4. 汇编语言和C语言交叉编程
2020/10/18
西安邮电学院 计算机系
page 2
第4章 目录
2020/10/18
西安邮电学院 计算机系
page 12
1. 全局变量声明GBLA、GBLL和GBLS
格 式:GBLA(GBLL或GBLS)全局变量名 功 能:GBLA、GBLL和GBLS伪操作用于定义一个
ARM程序中的全局变量,并将其初始化。其中:
➢ GBLA: 定义一个全局的数值变量,并初始化为0 ➢ GBLL: 定义一个全局的逻辑变量,并初始化为F ➢ GBLS:定义一个全局的字符串变量,并初始化为空
; 单元中,R1=R1+4
SUBS R2, R2, #1 ; R2计数器减1
BNE wordcopy
; 如果R2不为0,则转向wordcopy处
2020/10/18
西安邮电学院 计算机系
page 8
stop MOV LDR SWI
R0, #0x18
; 程序运行结束返回编译器调试环境
R1, =0x20026
由于以上三条伪操作用于定义全局变量,因此在整 个程序范围内变量名必须唯一。
2020/10/18
西安邮电学院 计算机系
page 13
例 4.7 使用示例
GBLA A1 ; 定义一个全局的数值变量,变量名为A1
A1 SETA 0x0F
;将该变量赋值为0x0F
GBLL A2 ;定义一个全局的逻辑变量,变量名为A2 A2 SETL {TRUE} ;将该变量赋值为真
2020/10/18
西安邮电学院 计算机系
page 5
3. 高级语言
高级语言(High Level Language)是脱 离具体机器(即独立于机器)的通用语言,不 依赖于特定计算机的结构与指令系统。
1. 机器语言
机器语言(Machine Language)是由0和1 二进制代码书写和存储的指令与数据。它的 特点是能被机器直接识别与执行;程序所占 内存空间较少。其缺点是难认、难记、难编、 易错。
2020/10/18
西安邮电学院 计算机系
page 4
2. 汇编语言
从机器汇角编度语看言:(Assembly Language)是一 种汇面编语向言物是理一层种操面作向的物理计层算操机作语的言计,算是机语一言种。采用 助不记同的符处表理示器的类程型序,设具有计不语同言的,汇使编用语助言。记使符用来表 示汇指编语令言的编操写作程码序和能操够直作接数利,用用硬标件号系或统的符特号性代表 地(址如寄、存常器量、或标变志量、。中断系统等),可直接对位、
;文件名:TEST1.S
;功能使:用实“现字;符”串进拷行贝注功释能
;说明:使用ARMulate软件仿真调试
AREA Example1,CODE,READONLY ;声明代码段Example1
num EQU 20
;设置拷贝字的个数
ENTRY
;标识程序入口
CODE32 START LDR R0, =src
;声明32位ARM指令 ; R0指向源数据块
LMDORV标号顶RR12格,,写=#dnsutm
; R1指向目的数据块 ; R2需要拷贝的数据个数
wordcopy
LDR R3, [R0], #程4 序;代从码源段数据块中取一个字,放入R3中,
; R0=R0+4
STR R3, [R1], #4 ; 将R3中的数据存入R1指向的存储
用高级语言 编写的源程序
编译或解释程序
目标程序
2020/10/18
西安邮电学院 计算机系
page 6
第4章 目录
1. 汇编语言的基本概念 2. ARM汇编程序的组成与结构 3. 汇编语言程序设计的基本方法 4. 汇编语言和C语言交叉编程
2020/10/18
西安邮电学院 计算机系
page 7
2. ARM汇编程序的组成与结构
0x123456
AREA BlockData, DATA, READWRITE ; 数据段的名字BlockData
Src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
Dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
page 10
4.2 ARM汇编器的伪操作
4.2.1符号定义伪操作 4.2.2数据定义伪操作 4.2.3汇编控制伪操作 4.2.4其它常用的伪操作
2020/10/18
西安邮电学院 计算机系
page 11
4.2.1符号定义伪操作
符号定义伪操作用于定义ARM汇编程序中的变 量、对变量赋值以及定义寄存器的别名等操。 常见的符号定义伪操作有如下几种: ➢ GBLA、GBLL、GBLS ➢ LCLA、LCLL和LCLS ➢ SETA、SETL、SETS
GBLS A3 ;定义一个全局的字符串变量,变量名为A3
A3 SETS “Testing” ;将该变量赋值为
“Testing”
2020/10/18
西安邮电学院 计算机系
page 14
2. LCLA、LCLL和LCLS
1. 汇编语言的基本概念 2. ARM汇编程序的组成与结构 3. 汇编语言程序设计的基本方法 4. 汇编语言和C语言交叉编程
2020/10/18
西安邮电学院 计算机系
page 3
1.汇编语言的基本概念
程序设计语言是专门为计算机编程所配置的 语言。它们按照形式与功能的不同可分为三 种,即机器语言、汇编语言和高级语言。
data
AREA |.extra|, NOINIFra Baidu bibliotek, READWRITE ; 未初始数据段的名字.extra
SPACE 1024
END 声明文件结束 ; 文件结束
2020/10/18
西安邮电学院 计算机系
page 9
ARM汇编器的伪操作
区别: ➢ 指令 ➢ 伪指令 ➢ 伪操作
2020/10/18
西安邮电学院 计算机系
第4章 ARM7TDMI汇编语言
程序设计
2020/10/18
西安邮电学院 计算机系
page 1
第4章 目录
1. 汇编语言的基本概念 2. ARM汇编程序的组成与结构 3. 汇编语言程序设计的基本方法 4. 汇编语言和C语言交叉编程
2020/10/18
西安邮电学院 计算机系
page 2
第4章 目录
2020/10/18
西安邮电学院 计算机系
page 12
1. 全局变量声明GBLA、GBLL和GBLS
格 式:GBLA(GBLL或GBLS)全局变量名 功 能:GBLA、GBLL和GBLS伪操作用于定义一个
ARM程序中的全局变量,并将其初始化。其中:
➢ GBLA: 定义一个全局的数值变量,并初始化为0 ➢ GBLL: 定义一个全局的逻辑变量,并初始化为F ➢ GBLS:定义一个全局的字符串变量,并初始化为空
; 单元中,R1=R1+4
SUBS R2, R2, #1 ; R2计数器减1
BNE wordcopy
; 如果R2不为0,则转向wordcopy处
2020/10/18
西安邮电学院 计算机系
page 8
stop MOV LDR SWI
R0, #0x18
; 程序运行结束返回编译器调试环境
R1, =0x20026
由于以上三条伪操作用于定义全局变量,因此在整 个程序范围内变量名必须唯一。
2020/10/18
西安邮电学院 计算机系
page 13
例 4.7 使用示例
GBLA A1 ; 定义一个全局的数值变量,变量名为A1
A1 SETA 0x0F
;将该变量赋值为0x0F
GBLL A2 ;定义一个全局的逻辑变量,变量名为A2 A2 SETL {TRUE} ;将该变量赋值为真