第1个实验:用汇编语言点亮一盏LED

  1.  1 /*
     2 **  时间 :2016年4月8日08:15:02
     3 **  地点 :宿舍。
     4 **  目的 :用汇编语言控制LED。
     5 **  功能 :点亮第一盏LED:led1。
     6 **
     7 **  附加信息: 
     8 **  1、运行环境:JZ2440v2开发板。
     9 **  2、程序编译环境:Ubuntu9.10 + 交叉编译工具arm-linux-gcc。
    10 **  3、所用到的寄存器有:GPFCON、GPFDAT
    11 **  4、led1所接到的引脚是GPF4引脚。
    12 */
    13 
    14 .text                        @声明代码段的开始。
    15 
    16 .global _start               @定义一个全局标号_start(_start是GNU ARM汇编第一个标号的默认标号,如果写为其他的编译时会出现警告)
    17 
    18 _start :        
    19     ldr r0, = 0x56000050     @0x56000050是GPFCON寄存器的开始地址,将它赋给r0寄存器。
    20     mov r1, #0x00000100      @将立即数0x00000100赋给r1寄存器。
    21     str r1, [r0]             @将r1寄存器的内容0x00000100写到地址0x56000000去,作用是配置led1所接的管脚为输出引脚。
    22 
    23     ldr r0, = 0x56000054     @0x56000054是GPDAT寄存器的开始地址,将它赋给r0寄存器。
    24     mov r1, #0x00            @将立即数0x00赋给r1寄存器。
    25     str r1, [r0]             @将r1寄存器的内容0x00写到地址0x56000054去,作用是配置led1所接的管脚输出低电平。
    26 
    27     b halt_loop              @调到标号halt_loop去执行。
    28 
    29 halt_loop :                  @一个死循环。
    30     b halt_loop 

    Makefile :

    #
    # 时间 :2016年4月8日08:22:12
    # 地点 :宿舍。
    #

    led_on_S.bin : led_on_S.S
    arm-linux-gcc -g -c led_on_S.S -o led_on_S.o
    arm-linux-ld -Ttext 0x00000000 -g led_on_S.o -o led_on_S_elf
    arm-linux-objcopy -O binary -S led_on_S_elf led_on_S.bin
    arm-linux-objdump -D -m arm led_on_S_elf > led_on_S_elf.dis
    arm-linux-objdump -D -b binary -m arm led_on_S.bin > led_on_S_bin.dis

    clean :
    rm -f *.o *.dis *.bin *elf

     

     

posted @ 2016-04-08 16:33  海~洋  阅读(1608)  评论(0编辑  收藏  举报