1.text
2.global _start
3_start:
4 LDR R0,=0X56000010 //表示把一个地址写到某寄存器中
5
6
7 MOV R1,#0X00000400 //R1寄存器值改成0X00000400
8 STR R1,[R0] //把R1的值,存入到R0对应地址空间上(*R0 = R1)
9 LDR R0,=0X56000014 //表示把一个地址写到某寄存器中
10
11 MOV R1,#0X00000000 //R1寄存器值改成0X00000000
12
13 STR R1,[R0]
14MAIN_LOOP:
15 B MAIN_LOOP //死循环函数
上述arm汇编至关于下面的c语言oop
#define GPBCON (*(volatile unsigned long *)0X56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)内存
int main()
{
GPBCON =0x00000400;
GPBDAT =0x00000000;
return 0;
}flash
===================================================循环
.text
.global _start
_start:
ldr r0,=0x56000010 //WATCHDOG 寄存器地址
mov r1,#0x0
str r1,[r0] //写入0,禁止WATCHDOG,不然CPU会不断重启
ldr sp,=1024*4//设置堆栈,注意:不能大于4kb,由于如今可用的内存只有4kb,nand flash 中的代码在复位后会移到内部
bl main //调用c程序中的main函数
halt_loop:
b halt_loop 程序
=================================================数据
MOV AL,20H;将8位数据20H传送到AL寄存器
MOV AL,[2000H];将2000H单元的内容传送到AL寄存器
若是加了[ ]中括号,就表示括号里面的是地址,传送这个地址里的数据。
若是没有中括号,就直接传送这个数据给目标寄存器语言