用ARM语言写的跑马灯汇编程序

.equ  GPX2CON,0x11000C40
.equ  GPX2DAT,0X11000C44
.equ  GPX1CON,0x11000C20
.equ  GPX1DAT,0x11000C24
.equ  GPF3CON,0x114001e0
.equ  GPF3DAT,0x114001e4


 .text
   
    ldr   r4,=GPX2CON 
    ldr   r0,[r4]
    bic   r0,#0xf0000000
    orr   r0,r0,#0x10000000
    str   r0,[r4]
   
ldr   r9,=GPX1CON 
    ldr   r1,[r9]
    bic   r1,#0x0000000f
    orr   r1,r1,#0x00000001
    str   r1,[r9]

ldr   r10,=GPF3CON 
    ldr   r2,[r10]
    bic   r2,#0x000f0000
    orr   r2,r2,#0x00010000
    str   r2,[r10]

ldr   r11,=GPF3CON 
    ldr   r2,[r11]
    bic   r2,#0x00f00000
    orr   r2,r2,#0x00100000
    str   r2,[r11]

loop_led:    
    @set  GPX2_7  pin High level
    ldr   r5,=GPX2DAT
    ldr   r0,[r5]
    orr   r0,r0,#0x80
    str   r0,[r5]

ldr   r5,=GPX2DAT
    ldr   r0,[r5]
    bic   r0,#0x80
    str   r0,[r5]  
bl   delay1s


ldr   r6,=GPX1DAT
    ldr   r1,[r6]
    orr   r1,r1,#0x01
    str   r1,[r6]

ldr   r6,=GPX1DAT
    ldr   r1,[r6]
    bic   r1,#0x01
    str   r1,[r6]
bl   delay1s


ldr   r7,=GPF3DAT
    ldr   r2,[r7]
    orr   r2,r2,#0x10
    str   r2,[r7]

ldr   r7,=GPF3DAT
    ldr   r2,[r7]
    bic   r2,#0x10
    str   r2,[r7]
bl   delay1s

ldr   r8,=GPF3DAT
    ldr   r3,[r8]
    orr   r3,r3,#0x20
    str   r3,[r8]

ldr   r8,=GPF3DAT
    ldr   r3,[r8]
    bic   r3,#0x20
    str   r3,[r8]
    bl   delay1s


b    loop_led
    
 loop_end:
    b     loop_end   
 
 
 
delay1s:
     ldr      r4,=0x3ffffff   
delay1s_loop:
     sub    r4,r4,#1
     cmp   r4,#0         
     bne    delay1s_loop
     mov   pc,lr 
 
 

    .end



Makefie文件

CROSS = arm-none-linux-gnueabi-
CC=$(CROSS)gcc
LD=$(CROSS)ld
OBJCOPY=$(CROSS)objcopy
    
all: led.s
$(CC) -g -c -o led.o led.s  
$(LD) led.o -Ttext 0x40001000 -o led.elf
$(OBJCOPY)  -O binary -S led.elf led.bin
$(CROSS)objdump -D led.elf > led.dis
 
clean:
rm -f *.o *.elf *.bin *.dis





你可能感兴趣的:(linux)