ARM汇编指令实验

更新时间:2023-08-31 12:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

S3C2410 基础 实验 ARM汇编指令实验

实验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!,{r4---r11}//从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后缀标志根据执行结果更新条件标志码。

S3C2410 基础 实验 ARM汇编指令实验

示例:

MOVS r3,r2,LSB#3//将r2右移3位即除以8,然后赋值给r3。

5、实验相应寄存器说明

GPFCON-端口配置寄存器。

GPFDAT-端口数据寄存器

GPFUP-端口上拉电阻使能寄存器

6、实验电路图

S3C2410 基础 实验 ARM汇编指令实验

7.实验程序实现

利用ARM汇编语言实现跑马灯程序

/* asm.s */

GPFCON EQU 0x56000050

GPFDAT EQU 0x56000054

GPFUP EQU 0x56000058

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灯亮

S3C2410 基础 实验 ARM汇编指令实验

bl delay2 ;调用延迟

;延迟程序

delay1

ldr r3,=0x1ffff ;设置延迟的时间 sub r3,r3,#1 ;r3=r3-1 cmp r3,#0x0 ;将r3的值与0相比较 bne delay3 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句 b ledloop2 mov pc,lr ;返回 ;延迟程序 ldr r3,=0x2ffff ;设置延迟的时间 sub r3,r3,#1 ;r3=r3-1 cmp r3,#0x0 ;将r3的值与0相比较 bne delay4 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句 b ledloop1 mov pc,lr ;返回 delay3 delay2 delay4

END ;程序结束符

本文来源:https://www.bwwdw.com/article/2nxi.html

Top