算术移位寄存器和逻辑指令
MOV传送
MOV{条件}{S} dest = op_1 MOV从另一个寄存器、被移位的寄存器或者一个立即数装载一个值到目的寄存器。还可以指定相同的寄存器来实现 NOP 指令。如:MOV R0,R0。移位后传送指令:MOV R0, R0, LSL#3。 如果 R15 是目的寄存器,将修改程序计数器或标志。这用于返回到调用代码,方法是把连接寄存器的内容传送到 R15: 退出到调用者:MOV PC, R14。 退出到调用者并恢复标志位:MOVS PC, R14。 指令中后缀有S说明该指令会改变CPSR。 MVN传送取反 mvn{条件}{S} dest = !op_1 MVN在传送的之前位被反转了,把被取反的值传送到一个寄存器中。这是逻辑非操作而不是算术操作,这个取反的值加1才是它的取负的值: MVN R0, #4 ; R0 = -5 MVN R0, #0 ; R0 = -1 SUB减法 SUB{条件}{S} dest = op_1 - op_2 SUB用操作数1减去操作数2,把结果放置到目的寄存器中。操作数1是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即值: SUB R0, R1, R2 ; R0 = R1 - R2 SUB R0, R1, #256 ; R0 = R1 - 256 SUB R0, R2, R3,LSL#1 ; R0 = R2 - (R3 << 1) 减法可以在有符号和无符号数上进行,减数不可为立即数。 ADD加法 ADD{条件}{S} dest = op_1 + op_2 ADD将把两个操作数加起来,把结果放置到目的寄存器中。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器或一个立即值: ADD R0, R1, R2 ; R0 = R1 + R2 ADD R0, R1, #256 ; R0 = R1 + 256 ADD R0, R2, R3,LSL#1 ; R0 = R2 + (R3 << 1) AND逻辑与 AND{条件}{S} dest = op_1 AND op_2 AND将在两个操作数上进行逻辑与,把结果放置到目的寄存器中;对屏蔽你要在上面工作的位很有用。 操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器或一个立即值: AND R0, R0, #3 ; R0 = 保持 R0 的位 0 和 1,丢弃其余的位。 AND 的真值表: Op_1 Op_2 结果 0 0 0 0 1 0 1 0 0 1 1 1 BIC位清除 BIC{条件}{S} dest = op_1 AND (!op_2) BIC是在一个字中清除位的一种方法,与 OR 位设置是相反的操作。操作数2是一个32位位掩码(mask)。如果如果在掩码中设置了某一位,则清除这一位。未设置的掩码位指示此位保持不变。 BIC R0, R0, #0b1011 ; 清除 R0 中的位 0、1和 3 BIC 真值表: Op_1 Op_2 结果 0 0 0 0 1 0 1 0 1 1 1 0 比较指令 CMP : 比较 CMP{条件}{P} status = op_1 - op_2 CMP允许把一个寄存器的内容如另一个寄存器的内容或立即值进行比较,更改状态标志来允许进行条件执行。它进行一次减法,但不存储结果,而是正确的更改标志。标志表示的是操作数1比操作数2如何(大小等)。如果操作数1大于操作操作数2,则此后的有 GT 后缀的指令将可以执行。明显的,你不需要显式的指定 S 后缀来更改状态标志… 如果你指定了它则被忽略。 会影响程序状态字: 寄存器 15 (26-bit 模式): R15 构造如下: Bit 31 30 29 28 27 26 25------------2 1 0 N Z C V I F 程 序 计 数 器 S1 S0 标志的意义: N Negative 如果结果是负数则置位 Z Zero 如果结果是零则置位 C Carry 如果发生进位则置位 O Overflow 如果发生溢出则置位 I IRQ 中断禁用 F FIQ 快速中断禁用 S1 和 S0 是处理器模式标志: S1 S0 模式 0 0 USR - 用户模式 0 1 FIQ - 快速中断模式 1 0 IRQ - 中断模式 1 1 SVC - 超级用户模式 在 R15 作为一个指令的第一个操作数的时候,只有程序计数器部分是可以获得的。所以,下列指令把 PC 复制到一个寄存器中并向这个目标寄存器加上 256:ADD R0, R15, #256 TST : 测试位指令 TST{条件}{P} Status = op_1 AND op_2 TST 类似于 CMP,不产生放置到目的寄存器中的结果。而是在给出的两个操作数上进行操作并把结果反映到状态标志上。使用 TST 来检查是否设置了特定的位。操作数 1 是要测试的数据字而操作数 2 是一个位掩码。经过测试后,如果匹配则设置 Zero 标志,否则清除它。象 CMP 那样,你不需要指定 S 后缀。 TST R0, #0b1 ; 测试在R0中是否设置了位0
上一篇:[ARM裸机程序][6]ARM GNU汇编程序示例
下一篇:s3c2440的系统时钟
推荐阅读最新更新时间:2024-11-10 11:53
推荐帖子
- 请大家帮忙看看
- 请问大家一个问题,我现在刚把单片机弄熟了,但我还想学学其他的知识,我是读电子信息工程专业的,为了以后工作需要,想往单片机和嵌入式发展,请问接下来该学习哪些芯片?我现在学习一下stm32,作为从单片机到嵌入式的过渡,觉得怎么样?谢谢!请大家帮忙看看原帖由欧侃于2011-9-1116:28发表请问大家一个问题,我现在刚把单片机弄熟了,但我还想学学其他的知识,我是读电子信息工程专业的,为了以后工作需要,想往单片机和嵌入式发展,请问接下来该学习哪些芯片?我现在
- 欧侃 ARM技术
- 单片机控制真彩色液晶显示方案PVA050-256
- 名称:单片机显示终端型号:PVA050-256平望显示控制产品核心电路采用ALTERA公司的大规模可编程集成电路(FPGA)EPM3128编程实现,性能稳定可靠。适配于cpu:51、96、X86、8088、Z80、DSP等,采用ALTERA公司大规模可编程集成电路(FPGA)EPM3128编程实现,性能稳定,不局限于单色的字体问题,高宽温,高亮度,大视角。
- maker 单片机
- 驱动这种OLED屏 ,对主控芯片有何要求?
- 哪个坛友知道的麻烦讲一下。之前的芯片是51内核的,屏幕是段码屏,现在想换成OLED屏幕,我感觉芯片会驱动不了OLED,整个方案得改。驱动这种OLED屏,对主控芯片有何要求?驱动这种OLED屏,对主控芯片有何要求?这种显示屏预留了驱动引脚,驱动显示屏有4线SPI总线、3线SPI总线、IIC总线,这三种总线方式可以通过单片机的引脚来模拟,可以写出模拟驱动时序,像51单片机、32单片机、MSP430等主控芯片均可驱动,兼容性很好 用51核的单片机能直接驱动不TFT和OLE
- QWE4562009 分立器件
- 帮忙给我指点一下啊...急啊
- 我发过两篇了..但是一直都没人解答我自己这样写了一段你们给看看对吗DSP有4个字节一个一个的往SPI上发送.然后与SPI上已计算出的一个字节进行比较unsignedRev_data(unsignedflag_msb)//这是一个接收返回函数,有关硬件的{}voidMCU_checksum(void)unsignedcharretdata_group;unsignedcharvalid_data;unsignedchartemp_1
- fanfanworm 嵌入式系统
- 如何在wince系统下(精简版的.net framework)用c#编程实现抓屏并保存到文件
- 由于精简版的.netframework下很多功能不支持,即使使用平台调用我也搞不定,希望有高手能给出抓屏的源代码本人不胜感谢,再次强调一下是精简版的.netframework,我在网上看过一些代码,但都只能在pc上运行的,如这样的代码:privatestaticexternboolBitBlt(IntPtrhdcDest,//目标DC的句柄intnXDest,intnYDest,intn
- stephen100 WindowsCE
- 用51做的简易计算器 带源程序和proteus仿真电路图
- 做的简易计算器带源程序和proteus仿真电路图用51做的简易计算器带源程序和proteus仿真电路图51做的简易计算器.......下下来看看……我竟然没芯币了!很早就想做了,下来看看先下来看看先很好,谢谢楼主分享。我现在正在学习PROTEUS软件下来学习了。做的很不错,用C语言写的,呵呵下来看看嘻嘻,谢谢;啊~~晕,还要芯币啊。。。。。怎么弄啊。。。这里的好东西好多啊!!我要下下下!1gfdgsrdgfdsghg我没钱啊啊啊啊啊同
- axhui 51单片机
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 LT3752 的参考设计
- 使用 Richtek Technology Corporation 的 RT8165A 的参考设计
- 700W 汽车外部音频放大器参考设计
- 放大器级联
- RD001001-0812,采用 ZAURA 控制的 LED 驱动器参考设计
- LTC2992CDE-1 高侧和低侧电流检测在宽范围电源上的典型应用
- REF193 低压差精密电流源的典型应用电路
- 用于白光 LED 驱动器的 TB62737FPG 升压型 DC-DC 转换器的典型应用
- LTC3633AEUFD-2 双通道 3A、12V 同步降压稳压器的设计示例电路
- SC620 八路 LED 驱动器的典型应用,带串行接口的通用电流吸收器