;GPIO寄存器宏定义
GPBCON   EQU    0x56000010   
GPBDAT   EQU    0x56000014
GPBUP    EQU    0x56000018      
        EXPORT LEDTEST
         AREA  LEDTESTASM,CODE,READONLY   ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读
LEDTEST
        ;设置GPB5-GPB8为output
        ldr  r0,=GPBCON           
    ldr  r1,[r0]
    bic  r1,r1,#0x3fc00
    orr  r1,r1,#0x15400
    str  r1,[r0]
    ;禁止GPB5-GPB8端口的上拉电阻
    ldr  r0,=GPBUP
    ldr  r1,[r0]
    orr  r1,r1,#0x1e0
    str  r1,[r0]
looptest
    ;将数据端口B的数据寄存器的地址附给寄存器r2
    ldr  r2,=GPBDAT

    ldr  r3,[r2]
    bic  r3,r3,#0x1e0
    orr  r3,r3,#0xF0
    str  r3,[r2]              ;GPB8 output 0
    ldr r0,=0x2ffffff
    bl   delay                ;调用延迟子程序
    ldr  r3,[r2]
    bic  r3,r3,#0x1e0
    orr  r3,r3,#0x170
    str  r3,[r2]              ;GPB7 output 0
    ldr r0,=0x2ffffff
    bl   delay                ;调用延迟子程序
    ldr  r3,[r2]
    bic  r3,r3,#0x1e0
    orr  r3,r3,#0x1b0
    str  r3,[r2]              ;GPB6 output 0
    ldr r0,=0x2ffffff
    bl   delay                ;调用延迟子程序
    ldr  r3,[r2]
    bic  r3,r3,#0x1e0
    orr  r3,r3,#0x1d0
    str  r3,[r2]              ;GPB5 output 0
    ldr r0,=0x2ffffff
    bl   delay                       ;调用延迟子程序  
    b looptest
delay
        sub r0,r0,#1              ;r0=r0-1            
        cmp r0,#0x0               ;将r0的值与0相比较
        bne delay                ;比较的结果不为0(r0不为0),继续调用delay,否则执行下一条语句
        mov pc,lr                 ;返回

    END                       ;程序结束符