一段IAR编写的arm汇编代码,但是跑到红色的地方就跑不下去了,希望大家帮分析一下!
;汇编指令实验
;定义端口E寄存器预定义
rPCONE EQU 0x56000010
rPDATE EQU 0x56000014
rPUPE EQU 0x56000018
RSEG ICODE:CODE:ROOT(2)
PUBLIC __iar_program_start
LTORG
ARM
__iar_program_start:
ResetEntry
;下面这三条语句,主要是用来设置I/O口GPE7为输出属性
ldr r0,=rPCONE ;将寄存器rPCONE的地址存放到寄存器r0中
ldr r1,=0x1555
str r1,[r0] ;将r1中的数据存放到寄存器rPCONE中
;下面这三条语句,主要是禁止GPE端口的上拉电阻
ldr r0,=rPUPE
ldr r1,=0xffff
str r1,[r0]
ldr r2,=rPDATE ;将数据端口E的数据寄存器的地址附给寄存器r2
ledloop
ldr r1,=0xffff
str r1,[r2] ;使GPE7输出高电平,D9灯会灭
bl delay ;调用延迟子程序
ldr r1,=0x0
str r1,[r2] ;使GPE7输出低电平?D9灯亮
bl delay ;调用延迟
b ledloop ;不断的循环,D9将不停的闪烁
;下面是延迟子程序
delay
ldr r3,=0xfff ;设置延迟的时间
delay1
sub r3,r3,#1 ;r3=r3-1
cmp r3,#0x0 ;将r3的值与0相比较
bne delay1 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句
mov pc,lr ;返回
LTORG
END ;程序结束符