ARM中的MOV指令

发布者:zeta16最新更新时间:2016-05-10 来源: eefocus关键字:ARM中  MOV指令 手机看文章 扫描二维码
随时随地手机看文章
     ARM中的MOV指令格式是这样的

ARM中的MOV指令

        op2是占了12位,其中bit11-bit8是移位数(rotate),bit7-0是一个8位的立即数(imm),MOV Rn, op2,执行之后,Rn=op2 >> (rotate * 2),这里的移位是循环右移,这就决定了MOV指令不是所有的立即数都能表示的,以下是几个例子:

 

1、mov    r3, #0x56000000

虽然0x56000000是一个32位的数,但是可以找到这么一个8位立即数,通过右移得到,看下机器码e3a03456,展开成二进制,对照下格式

1110  0011 1010  0000  0011  0100  0101  0110

cond[31:28]=1110

[27:26]=00

L[25]=1,代表op2是一个立即数

OpCode[24:21]=1101

S[20]=0

Rn[19:16]=0000

Rd[15:12]=0011,R3

Op2[11:8]=0100,右移4 * 2位

Op2[7:0]=0101 0110,8位立即数,0x56

 

首先要将0x56扩展成32位的无符号数,0x00000056,然后循环右移8位,就得到了0x56000000

2、mov r3, #0x56000014

0x56000014是无法通过移位来得到的,这时编译器会报错,C语言编写的程序,编译器会这样来处理:

mov r3, #0x56000000

add r3, r3, #0x14

 

代替mov的另外一条指令就是ldr,或许会更方便点。

 

看了2440的datasheet,最令人费解的就是rotate了,习惯了C语言里的逻辑右移,把循环右移和逻辑右移混淆了。

关键字:ARM中  MOV指令 引用地址:ARM中的MOV指令

上一篇:ARM中的汇编指令
下一篇:ARM中的B指令和BL指令

推荐阅读最新更新时间:2024-03-16 14:53

单片机指令MOV、MOVC、MOVX的区别与联系
这三条都是单片机内数据传送指令。但是它们操作的对象有所不同。 1、MOV:MOV是内部数据传送指令,什么是内部数据传送呢?就是寄存器之间、寄存器与通用存储区之间的数据传送。 2、MOVX:MOVX是外部数据存储器(外部RAM)与累加器A之间的数据传送指令。因为内部与外部的RAM地址有重叠现象,所以需要用不 同的指令予以区分。 3、MOVC:MOVC是累加器与程序存储区之间的数据传送指令。它比MOV指令多了一个字母 C ,这个 C 就是 Code 的意思,翻译过来就是 代码 的意思,就是代码区(程序存储区)与A之间的数据传送指令。它可以用于内部程序存储区(内部ROM)与A之间的数据传送,也可以 用于外部程序存储区(外部ROM)与
[单片机]
arm汇编ldr、str、stm、ldm的用法
这里比较下容易混淆的四条指令,已经在这4条指令的混淆上花费了很多精力,现在做个小结,LDR,STR,LDM,STM这四条指令,关于LDM和STM的说明,见另外一个说明文件,说明了这两个文件用于栈操作时的注意事项。 (1)LDR:L表示LOAD,LOAD的含义应该理解为:Load from memory into register。下面这条语句就说明的很清楚: LDR R1, R1 就是把R2所指向的存储单元的内容的值(一个memory地址内的值),读取到R1中(一个register) (2)STR:S表示STORE,STORE的含义应该理解为:Store from a register into memory
[单片机]
ARM9系列嵌入式处理器S3C2410系统LCD驱动开发
  本文以三星公司ARM9内核芯片S3C2410的LCD接口为基础,介绍了在Linux平台上开发嵌入式LCD驱动程序的一般方法。   本文硬件采用三星公司的S3C2410芯片的开发板,软件采用Linux 2.4.19平台,编译器为arm-linux-gcc的交叉编译器,使用640×480分辨率的TFT彩色LCD,通过对其Linux驱动程序进行改写和调试,成功地实现了对该种屏的驱动和显示。   嵌入式驱动的概念   设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,
[单片机]
嵌入式系统设计ARM仿真器的作用
本文提供了一些关于在线 ARM 仿真器的信息,以及给作为嵌入式系统设计师的你带来的好处。根据你的需要,你将在产品开发中对开发工具作出更恰当的选择。 一、嵌入式产品的开发周期 典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,用来监视和控制用户
[单片机]
ARM内核目标系统的代码运行时间测试方法
  在ARM系统中,有时需要精确的时间测量。通常,取时间的C函数(如gettime()等)不仅通用性差(必须包含头文件DOS.H,且不支持Unix、Linux和标准C),明显不适用于ARM系统 ;更成问题的是,其最短时间只能到10-2 秒级,不能提供更短的时间分度。根本原因在于: 这类函数是基于系统实时时钟(RTC)的,而RTC通常采用标准化钟表晶振,频率只有32.768 kHz而已 。   然而很多应用涉及μs级的时间计量,这是标准化了的RTC以及基于它的时间函数所无能为力的。笔者在移植DES算法到ARM系统的实验过程中,便遇到过要定量评估加密算法耗时多少的问题,发现的确不能用上述常规的C函数解决。经对ARM芯片结构的考察,发
[单片机]
<font color='red'>ARM</font>内核目标系统<font color='red'>中</font>的代码运行时间测试方法
ARM的特殊寄存器
SP(R13) 特殊寄存器 LR(R14) 1、当存在子程序时,保存有子程序的返回地址 2、当异常中断发生时,保存有异常模式的返回地址 PC(R15) 保存程序的当前地址 例 :(bootloader中start.S文件) reset: bl set_svc @设定svc模式,bl跳转至相应分支 bl disable_watchdog @关闭开门狗 set_sv mrs r0, cpsr @Current Program Status Register(CPSR)当前程序状态寄存器 ,mrs(move register from special register)
[单片机]
ARM的CACHE机制
ARM cache架构由cache存储器和写缓冲器(write-buffer)组成,其中写缓冲器是CACHE按照FIFO原则向主存写的缓冲处理器。下图是ARM V5核的CACHE位置 Cache 位于MMU前面靠近CPU称为逻辑CACHE又叫虚拟Cache。CPU可以直接访问CACHE的数据,而ARM 11(ARMV6)的结构是CACHE 在MMU后面CPU访问CACHE要通过MMU地址转换 在DM6446的core用的是哈佛结构,即把CACHE分为8K的D-CACHE(数据CACHE)和16K的I-cache(指令CACHE) 一个完整的CACHE分为CACHE控制器和CACHE存储器 见下图: Davin
[单片机]
ARM基于DMA的高效UART通讯及其应用
1、引言 由于UART串行口的广泛应用,在传统的8位和16位的处理器以及32位处理器中,一般都带有UART串行口。传统的基于UART的数据通讯中,采用的方式一般有两种,查询式和中断式。查询方式下CPU的负担较重,浪费了处理器的能力,不能够很好的处理其他的事件;中断方式可以在接收到信息或需要发送数据时产生中断,在中断服务程序中完成数据的接收与发送。相对于查询方式,中断方式的CPU利用率要高。在CPU任务简单的系统中,使用中断方式确实是一种好方法。但是在复杂的系统中,比如移动机器人,处理器需要处理串行口通信,多个传感器数据的采集以及处理,实时轨迹的生成,运动轨迹插补以及位置闭环控制等等任务,牵扯到多个中断的优先级分配问题。为了保证数
[单片机]
<font color='red'>ARM</font><font color='red'>中</font>基于DMA的高效UART通讯及其应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved