汇编点亮LED

目录

一、ARM常用汇编指令

二、汇编点亮LED

2.1 GPIO简述

2.2 GPIO相关寄存器

2.3 LED原理图

2.4 汇编点亮LED


一、ARM常用汇编指令

常用汇编格式:

label : instruction @ comment

        label:标号

        instruction:具体汇编指令

        comment:注释内容

常用段名:

        .text:代码段

        .data:初始化的数据段

        .bss:未初始化的数据段

        .rodata:只读数据段

        .section:自定义段(如.section .vector)

常见伪操作:

        .global:定义全局标号(如.global _start)

        .align:字节对齐(如.align 2)

寄存器间数据传输:

        mov:寄存器数据(或者是立即数)拷贝到另一个寄存器。

                mov r0, r1

                mov r0, #0x12

        mrs:读程序状态寄存器。

                mrs r0, cpsr

        msr:写程序状态寄存器

                msr cpsr, r0

        mrc:读cp15协处理器

                mrc r0, cpsr

        mcr:写cp15协处理器

                mcr cpsr, r0

内存与寄存器数据传输:

        ldr:把内存数据(或者是立即数)加载到寄存器。

                ldr r0, =0x80000000

                ldr r1, [r0]

        str:把寄存器数据写入到内存。

                ldr r0, =0x80000000

                str r1, [r0]

压栈和出栈:

        push:把寄存器列表存入栈中。

                push {r0~r3, r12}

        pop:从栈中恢复寄存器列表。

                pop {r0~r3, r12}

跳转:

        b:跳转到目标地址

                b main

        bl:跳转到目标地址,并把当前pc指针值保存在lr寄存器中。

                bl main

算术运算指令:

        add:加法运算

                add r1, r2, r3

                add r1, r2

        sub:减法运算

                sub r1, r2, r3

        mul:乘法运算

                mul r1, r2, r3

        udiv:除法运算

                udiv r1, r2, r3

逻辑运算指令:

        and:与

                and r1, r2, r3

        orr:或

                orr r1, r2, r3

        bir:位清除

                bir r1, r2, r3

二、汇编点亮LED

2.1 GPIO简述

GPIO数量:

        5组GPIO(GPIO1~GPIO5&

你可能感兴趣的:(#,野火i.mx,6ull裸机开发,汇编,linux)