- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
s3c新2410基础实验教本
实验 1 ARM 汇编指令实验
1、实验目的:
熟悉 ADS 开发环境和 wiggler 调试环境。
掌握简单的 ARM 汇编指令的使用方法。
2、实验设备
PC 机、JTAG 调试板、S3C2410 开发板。
3 、实验内容
熟悉 ARM 开发环境的建立。
使用 ARM 汇编指令设置 GPIO 口的相应寄存器,控制LED 灯的亮灭。
4、实验原理
下面介绍本实验用到的一些汇编指令。
1).LDR/STR 指令
说明:LDR/STR 指令用于加载/存储寄存器。举例说明:
示例:
LDR r3,[r0],#4 //从 r0 表示的地址中读取数据分别存放到 r3 中,然后将r0 加 4 。
STR r3, [r1],#4 //将 r3 中的数据保存到r1 表示的地址中,然后将 r1 加 4 。
LDMIA/STMIA 指令
说明:LDM/STM 指令用于加载/存储多个寄存器,举例
示例:
LDMIA r0 !,{r4r11}//从 r0 表示的地址中顺利取出 8 个字数据分别存放到 r4 -r11
中。
2 ).程序分支指令
B 指令
说明:B 指令为 ARM 的分支指令,将引起处理器转移到制定标号处执行。
示例:
B Label //处理器转移到 Label 标号处执行
BEQ stop//Z 标记置位,则跳转到 stop 标号处执行;否则继续下一条指令
BNE octcopy//Z 标记清 0,则跳转到 octcopy 标号处执行;否则继续下一条指令
3 ).其他指令
SUBS
说明:该指令有 SUB 指令加上 S 后缀组成,S 后缀标志根据执行结果更新条件标志码。
示例:
SUBS r3,r3 ,#1//如果 r3 等于 0,则Z 位清 0
MOVS 指令
说明:该指令由 MOV 指令加上后缀 S 组成,S 后缀标志根据执行结果更新条件标志码。
1
示例:
MOVS r3 ,r2 ,LSB #3//将 r2 右移 3 位即除以 8,然后赋值给r3 。
5、实验相应寄存器说明
GPFCON-端口配置寄存器。
GPFDAT-端口数据寄存器
GPFUP-端口上拉电阻使能寄存器
6、实验电路图
2
7.实验程序实现
利用 ARM 汇编语言实现跑马灯程序
/* asm.s */
GPFCON EQU 0
GPFDAT EQU 0
GPFUP EQU 0
EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读
LEDTEST
;设置GPF4-GPF7为output
ldr r0,=GPFCON
ldr r1,=0x5500
str r1,[r0]
;禁止GPF4-GPF7端口的上拉电阻
ldr r0,=GPFUP
ldr r1,=0xff00
str r1,[r0]
;将数据端口F的数据寄存器的地址赋值给寄存器r2
ldr r2,=GPFDAT
;跑马灯循环
ledloop1
ldr r1,=0xf0
str r1,[r2] ;使GPF7输出高电平,D9-D12灯会灭
bl delay1 ;调用延迟子程序
ledloop2
ldr r1,=0x0
str r1,[r2] ;使GPE7输出低电平 D9-D12灯亮
文档评论(0)