我们专注于嵌入式
ARM 系统精讲班
实验手册
国嵌 编著
嵌入式 LINUX 培训专用
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
1
我们专注于嵌入式
版权申明
该资料版权归属成都国嵌信息技术
有限公司(简称“国嵌”)所有, 并保留
一切权力。非经国嵌同意(书面形式),
任何单位和个人不得擅自摘录本手
册部分或全部,违者我们将追究其法
律责任。
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
2
我们专注于嵌入式
实验目录
实验 1-1 ARM 汇编编程-寄存器访问............................................4
实验 1-2 ARM 汇编编程-算术运算................................................5
实验 1-3 ARM 汇编编程-寻址方式................................................7
实验 1-4 ARM 汇编编程-逻辑控制................................................9
实验 1-5 ARM 汇编编程-模式切换..............................................13
实验 1-6 ARM/C 混合编程............................................................16
实验 2-1 ADS 集成开发环境........................................................ 18
实验 2-2 ARM 综合实验-二进制数字显示..................................38
实验 2-3 ARM 综合实验-二进制数字显示..................................46
实验 2-4 ARM 综合实验-按键程序设计......................................54
实验 3-1 ARM 综合实验-定时器程序设计..................................62
实验 4-1 ARM 综合实验-串口程序设计 1...................................72
实验 4-2 ARM 综合实验-串口程序设计 2...................................84
实验 5-1 ARM 综合实验-ADC 程序设计 1.................................93
实验 5-2 ARM 综合实验-ADC 程序设计 2...............................104
实验 5-3 ARM 综合实验-触摸屏程序设计................................115
实验 6-1 ARM 综合实验-LCD 程序设计...................................127
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
3
我们专注于嵌入式
实验 1-1 ARM 汇编编程-寄存器访问
实验目的:
掌握ARM通用寄存器,存储器的访问方法
实验要求:
1. 使用MOV指令访问ARM通用寄存器
2. 使用LDR/STR指令完成存储器的访问
实验代码与分析:
1-1 test1.s
EQU
COUNT
0x30003100 ; 定义一个变量,地址为 0x30003100
START
LOOP
AREA Example2,CODE,READONLY ; 声明代码段 Example2
ENTRY
CODE32
LDR
MOV
STR
R1,=COUNT ; R1 <= COUNT
R0,#0
R0,[R1]
; R0 <= 0
; [R1] <= R0,即设置 COUNT 为 0
; 标识程序入口
; 声明 32 位 ARM 指令
R1,=COUNT
R0,[R1]
R0,R0,#1
R0,[R1]
; R0 <= [R1]
; R0 <= R0 + 1
; [R1] <= R0,即保存 COUNT
LOOP
LDR
LDR
ADD
STR
B
END
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
4
我们专注于嵌入式
实验 1-2 ARM 汇编编程-算术运算
实验目的:
掌握ARM算术,逻辑运算指令
实验要求:
使用ADD、SUB、AND、ORR、CMP、TST等指令完成数据加减
运算及逻辑运算
实验代码与分析:
1-2 test2.s
X
EQU
EQU
Y
11
8
; 定义 X 的值为 11
; 定义 Y 的值为 8
BIT23
EQU
(1<<23)
; 定义 BIT23 的值为 0x00800000
AREA Example2,CODE,READONLY ; 声明代码段 Example2
ENTRY
CODE32
; 声明 32 位 ARM 指令
; 标识程序入口
START
; 使用 MOV、ADD 指令实现:R8 = R3 = X + Y
MOV
MOV
ADD
MOV
; R0 <= X,X 的值必须是 8 位图数据
; R1 <= Y,Y 的值必须是 8 位图数据
; 即是 R3 = X + Y
; R8 <= R3
R0,#X
R1,#Y
R3,R0,R1
R8,R3
; 使用 MVN、SUB 指令实现:R5 = 0x5FFFFFF8 - R8 * 8
MVN
SUB
; 0xA0000007 的反码为 0x5FFFFFF8
; R8 左移 3 位,结果即是 R8 * 8
R5,R0,R8,LSL #3
R0,#0xA0000007
; 使用 CMP 指令判断(5*Y/2)>(2*X)吗?若大于则 R5 = R5&0xFFFF0000,否
则 R5 = R5|0x000000FF
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
5
我们专注于嵌入式
MOV
ADD
MOV
MOV
MOV
CMP
R0,#Y
R0,R0,R0,LSL #2
R0,R0,LSR #1
R1,#X
R1,R1,LSL #1
R0,R1
; 计算 R0 = Y + 4*Y = 5*Y
; 计算 R0 = 5*Y/2
; 计算 R1 = 2*X
; 比较 R0 和 R1,即(5*Y/2)和(2*X)进行
LDRHI
R2,=0xFFFF0000
; 若 (5*Y/2)>(2*X) , 则 R2 <=
ANDHI R5,R5,R2
ORRLS R5,R5,#0x000000FF ; 若(5*Y/2)≤(2*X),则 R5 = R5|0x000000FF
; 若(5*Y/2)>(2*X),则 R5 = R5&R2
; 使用 TST 指令测试 R5 的 bit23 是否为 1,若是则将 bit6 位清零(使用 BIC 指
比较
0xFFFF0000
令)
R5,#BIT23
TST
BICNE R5,R5,#0x00000040
B
START
END
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
6
我们专注于嵌入式
实验 1-3 ARM 汇编编程-寻址方式
实验目的:
掌握ARM寻址方式
实验要求:
编写汇编程序,分别实现
立即数寻址
寄存器寻址
寄存器间接寻址
基址变址寻址
多寄存器寻址
实验代码与分析:
1-3 test3.s
AREA TEST,CODE,READONLY
ENTRY
CODE32
;立即数寻址
MOV R0,#0x1
ADD R0,R0,#0x4
;寄存器寻址
MOV R1,#0x2
ADD R2,R1,R0
ADD R2,R2,R0,LSL #1
;立即数 0x1 存入寄存器 R0
;寄存器 R0 中的内容加上立即数 0x4 然后存入寄存器 R0
;立即数 0x2 存入寄存器 R1
;寄存器 R0 中的内容和寄存器 R1 的内容相加存入寄存器 R2
;寄存器 R0 中的内容逻辑左移 1 位加上寄存器 R2 的内
容在存入寄存器 R2
;寄存器间接寻址
MOV R1,#0x10
STR R2,[R1]
SWP R0,R0,[R1]
;将立即数 0x10 存入寄存器 R1
;将寄存器 R2 的内容存入以寄存器 R1 的值为地址的存储器中
;完成寄存器 R1 所指向的存储器中的字数据与寄存器 R0 的内
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
7
我们专注于嵌入式
;将立即数 0x14 存入寄存器 R3
;将立即数 0x3 存入寄存器 R0
;将寄存器 R0 的内容存入寄存器 R3 所指向的存储器
;将寄存器 R1 的内容加上 4 所指向的存储器的字存入寄存器 R4
容交换
;基址变址寻址
MOV R3,#0x14
MOV R0,#0x3
STR R0,[R3]
LDR R4,[R1,#4]
;多寄存器寻址
LDMIA R1,{R5,R6}
;相对寻址
B NEXT
NOP
NOP
NOP
NOP
NOP
NOP
NEXT
NOP
NOP
NOP
END
公司地址:成都市牛王庙东恒国际 1 栋 2 期 701
技术咨询 QQ:1783168692 技术交流 QQ 群:65212116
电话:028-88820953
网址:www.enjoylinux.cn
8