本文共 633 字,大约阅读时间需要 2 分钟。
寻址方式就是指处理器根据指令中的信息来找到指令所需的操作数的方式。
(ARM标准汇编中使用分号注释,GNU汇编使用@注释)1.立即数寻址:是一种特殊的寻址方式,操作数就在指令中给出,只要取出指令也就取出了操作数,这个操作数也称为立即数。
ADD R0,R0,#0x3f;R0←R0+0x3f
在上面这条指令中, #0x3f即为立即数, 要求以“#”为前缀。
2.寄存器寻址:寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的寻址方式。
ADD R0,R1,R2 ;R0←R1+R2
该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。
3.寄存器间接寻址:寄存器间接寻址就是寄存器中的存放的是操作数在内存中的地址。
LDR R0,[R2] ;R0←[R2]
以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后赋值给R0寄存器。
4.基址变址寻址:基址变址寻址就是将寄存器里的内容(基地址)与指令中给出的地址偏移量相加,从而得到操作数在内存中的地址。
LDR R0,[R1,#4];R0←[R1+4]
5.相对寻址:与基址变址寻址方式相类似,相对寻址PC指针的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式。
BL NEXT ; 跳转到子程序NEXT处执行……NEXT……MOV PC, LR ; 从子程序返回
转载地址:http://phigi.baihongyu.com/