ARM SOC体系结构阅读笔记 一

本文详细介绍了ARM汇编语言的基本操作,包括寄存器运算、立即数操作、移位操作、乘法、寄存器间接寻址、堆栈操作、转移指令、条件指令和子程序返回等,展示了其在程序设计中的应用。

ARM汇编语言

1)简单的寄存器操作

ADD         r0,r1,r2;  加法,r0 =r1 + r2;

ADC         r0,r1,r2;  带进位的加法,r0 = r1+r2+C

SUB         r0,r1,r2;   减法,r0 = r1 -r2;

SBC         r0,r1,r2; 带进位的减法,r0 = r1 -r2 +C -1

RSB         r0,r1,r2;      反向减法,r0 = r2 - r1

RSC         r0,r1,r2;  带进位的反向减法,r0 = r2-r1+C-1

AND/ORR/EOR/BIC r0,r1,r2; 按位逻辑操作,and/or/xor/and not

MOV         r0,r2; r0 = r2

MVN         r0,r2; r0 = not r2

CMP/CMN/TST/TEQ        r1,r2;比较/取反比较/位(and)测试/相等(xor)测试

2)立即数操作

ADD        r3,r3,#1;        r3 = r3 + 1

AND        r8,r7,#& ff;        r8 = r7[7:0]

3)寄存器移位操作

ADD        r3,r2,r1,LSL #3;        r3 = r2 + 8 x r1

LSL:逻辑左移0~31位,空出的最低bit用0填充

LSR:逻辑右移0~32位,空出的最高bit用0填充

ASL:算术左移0~31位,空出的最低bit用0填充

ASR:算术右移0~32位,源操作数为正数,空出的最高bit用0填充;负数,用1填充;

ROR:循环右移0~32位,移出的最低有效位依次填入空出的最高有效位

RRX:扩展1位的循环右移,操作数右移1位,第31位用原来标志位C填充,共33bit循环操作;

4)乘法

MUL        r4,r3,r2;        r4 = (r3 x r2)[31:0]

MLA        r4,r3,r2,r1;        r4 = (r3 x r2 + r1)[31:0]

5)寄存器间接寻址

LDR        r0,[r1];        r0 = mem[r1]

STR        r0,[r1];        mem[r1] = r0

6)基址偏移寻址

LDR        r0,[r1,#4];        前变址,r0 = mem[r1 + 4]

LDR        r0,[r1,#4]!;       带自动变址的前变址,r0 = mem[r1 + 4],r1 = r1 +4

LDR        r0,[r1],#4;        后变址,r0 = mem[r1],r1 = r1+ 4

7)多寄存器数据传送

LDMIA        r1,{r0,r2,r5};        r0 = mem[r1],r2 = mem[r1 + 4],r5 = mem[r1 + 8]

8)堆栈寻址/块拷贝寻址等

9)转移指令

        B        LABEL

        ......

LABLE         ......

10)条件指令

                        MOV        r0,#0;        计数器初始化

        LOOP        ......

                        ADD         r0,r0,#1;   循环计数器加1

                        CMP        r0,#10;        与循环的限制比较

                        BNE        LOOP;              如果不相等,则返回,否则循环中止;

11)条件执行

        新的指令比原来的短小而快速。条件执行不仅应用于转移指令, 也应用于所有

ARM指令,注意实际编码时的用法。

12)转移和链接指令

        注意程序或寄存器的保存和恢复;

                                                           

13)子程序返回指令

        压栈出栈等;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值