汇编代码摘记

【LDR】 加载指令 LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用亍从存储器
中读取32位的字数据到通用寄存器,然后对数据迕行处理。
范例:【 LDR R0,=0XE0200280 】 讲一个地址传送到R0寄存器中


【 LDR R1,[R0] 】 将R0寄存器中读取的值存放到R1寄存器当中


【BIC】 BIC指令用亍清除操作数1的某些位,幵把结果放置到目的寄存器中。
范例: 【 BIC R1,R1,#(0XF<<12) 】 将R1寄存器当中的值第12/13/14/15位清零


【ORR】 用于将寄存器中的某一位置1
范例: 【 ORR R1,R1,#(1<<12) 】 将R1寄存器当中的值第12位置为1


【STR】 STR指令用亍从源寄存器中将一个32位的字数据传送到存储器中
范例: 【 STR R1,[R0] 】 将R1寄存器中的值传送回R0


【loop】 表示while循环的开始
范例:【 loop: 】 表示循环语句的开始


【BL】 调用子程序的指令,它把BL后面一条指令的地址放到R14寄存器里。
范例:【 BL delay 】 表示调用了delay函数


【b】 表示跳转,跳转到后面跟着的指令
范例:【 b loop 】 表示跳转回while函数


【MOV】 MOV指令可完成从另一个寄存器、被移位的寄存器或立即数赋值到目的寄存器。
MOV{条件}{S}  目的寄存器,源操作数
范例:【 MOV R2,#0X30000000 】 表示将0x3000000的值赋值给R2寄存器


【SUB】 减法运算
范例:【 SUB R2,R2,#1 】 表示R2寄存器的值减去1




for循环的表示:
temp:




BNE temp;
表示从temp开始执行下面的指令然后才跳转回到temp


判断语句:
CMP R2,#0
BNE temp;
【CMP】 判断R2里面的值是不是跟0相等
【BNE】 如果不想等的话那么就返回到 temp 标签




【LR】 表示R14寄存器
mov PC,LR 表示返回到 BL 的指令中

发布了26 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Mce_19/article/details/53311621