13、汇编编写第一个led点灯程序

1、cup内部也有一些寄存器R0-R15,这些寄存器可以直接进行操作,但是控制器里面的寄存需要通过地址去访问。

2、简单汇编语言

LDR   R0,   [R1]     读内存,将R1寄存器的值写入到R0里面

STR   R0 ,  [R1]     写内存,将R0的值写入到R0寄存器里面

B 跳转

MOV R0, R1        移动,吧R0的值写入到R1中。

LDR R0, = 0X12345678   这是个伪指令,就是他会被拆开

因为一条指令由四个字节构成,并且LDR 和R0都会被占据一部分,所以放不下0X12345678 。

MOV   R0,   #0X100     我们把0x100叫做立即数 。

3、汇编程序如下

filename:led.S

/*
*led点灯程序   GPIO  GPF4
*/

.text                    //代码段
.global   _start        //全局程序入口

_start:

/*
*配置GPF4为输出引脚
*把0x100写到地址0x56000050    
*/
    ldr R1,    =0X56000050
    ldr R0,    =0X100          //mov RO, #0X100 
    str R0,    [R1]

/*
*配置GPIO输出高电平
*把0写写到地址0x56000054
*/
    ldr R1, =0x56000054
    ldr R0, =0x0
    str R0, [R1]

/*死循环*/
halt:    
    b halt

   filename:Makefile

all:
    arm-linux-gnueabi-gcc -c -o led_on.o led_on.S
    arm-linux-gnueabi-ld -Ttext 0 led_on.o -o led_on.elf
    arm-linux-gnueabi-objcopy -O binary -S led_on.elf led_on.bin
clean:
    rm *.bin *.o *.elf

 

你可能感兴趣的:(第2期ARM裸机加强版)