- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统应用ex01
实验一:汇编指令实验
1.实验目的
了解Keil uVision集成开发环境及软件仿真功能使用。
掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。
掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。
掌握基本的汇编程序调试。
2.实验设备
硬件:PC机一台
软件:WindowsXP系统,Keil uVision 4.0集成开发环境
3.实验内容
(1)使用LDR指令读取0址上的数据,将数据加1。若结果小于10,则使用STR指令把结果写回原地址;若结果大于等于10,则把0写回原地址。
(2)使用Keil uVision软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口监视R0和R1的值,打开存储器观察窗口监视0址上的值。
4.实验预习要求
(1)学习ARM指令系统的内容,重点掌握LDR/STR指令和指令条件执行;
(2)查阅Keil uVision 软件的介绍,了解软件的功能和操作方法。
5.实验步骤
(1)启动Keil uVision,新建一个工程ex01。见图1-1、图1-2、图1-3。
图1-1 建立工程
图1-2 选择目标芯片
图1-3 不需要系统提供的Startup文件
(2)建立汇编源文件ex01.s,编写实验程序,然后添加到工程中。见图1-4、图1-5、图1-6、图1-7。
图1-4 建立新文件
图1-5 保存扩展名为.s的汇编程序文件
图1-6 把文件添加到工程
图1-7 添加文件到工程后
(3)设置工程选项,存储器映射。见图1-8、图1-9。
图1-8 设置工程选项
图1-9 设置存储器映射
(4)编译链接工程。见图1-10。
图1-10 编译工程
(5)进行软件仿真调试。见图1-11、图1-12、图1-13、图1-14。
图1-11 调试运行
图1-12 调试界面
图1-13 设置断点
图1-14 运行程序
6.实验参考程序
汇编指令实验的参考程序见程序清单1.1。
程序清单1.1 汇编指令实验参考程序
COUNT EQU 0 ;定义一个变量,地址为0 AREA RESET, CODE, READONLY ;声明代码段RESET
ENTRY ;表示程序入口
CODE32 ;声明32位ARM指令
START LDR R1,=COUNT ;R1 ← COUNT
MOV R0,#0 ;R0 ← 0
STR R0,[R1] ;[R1] ← R0,即设置COUNT为0
LOOP LDR R1,=COUNT
LDR R0,[R1] ;R0 ← [R1]
ADD R0,R0,#1 ;R0 ← R0 + 1
CMP R0,#10 ;R0与10比较,影响条件码标志
MOVHS R0,#0 ;若R0 = 10, 则此指令执行,即R0 ← 0
STR R0,[R1] ;[R1] ← R0,即保存COUNT
B LOOP
END
7.思 考
(1)若使用LDRB/STRB代替程序清单中的所有加载/存储指令(LDR/STR),程序会得到正确的执行吗?能
(2)LDR伪指令与LDR加载指令的功能和应用有何区别,举例说明?(提示:LDR伪指令的形式为“LDR Rn,=expr”。)
(3)LDR/STR指令的前索引偏移指令如何编写?指令是怎样操作的?
8.选作内容
(1)使用ARM汇编指令实现if条件执行。
(2)使用ARM汇编指令实现for循环结构。
(3)使用ARM汇编指令实现while循环结构。
(4)使用ARM汇编指令实现do…while循环结构。
COUNT EQU 0 ;定义一个变量,地址为0 AREA RESET, CODE, READONLY ;声明代码段RESET
ENTRY ;表示程序入口
CODE32 ;声明32位ARM指令
START LDR R1,=COUNT ;R1 ← COUNT
MOV R0,#0 ;R0 ← 0
STR R0,[R1] ;[R1] ← R0,即设置COUNT为0
MOV R0,#0 ;R0 ← 0
MOV R2,#100 ;R2 ← 100
DO
ADD R0,R0,R2 ;R0 ← R0 + R1
SUBS R2,R2,#1 ;R2 ← R2
文档评论(0)