- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 LDR指令和LDR伪指令的区别
ARM指令集中,LDR通常都是作加载指令,但是它也可以作伪指令。初学者一般不会注意到它们的区别,其实在嵌入式开发过程中,这两条指令时非常常用的!我们应该了解他们的区别。LDR伪指令的形式是“LDR Rn,=expr”。作用是装在一个32bit常数和一个地址到寄存器。下面举一个例子来说明它的用法。COUNT EQU 0x56000054LDR R1
2015-11-28 22:24:08 1197
转载 stm32概述
这篇是在网上看见的,讲的比较好http://www.52solution.com/bbs/redirect.php?tid=1395&goto=lastpost如果需要转载的请注明出处! 首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。整理如下:AMBA:先进单片机总线架构 ADK:AMBA设计套件AHB:先进高性能总线 AHB-AP:AHB
2015-11-21 16:19:29 1432
转载 STM32移植ucos问题
http://www.stmcu.org/module/forum/thread-384142-1-1.html 移植详解1和2中主要讲了移植需要用到的基础知识,本文则对具体的移植过程进行介绍。 首先从micrium网站上下载官方移植版本(编译器使用ARM/Keil的,V2.86版本,V2.85有问题)。 下载地址:http://micrium.com/page/
2015-11-21 15:28:01 763
转载 ARm汇编 bx lr
http://blog.csdn.net/njuitjf/article/details/8558963 bx lr的作用等同于mov pc,lr即跳转到lr中存放的地址处。那么lr存放的是什么地址呢?lr就是连接寄存器(Link Register, LR),在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发
2015-11-13 17:28:13 1117
原创 static的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable
2015-11-11 14:52:35 1924
原创 arm汇编指令
7. 多寄存器语句传输指令,LDM,STM类似于一次传一个BUFFER到寄存器当中,或反过来.后面一般要接一个地址改变方法n LDM 从BUFFER传数据多个寄存器传输数据到LDMIA R0! ,{R3-R9} ;加R0指向的地址上连续空间的数据,保存到R3-R9当中,!表示R0值更新,IA后缀表示按WORD递增LDMFD SP!,{R0-R7,PC
2015-11-11 14:34:40 1063
原创 6. 比较指令 CMP
6. 比较指令 CMPn CMP比较两个操作数,并把结果存入CPSR供下一句语句使用CMP R0,R1; 比较R0,R1
2015-11-11 14:28:40 1346
原创 5. 位操作指令 AND,ORR, TST,BIC
5. 位操作指令 AND,ORR, TST,BICn AND位与指令AND R0,R1,R2; R0=R1 & R2AND R0,R1,#0xFF ;R0=R1 & 0xFFn ORR位或指令ORR R0,R1,R2; R0=R1 | R2ORR R0,R1,#0xFF ;R0=R1 | 0xFFn TST
2015-11-11 14:27:46 2752
原创 4. 算术运算指令,ADD/ADC,SUB/SBC ,MUL
4. 算术运算指令,ADD/ADC,SUB/SBC ,MULn ADD加法指令ADD R0,R1,R2; R0=R1+R2ADD R0,R1,#3 ;R0=R1+3n ADC带进位加法指令,即除了加两个数以外,还要把CPSR的C值也要带进来u 通常用于大数(超过32Bit整数)相加,这时单用ADD不能处理
2015-11-11 14:25:49 3796
原创 3. 加载/存储指令,LDR,STR
3. 加载/存储指令,LDR,STRn LDR,STR是用于寄存器和外部存储器交换数据指令,注意与MOV的区别,后面只在寄存器或常数交换.u LDR/STR可以采用多种寻址方式,以下只举出使用频率最高几种用法n LDR(load)用于把一个32Bit的WORD数据从外部存储空间装入到寄存器中LDR R0,[R1]; R1的值当成地址,再
2015-11-11 14:23:40 808
原创 传输数据指令MOV,MVN
2. 传输数据指令MOV,MVNn MOV(MOVE)指令可完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器MOV R0,R1 ; 把R1的值传到R0MOV R3,#3 ;把常数3传给R3,MOV中用#表示常数,这个值不能超过n MVN( MOVE Negative)取反后再传值,比MOV多了一步取反MVN R0, #0 ;把0取反(即-1)
2015-11-11 14:20:04 2055
原创 B与BL的区别
B常用于不返回的跳转,比如跳到某个标号处,BL则用于子程序跳转(要返回,返回地地存于LR)B. (注意B后面的“.”)这个“.”是指定当前的地址,如果使用 B.这条指令,其实就是死循环。
2015-11-11 14:16:01 4720
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人