ARM汇编之寻址方式

ARM指令集之寻址方式

一.   ARM7指令集

---------------------------------------------------------

Author             :tiger-john
WebSite            :blog.csdn.net/tigerjb

Email               [email protected]

Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,

但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人

联系或留言给我。3Q

---------------------------------------------------------

 

ARM7处理器有两个指令集:32位的ARM指令集,16位的Thumb指令集。

1>  ARM指令集:效率高,代码密度高

2>  Thumb指令集:具有较高的代码密度。

注:

1.     所有的ARM指令集都是有条件执行的,而Thumb指令集仅有一条指令具备条件执行功能。

2.     ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。

二.   ARM处理器寻址方式

寻址方式是指根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM7处理器总共有9中基本的寻址方式。

1.         寄存器寻址

1>  操作数的值存放在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。

2>  MOV  R1,R2

R2寄存器中的值存放到R1寄存器中

 

 

 

 

3.         寄存器移位寻址

1>  操作数2先进行移位操作,然后再与第一个操作数进行操作。

2>  MOV   R0,R1,LSL #3

R1的值左移三位,然后将结果放入R0中。等价于R0=R1*23

4.         寄存器间接寻址

1>  指令中的地址码给出的是一个通用寄存器的编号,指令所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。

2>  LDR   R1,[R2]

R2指向的存储单元中的数据读出保存在R1中。

5.         基址寻址

1>  基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。

2>  基址寻址用于访问基址附件的存储单元,常用于查表和数组操作。

3>  LDR  R2,[R3,#0X0C]

读取R3+0X0C地址处的数据存放 R2寄存器中。

6.         多寄存器寻址

1>  多寄存器寻址一次可传送n个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。

2>  LDMIA  R1! ,{R2-R4,R6}

R1R1之后寄存器中的值读出保存到R2-R4,和R6中。其中R1每次自加一。

7.         堆栈寻址

1>  堆栈寻址是隐含的,它使用一个专门的寄存器(堆指针)指向一块存储区域(堆栈)。指针所指向的存储单元即是堆栈的栈顶。

2>  存储器堆栈可分为两种

你可能感兴趣的:(c,汇编,操作系统,存储,网络技术)