ARM汇编 BIC和ORR指令

1. ORR

BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2

BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。

操作数1应是一个寄存器, 操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。

操作数2为32位的掩码,如果在掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。

 

BIC  R0,R0,#0x1F

0x1F=0001 1111

含义:清除R0的bit[4:0]位。

 

2. ORR

ORR指令的格式为: ORR{条件}{S}  目的寄存器,操作数1,操作数2

ORR指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。

操作数1应是一 个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。

操作数2为32位的掩码,如果在掩码中置了某一位1,则将这一位置1。未设置的掩码位保持不变。

 

ORR R0,R0,#0xD3

0xD3=1101 0011

将r0与0xd3作算数或运算,然后将结果返还给r0,即把r0的bit[7:6]和bit[4]和bit[1:0]置为1。

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原作者:宛城布衣。 本文件已移除PDF签名,如内容有误,欢迎大家指正。 目录 前言 i 目录 I ARM7TDMI(-S)指令集及汇编1 ARM 处理器寻址方式2 寄存器寻址2 立即寻址2 寄存器偏移寻址2 寄存器间接寻址3 基址寻址3 多寄存器寻址4 堆栈寻址4 块拷贝寻址5 相对寻址5 指令集介绍7 ARM 指令集7 指令格式7 第 2 个操作数7 #immed_8r 7 Rm8 Rm,shift8 条件码9 ARM 存储器访问指令 11 LDR 和 STR 11 LDM 和 STM14 SWP 17 ARM 数据处理指令19 数据传送指令20 MOV 20 MVN 20 算术逻辑运算指令20 ADD 20 SUB21 RSB 21 ADC 21 SBC 21 RSC 22 AND 22 ORR22 EOR22 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII BIC 23 第 I 页常用 ARM 指令集及汇编 Ver:1010 比较指令23 CMP 23 CMN23 TST24 TEQ24 乘法指令25 MUL25 MLA25 UMULL25 UMLAL26 SMULL 26 SMLAL 26 ARM 跳转指令27 B27 BL27 BX 27 ARM 协处理器指令28 CDP28 LDC29 STC 29 MCR30 MRC30 ARM 杂项指令31 SWI 31 MRS 32 MSR 33 ARM指令34 ADR 35 ADRL35 LDR36 NOP37 Thumb 指令集39 Thumb 指令集与 ARM 指令集的区别 39 Thumb 存储器访问指令 40 LDR 和 STR 41 PUSH 和 POP 43 LDMIA 和 STMIA 43 Thumb 数据处理指令 45 数据传送指令46 MOV 46 MVN 46 NEG47 算术逻辑运算指令47 ADD 47 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 II 页常用 ARM 指令集及汇编 Ver:1010 SUB48 ADC 49 SBC 49 MUL50 AND 50 ORR50 EOR51 BIC 51 ASR51 LSL52 LSR 52 ROR53 比较指令53 CMP 53 CMN54 TST54 Thumb 跳转指令 55 B 55 BL55 BX 55 Thumb 杂项指令 56 SWI 56 Thumb 伪指令 57 ADR 57 LDR57 NOP58 伪指令59 符号定义伪指令59 GBLA、GBLL、GBLS 59 LCLA、LCLL、LCLS60 SETA、SETL、SETS 61 RLIST61 CN 62 CP62 DN、SN62 FN63 数据定义伪指令63 LTORG64 MAP64 FIELD 65 SPACE66 DCB 66 DCD 和 DCDU67 DCDO 67 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 III 页常用 ARM 指令集及汇编 Ver:1010 DCFD 和 DCFDU68 DCFS 和 DCFSU68 DCI69 DCQ 和 DCQU69 DCW 和 DCWU 70 报告伪指令70 ASSERT 70 INFO 71 OPT 71 TTL 和 SUBT 72 汇编控制伪指令73 IF、ELSE 和 ENDIF73 MACRO 和 MEND 74 WHIL 和 WEND 75 杂项伪指令76 ALIGN 77 AREA78 CODE16 和 CODE32 79 END 80 ENTRY80 EQU 81 EXPORT 和 GLOBAL 81 IMPORT 和 EXTERN 82 GET 和 INCLUDE 83 INCBIN83 KEEP83 NOFP 84 REQUIRE 84 PEQUIRE8 和 PRESERVE8 84 RN 84 ROUT85 ARM指令86 ADR 86 ADRL86 LDR86
前言...............................................................................................................................................................i 目录...............................................................................................................................................................I ARM7TDMI(-S)指令集及汇编....................................................................................................................1 ARM 处理器寻址方式..........................................................................................................................2 寄存器寻址...................................................................................................................................2 立即寻址.......................................................................................................................................2 寄存器偏移寻址............................................................................................................................2 寄存器间接寻址............................................................................................................................3 基址寻址.......................................................................................................................................3 多寄存器寻址...............................................................................................................................4 堆栈寻址.......................................................................................................................................4 块拷贝寻址...................................................................................................................................5 相对寻址.......................................................................................................................................5 指令集介绍...........................................................................................................................................7 ARM 指令集.........
前言...............................................................................................................................................................i 目录...............................................................................................................................................................I ARM7TDMI(-S)指令集及汇编....................................................................................................................1 ARM 处理器寻址方式..........................................................................................................................2 寄存器寻址...................................................................................................................................2 立即寻址.......................................................................................................................................2 寄存器偏移寻址............................................................................................................................2 寄存器间接寻址............................................................................................................................3 基址寻址.......................................................................................................................................3 多寄存器寻址...............................................................................................................................4 堆栈寻址.......................................................................................................................................4 块拷贝寻址...................................................................................................................................5 相对寻址.......................................................................................................................................5 指令集介绍...........................................................................................................................................7 ARM 指令集.................................................................................................................................7 指令格式...............................................................................................................................7 第2 个操作数................................................................................................................7 #immed_8r ...........................................................................................................7 Rm..........................................................................................................................8 Rm,shift..................................................................................................................8 条件码............................................................................................................................9 ARM 存储器访问指令........................................................................................................ 11   LDR 和STR ........................................................................................................ 11   LDM 和STM.......................................................................................................14   SWP .....................................................................................................................17 ARM 数据处理指令............................................................................................................19 数据传送指令..............................................................................................................20   MOV ............................................................................................................20   MVN ............................................................................................................20 算术逻辑运算指令......................................................................................................20   ADD.............................................................................................................20   SUB..............................................................................................................21   RSB..............................................................................................................21   ADC .............................................................................................................21   SBC..............................................................................................................21   RSC..............................................................................................................22   AND.............................................................................................................22   ORR..............................................................................................................22   EOR..............................................................................................................22 比较指令......................................................................................................................23   CMP.............................................................................................................23   CMN.............................................................................................................23   TST...............................................................................................................24   TEQ..............................................................................................................24 乘法指令......................................................................................................................25   MUL.............................................................................................................25   MLA.............................................................................................................25   UMULL........................................................................................................25   UMLAL........................................................................................................26   SMULL........................................................................................................26   SMLAL........................................................................................................26 ARM 跳转指令....................................................................................................................27   B...........................................................................................................................27   BL.........................................................................................................................27   BX........................................................................................................................27 ARM 协处理器指令............................................................................................................28   CDP......................................................................................................................28   LDC......................................................................................................................29   STC ......................................................................................................................29   MCR.....................................................................................................................30   MRC.....................................................................................................................30 ARM 杂项指令....................................................................................................................31   SWI ......................................................................................................................31   MRS.....................................................................................................................32   MSR.....................................................................................................................33 ARM指令........................................................................................................................34   ADR.....................................................................................................................35   ADRL...................................................................................................................35   LDR......................................................................................................................36   NOP......................................................................................................................37 Thumb 指令集.............................................................................................................................39 Thumb 指令集与ARM 指令集的区别..............................................................................39 Thumb 存储器访问指令.....................................................................................................40   LDR 和STR ........................................................................................................41   PUSH 和POP ......................................................................................................43   LDMIA 和STMIA ..............................................................................................43 Thumb 数据处理指令.........................................................................................................45 数据传送指令..............................................................................................................46   MOV ............................................................................................................46   MVN ............................................................................................................46   NEG..............................................................................................................47 算术逻辑运算指令......................................................................................................47   ADD.............................................................................................................47   SUB..............................................................................................................48   ADC .............................................................................................................49   SBC..............................................................................................................49   MUL.............................................................................................................50   AND.............................................................................................................50   ORR..............................................................................................................50   EOR..............................................................................................................51   BIC...............................................................................................................51   ASR..............................................................................................................51   LSL...............................................................................................................52   LSR ..............................................................................................................52   ROR..............................................................................................................53 比较指令......................................................................................................................53   CMP.............................................................................................................53   CMN.............................................................................................................54   TST...............................................................................................................54 Thumb 跳转指令.........................................................................................................55   B...................................................................................................................55   BL.................................................................................................................55   BX................................................................................................................55 Thumb 杂项指令.........................................................................................................56   SWI ..............................................................................................................56 Thumb 伪指令.............................................................................................................57   ADR .............................................................................................................57   LDR..............................................................................................................57   NOP..............................................................................................................58 伪指令.................................................................................................................................................59 符号定义伪指令..........................................................................................................................59   GBLA、GBLL、GBLS ..............................................................................................59   LCLA、LCLL、LCLS................................................................................................60   SETA、SETL、SETS .................................................................................................61   RLIST..........................................................................................................................61   CN...............................................................................................................................62   CP................................................................................................................................62   DN、SN.......................................................................................................................62   FN................................................................................................................................63 数据定义伪指令..........................................................................................................................63   LTORG.........................................................................................................................64   MAP............................................................................................................................64   FIELD ..........................................................................................................................65   SPACE..........................................................................................................................66   DCB .............................................................................................................................66   DCD 和DCDU............................................................................................................67   DCDO ..........................................................................................................................67 DCFD 和DCFDU........................................................................................................68   DCFS 和DCFSU.........................................................................................................68   DCI..............................................................................................................................69   DCQ 和DCQU............................................................................................................69   DCW 和DCWU..........................................................................................................70 报告伪指令.................................................................................................................................70   ASSERT.......................................................................................................................70   INFO ............................................................................................................................71   OPT.............................................................................................................................71   TTL 和SUBT ..............................................................................................................72 汇编控制伪指令..........................................................................................................................73   IF、ELSE 和ENDIF...................................................................................................73   MACRO 和MEND .....................................................................................................74   WHIL 和WEND .........................................................................................................75 杂项伪指令.................................................................................................................................76   ALIGN .........................................................................................................................77   AREA...........................................................................................................................78   CODE16 和CODE32..................................................................................................79   END .............................................................................................................................80   ENTRY.........................................................................................................................80   EQU .............................................................................................................................81   EXPORT 和GLOBAL ................................................................................................81   IMPORT 和EXTERN.................................................................................................82   GET 和INCLUDE ......................................................................................................83   INCBIN........................................................................................................................83   KEEP...........................................................................................................................83   NOFP ...........................................................................................................................84   REQUIRE ....................................................................................................................84   PEQUIRE8 和PRESERVE8 .......................................................................................84   RN...............................................................................................................................84   ROUT...........................................................................................................................85 ARM指令...............................................................................................................................86   ADR............................................................................................................................86   ADRL...........................................................................................................................86   LDR.............................................................................................................................86   NOP.............................................................................................................................86   LDFD...........................................................................................................................86   LDFS...........................................................................................................................87 Thumb 伪指令.............................................................................................................................87   ADR............................................................................................................................87   LDR.............................................................................................................................87   NOP.............................................................................................................................88 ARM 汇编程序设计............................................................................................................................88 文件格式.....................................................................................................................................88 ARM 汇编的一些规范................................................................................................................88 汇编语句格式......................................................................................................................88 标号.....................................................................................................................................89   基于PC 的标号...................................................................................................89   基于寄存器的标号..............................................................................................90   绝对地址..............................................................................................................90 局部标号..............................................................................................................................90 符号.....................................................................................................................................91 常量.....................................................................................................................................91   数字常数..............................................................................................................91   字符常量..............................................................................................................92   布尔常量..............................................................................................................92 段定义.................................................................................................................................92 宏定义及其作用..................................................................................................................93 子程序的调用..............................................................................................................................94 数据比较跳转..............................................................................................................................95 循环.............................................................................................................................................95 数据块复制.................................................................................................................................95 栈操作.........................................................................................................................................96 特殊寄存器定义及应用..............................................................................................................96 散转功能.....................................................................................................................................97 查表操作.....................................................................................................................................97 长跳转.........................................................................................................................................97 对信号量的支持..........................................................................................................................98 伪指令使用.................................................................................................................................98 一个完整的例子..........................................................................................................................98 外围部件控制..............................................................................................................................99 三级流水线介绍..........................................................................................................................99 C 与汇编混合编程............................................................................................................................100 内嵌汇编...................................................................................................................................100 内嵌汇编指令用法........................................................................................................103 内嵌汇编器与armasm 汇编器的差异.............................................................................104 内嵌汇编注意事项............................................................................................................104 访问全局变量............................................................................................................................106 C 与汇编相互调用....................................................................................................................107 寄存器的使用规则............................................................................................................108 堆栈使用规则....................................................................................................................108 参数传递规则....................................................................................................................109 C 程序调用汇编程序........................................................................................................ 110 汇编程序调用C 程序....................................................................................................... 111 ARM 指令集列表.............................................................................................................................. 113 ARM 存储器访问指令表列表.................................................................................................. 113 ARM 数据处理指令列表.......................................................................................................... 114 ARM 乘法指令列表.................................................................................................................. 115 ARM 跳转指令列表.................................................................................................................. 116 ARM 协处理器指令列表.......................................................................................................... 117 ARM 杂项指令列表.................................................................................................................. 118 ARM指令列表...................................................................................................................... 119 Thumb 指令集列表...........................................................................................................................120 Thumb 存储器访问指令列表...................................................................................................120 Thumb 数据处理指令列表.......................................................................................................121 Thumb 跳转指令及软中断指令列表.......................................................................................122 Thumb 伪指令列表...................................................................................................................123 汇编预定义变量及伪指令................................................................................................................124 预定义的寄存器和协处理器名................................................................................................124 通用寄存器........................................................................................................................124 程序状态寄存器................................................................................................................124 浮点数寄存器....................................................................................................................124 协处理器及协处理器寄存器............................................................................................125 内置变量列表............................................................................................................................125 伪指令列表...............................................................................................................................126 指令条件码列表........................................................................................................................128 CPSR 和SPSR 分配图.............................................................................................................................129
本实验的目的是熟悉 ARM 汇编语言中的 MOV、MVN、ADD、SUB、AND、ORR、CMP、TST、BIC指令的使用方法,以及掌握数据加减运算和逻辑运算的实现方法。通过本实验,我将学会如何使用这些指令完成一些基本的数据操作任务。 实验步骤如下: 1. 使用 MOV 和 ADD 指令实现:R8 = R3 = X + Y ``` MOV R3, #X MOV R4, #Y ADD R8, R3, R4 ``` 这里,X 和 Y 分别用常量表示,MOV 指令用来将常量加载到寄存器中,ADD 指令用来将 R3 和 R4 寄存器中的数据相加,并将结果存储到 R8 中。 2. 使用 MVN 和 SUB 指令实现:R5 = 0x5FFFFFF8 - R8 * 8 ``` MOV R1, #0x5FFFFFF8 MVN R8, R8 ADD R8, R8, #1 LEA R0, [R8, LSL #3] SUB R5, R1, R0 ``` 这里,首先使用 MOV 指令将常量 0x5FFFFFF8 加载到 R1 寄存器中,然后使用 MVN 指令对 R8 寄存器中的数据取反,使用 ADD 指令将 R8 寄存器中的数据加 1,使用 LEA 指令将 R8 寄存器中的数据左移 3 位(相当于乘以 8),并将结果存储到 R0 中,最后使用 SUB 指令将 R1 寄存器中的数据减去 R0 寄存器中的数据,并将结果存储到 R5 中。 3. 使用 CMP 指令判断 (5*Y/2)>(2*X) 吗?若大于则 R5 = R5&0xFFFF0000,否则 R5 = R5|0x000000FF ``` MOV R2, #Y MOV R3, #X MOV R4, #5 MOV R5, #2 MUL R2, R4, R2 SDIV R2, R2, R5 MUL R3, R3, R5 CMP R2, R3, LSL #1 BHI set_high MOV R6, #0x000000FF ORR R5, R5, R6 B end_if set_high: AND R6, R5, #0xFFFF0000 end_if: ``` 这里,首先使用 MOV 指令将常量 X 和 Y 加载到 R3 和 R2 寄存器中,然后使用 MOV 指令将常量 5 和 2 加载到 R4 和 R5 寄存器中,使用 MUL 指令计算 5*Y,使用 SDIV 指令将结果除以 2,使用 MUL 指令计算 2*X,然后使用 CMP 指令将两个结果进行比较。如果 5*Y/2 大于 2*X,则跳转到 set_high 标签处将 R5 寄存器的高 16 位赋值为 0xFFFF,否则跳转到 end_if 标签处将 R5 寄存器的低 8 位赋值为 0xFF。 4. 使用 TST 指令测试 R5 的 bit23 是否为 1,若是则将 bit6 位清零(使用 BIC 指令) ``` TST R5, #0x00800000 BNE clear_bit6 B end_program clear_bit6: BIC R5, R5, #0x00000040 end_program: ``` 这里,使用 TST 指令测试 R5 寄存器的 bit23 是否为 1,如果是,则跳转到 clear_bit6 标签处将 R5 寄存器的 bit6 清零,否则跳转到 end_program 标签处结束程序。 通过以上步骤,就可以完成本实验的目标。 实验总结:本实验通过编写汇编程序来实现了数据加减运算和逻辑运算,并学习了 MOV、MVN、ADD、SUB、AND、ORR、CMP、TST、BIC指令的使用方法。同时,还学习了如何使用汇编语言来进行常量的加载、寄存器的操作等基本操作,这对我今后的 ARM 开发工作非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值