第1天-ARM寻址方法
1、当即寻址
当即寻址方法的意图便是将操作数紧跟在操作码后边,与操作码一同放在指令代码段中,在程序运行时,程序直接调用该操作数,而不需要到其他地址单元中去取相应的操作数,上述的写在指令中的操作数也称作当即数。
在MCS-51单片机汇编语言编程中,该寻址方法是将“#”号放在当即数前面,以表明该寻址方法为当即寻址,如将操作数写为#52H。
例: MOV A ,#52H
2、寄存器寻址
指令所要的操作数已存储在某寄存器中,或把方针操作数存入寄存器。把在指令中指出所运用寄存器(即:寄存器的助忆符)的寻址方法称为寄存器寻址方法。
3、寄存器直接寻址
寄存器直接寻址方法,寄存器内寄存的是操作数的地址,而不是操作数自身,即操作数是经过寄存器直接得到的,因而称为寄存器直接寻址。
4、基址变址寻址
5、多寄存器寻址
6、相对寻址
跳转指令
7、仓库(先进后出)寻址
递加仓库
递减仓库
满仓库
空仓库
;当即寻址
MOVR0,#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中
;寄存器直接寻址
LDRR1,=COUNT; R1 <= COUNT,将存储器地址放入寄存器R0
;MOVR0,#0x12; R0 <= 0x12,MOV指令目地操作数只能是8位
LDR R0,=0x12345678
STRR0,[R1]; [R1] <= R0,将寄存器R0的内容存入寄存器R1所指向的存储器
;即设置COUNT为0x12345678,
;STR指令用于从源寄存器中将一个32位的字数据传送到存储器中
;可经过AXD的processor views–>memory检查0x30003100的值
;基址变址寻址
LDRR1,=COUNT;将存储器地址0x30003100放入寄存器R1
LDRR2,=(COUNT+4);将存储器地址0x30003104放入寄存器R1
MOV R3,#0x12;将当即数0x12存入寄存器R3
STRR3,[R2];将寄存器R3的内容存入寄存器R2所指向的存储器
LDRR4,[R1,#4];将寄存器R1的内容加上4所指向的存储器的字存入寄存器R4
;多寄存器寻址
LDRR1,=COUNT;将存储器地址0x30003100放入寄存器R1
LDMIA R1,{R5,R6};R5 <= [R1],R6 <= [R1+4]
;相对寻址
BL NEXT ;跳转到子程序NEXT处履行,留意运用F8(step in)
NOP
NOP
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/258527.html