在ARM处理器的汇编语言中,对指令语法格式中的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”
给定一个立即数,判断其是否合法可以分三步:首先将给定的立即数写成32位二进制的形式;然后看能不能用一个8位的二进制数包括所有含1的部分,如不能则非法;最后看这个8位二进制数能不能循环右移偶数位得到给定的立即数,不能数则非法。
0xff=00000000 00000000 00000000 11111111:相当于8位二进制11111111循环右移0位得到,合法;
0x104=00000000 00000000 00000001 00000100:相当于8位二进制01000001循环右移2位得到,合法;
0x101=00000000 00000000 00000001 00000001:包含所有1的部分是100000001,无法用一个8位二进制表示,非法;
0x102=00000000 00000000 00000001 00000010:包含所有1的部分是10000001,但10000001只能循环右移奇数位得到给定的数,非法;
0xfC000002 =11111100 00000000 00000000 00000010:相当于8位二进制10111111循环右移6位得到,合法。
0x8000007E=10000000 00000000 00000000 01111110:包含所有1的部分是11111101,但10000001只能循环右移奇数位得到给定的数,非法。
总结:第一,判断一个数是否符合8位位图的原则,首先看这个数转换成二进制后1的个数是否不超过8个,如果不超过8个,再看这n个1(n<=8)是否能同时放到8个二进制位中,如果可以放进去,再看这八个二进制位是否可以循环右移偶数位得到起初被判断的那个数值,如果可以,则此数值即为符合8位位图原理,否则,不符合。第二,用12位的编码来表示一个任意的32位数是不可能的,只能通过循环右移八位二进制数偶数位来得到一部分32位数,其余的无法表示的32位数,只有通过其它途径获得了,比如0xffffff00,可以通过0x000000ff按位取反得到。
关键字:ARM处理器 指令 立即寻址
引用地址:
ARM处理器指令立即寻址的限制
推荐阅读最新更新时间:2024-03-16 14:48
TI 针对电信基础局端、医疗等推DSP产品
TMS320C6452在成本不变情况下实现高性能应用通道数加倍, 并推出业界最快1.2 GHz单核 DSP TMS320C6455 2007 年 10 月 16 日,北京讯 德州仪器 (TI) 日前宣布推出了高性能、低成本 TMS320C6452 DSP,该产品提供了优化的性价比方案,可满足目前处理密集型多通道基础局端与医疗成像系统的要求。凭借此产品,电信接入基础设备的设计人员现在能在成本不变的情况下,将 VoIP 与会议通道数提高一倍,从而降低系统成本与功耗,并提高整体性能。此外,TI 还同时推出了 业界最快1.2GHz单内核 DSP —— TMS320C6455,进一步加强了其在该领域的性能领先优势。如欲了解有关
[嵌入式]
ARM汇编伪指令详解(3)
汇编控制( Assembly Control )伪指令 汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条: IF 、 ELSE 、 ENDIF WHILE 、 WEND MACRO 、 MEND MEXIT 1、 IF、ELSE、ENDIF 语法格式: IF 逻辑表达式 指令序列 1 ELSE
[单片机]
MCS-51指令系统概述
一个单片机所需执行指令的集合即为单片机的指令系统。单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。 所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号 。在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序
[单片机]
51单片机比较转移指令CJNE简介及举例
条件转移 指令 是指在满足一定条件时进行相对转移。 (1)比较转移指令 CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 第一条指令的功能是将A中的值和立即数data比较,如果两者相等,就次序执行(执行本指令的下一条指令),如果不相等,就转移,同样地,我们能将rel理解成标号,即:CJNE A,#data,标号。这样利用这条指令,我们就能判断两数是否相等,这在很多场合是非常有用的。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位位)来实现的
[单片机]
正确区分LJMP、AJMP、SJMP、JMP单片机跳转指令
MCS-51的控制转移类指令,共17条,分为无条件转移指令、条件转移指令、子程序调用和返回指令、空操作指令等四类。 无条件转移指令(共4条) LJMP addr16 ; PC〈—— addr16 AJMP addr11 ; PC〈—— PC+2 , PC10-0〈—— addr11 SJMP rel ; PC〈—— PC+2 , PC 〈—— PC+rel JMP @A+DPTR ; PC〈—— A+DPTR 第一条指令称为长转移指令(Long Jump); 第二条指令叫作绝对转移指令(Absolute Jump); 第三条指令称作短转移指令(Short Jump); 第四条指令是变址寻址转移指令(散转指令)
[单片机]
基于ARM的RFID阅读器设计
RFID是Radio Frequency Identification的缩写,即射频识别。一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别的距离可达几十厘米至几米,且根据读写的方式,可以输入数千字节的信息,同时,还具有极高的保密性,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。其应用范围十分广泛,主要有商品零售、商品防伪、交通运输、物流仓储、安全管理、医疗卫生、图书档案和国防军事等。 RFID系统由三部分组成:1. 标签(Tag,即射频卡),由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信;2. 阅读器,读取(在读写卡中
[单片机]
解答arm处理器的七种工作模式
ARM处理器存在七种工作模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问中止模式、未定义指令中止模式、系统模式。除了用户模式外,其它六种均为特权模式。处理器模式可以通过控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。 用户模式(usr):属于正常的用户模式,ARM处理器正常的程序执行状态。 快速中断模式(fiq):用于处理快速中断,对高速数据传输或通道处理。 外部中断模式(irq):对一般情
[单片机]
ARM嵌入式系统开发:软件设计与优化--第二章ARM处理器基础
1、寄存器: 总共有37个寄存器,最多可以有17个活动寄存器(16个数据寄存器,2个状态寄存器:CPSR和SPSR) R13:堆栈指针:指向当前处理器模式的堆栈栈顶 R14:链接寄存器,保存子程序的返回地址。【当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份】 R15:程序技术器,处理器下一条要取出的指令地址。【ARM状态下,指令4字节对齐,位 为0。位 保存PC】 【注】快速中断的r8-r12是分组寄存器,r13-r14每种模式都有自己的分组寄存器。r15没有分组寄存器。用户模式和系统模式没有分组寄存器。 2、当前程序状态寄存器CPSR: 3、处理器模式: 除了用户模式外,每一种
[单片机]