×
单片机 > 单片机程序设计 > 详情

第1天-ARM寻址方式

发布时间:2020-06-22 发布时间:
|
第1天-ARM寻址方式

1、立即寻址

立即寻址方式的目的就是将操作数紧跟在操作码后面,与操作码一起放在指令代码段中,在程序运行时,程序直接调用该操作数,而不需要到其他地址单元中去取相应的操作数,上述的写在指令中的操作数也称作立即数。

在MCS-51单片机汇编语言编程中,该寻址方式是将“#”号放在立即数前面,以表示该寻址方式为立即寻址,如将操作数写为#52H。
例: MOV A ,#52H
 

2、寄存器寻址

指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。

 

3、寄存器间接寻址

寄存器间接寻址方式,寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。

 

4、基址变址寻址

5、多寄存器寻址

6、相对寻址

跳转指令

7、堆栈(先进后出)寻址

递增堆栈

递减堆栈

满堆栈

空堆栈

 

;立即寻址
   MOV  R0,#0      ; R0 <= 0,将立即数0x00存入寄存器R0,可通过AXD的processor views-->register查看
   ADD R0,R0,#1     ; R0 <= R0 + 1
   ADD R0,R0,#0x3f   ; R0 <= R0 + 0x3f
   
   ;寄存器寻址
   MOV R1,#1       ; R1 <= 1,将立即数0x01存入寄存器R1
   MOV R2,#2       ; R2 <= 2,将立即数0x02存入寄存器R2
   ADD R0,R1,R2   ; R0 <= R1+R2,将寄存器R1和R2的内容相加,其结果存放在寄存器R0中
   
   ;寄存器间接寻址
    LDR  R1,=COUNT      ; R1 <= COUNT,将存储器地址放入寄存器R0
   ;MOV  R0,#0x12   ; R0 <= 0x12,MOV指令目地操作数只能是8位
   LDR  R0,=0x12345678 
   STR  R0,[R1]       ; [R1] <= R0,将寄存器R0的内容存入寄存器R1所指向的存储器
                ;即设置COUNT为0x12345678,
                ;STR指令用于从源寄存器中将一个32位的字数据传送到存储器中
                 ;可通过AXD的processor views-->memory查看0x30003100的值
      
   ;基址变址寻址
   LDR  R1,=COUNT      ;将存储器地址0x30003100放入寄存器R1
   LDR  R2,=(COUNT+4)    ;将存储器地址0x30003104放入寄存器R1
   MOV R3,#0x12             ;将立即数0x12存入寄存器R3
   STR R3,[R2]        ;将寄存器R3的内容存入寄存器R2所指向的存储器
   LDR R4,[R1,#4]      ;将寄存器R1的内容加上4所指向的存储器的字存入寄存器R4
   
   ;多寄存器寻址
   LDR  R1,=COUNT      ;将存储器地址0x30003100放入寄存器R1
   LDMIA R1,{R5,R6}     ;R5 <= [R1],R6 <= [R1+4]

       
   ;相对寻址
   BL NEXT  ;跳转到子程序NEXT处执行,注意使用F8(step in)
   NOP
   NOP

关键字:ARM  寻址方式 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法