ARM汇编

ARM寻址方式

  • 立即寻址              ADD R0, R0, #1    ;R0,<-R0+1
  • 寄存器寻址         ADD R0, R1, R2    ;R0<-R1+R2
  • 寄存器间接寻址 ADD R0,, R1,[R2]  ;R0<-R1+[R2]
  • 寄存器偏移寻址 MOV  R1, R2,, LSL  #3  ;R1<-R2*8
  MOV R3, #3
 ANDS  R1,, R1,, R2,,LSL R3  ;R1<-R1&(R2*8)
LSL:逻辑左移,空出的最低位由0填充
LSR:逻辑右移,空出的最高位由0填充
ASL:算数左移,空出的最低位由0填充
RSL:算数右移,正数空出的最高位由0填补,负数的最高位由1填补
ROR:循环右移,移出的最低位填入最高位 
  • 基址变址寻址:  LDR R0,, [R1,#4]   ;R0<-[R1+4]
    LDR R0,, [R1], #4     ;R0<-[R1], R1<-R1+4
  • 多寄存器寻址:LDMIA R0,, {R1, R2,, R3,,R4}   ;R1<-[R0],R2<-[R0+4],R3<-[R0+8],R4<-[R0+12]
STMIIA R0,, {R3-R5, R10} ;R0<-R3, [R0+4]<-R4, [R0+8]<-R5, [R0+12]<-R10
  • 堆栈寻址: STMFD  SP!, {R1-R7, LR}                ;将寄存器R1-R7,LR中的值入栈,满递减堆栈
  LDMFD  SP!, {R1-R7, LR}                将数据出栈到寄存器R1-R7,LR中,满递减堆栈

ARM汇编指令

  • 跳转指令:B  waita   ;无条件跳转到坐标号waita
        B   ox1234;无条件跳转到绝对地址0X1234处
        BL  WAITA ;  无条件跳转到标号WAITA处执行时,同时将当前的PC值保存到R14(LR)

S3c2410 ARM寄存器
R0——R15:普通寄存器
R0——R12:不涉及ATPCS规则
R8——R14:具有快速中断
R13有名SP:栈指针寄存器,存放堆栈的顶地址
R14又名LR:程序计数器,PC值始终未下一条即将执行的指令地址。
CPSR内容:
(1)条件代码标志位
①N:对有符号二进制补码,结果为负N=1,为正或0,N=0
②Z:比较结果为0,Z=1,否则Z=0
③C:加法时最高位产生进位,C=1,否则C=0
   减法时最高位产生借位,C=0,否则C=1
④V:加减法运算,发生有符号溢出时V=1,否则V=0
(2)控制位:控制CPU是否响应中断
①Ⅰ:中断禁止位
② F :快中断禁止位
③ T :T置位,处理器在Thumb状态,T清零,处理器在ARMZ状态
(3)模式位:由M4、M3、M2、M1、M0决定
七中模式:用户、系统、管理、中断、快中断、中止、未定义
指令执行时:PC值=当前正在执行的指令在内存中的地址+8;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值