ARM开发之汇编语言

----向一个寄存器中一个值添加100(立即数,即常量)--------X89:add eax,#100(eax寄存器)68K:ADD #100,D0(68K是摩托罗拉的)ARM:add r0,r0,#100------------从一个寄存器指针加载到寄存器--------X86: mov eax,DWORD PTR[ebx]68K:MOVE .L (A0),D0ARM:ldr r...
摘要由CSDN通过智能技术生成

----向一个寄存器中一个值添加100(立即数,即常量)--------
X89:add eax,#100(eax寄存器)
68K:ADD #100,D0(68K是摩托罗拉的)
ARM:add r0,r0,#100

------------从一个寄存器指针加载到寄存器--------
X86: mov eax,DWORD PTR[ebx]
68K:MOVE .L (A0),D0
ARM:ldr r0,[r1]

ARM汇编指令格式

Operation{congd} 【s】 RD , RN, operand2
操作 条件 状态 目标寄存器 源寄存器 后续附加操作
ADD R1 ,R2,#100 把R2加100存到R1例

汇编的入口(类似C的int main)
AREA example, CODE, READONLY
表示代码区域 名字 表明是代码 只读
ENTRY(入口)
CODE32(表示32位代码)
START
。。。
.。。。
END

条件位
在这里插入图片描述
状态位 v
在这里插入图片描述

立即数要求不同,比如有的芯片要求12位的立即数,8位表示立即数,剩下4位用来循环移位。那这个立即数必须能被4整除且得到的结果在0-255之间才有效。因为要移位,想到与除2的N次方。因此要求能被4整除

ADD 和MOV只能操作寄存器
LDR和STR是把数据从内存到寄存器之间操作
LSL左移
【R1】相当于C中*R1

寻址方式

1、立即数寻址
ADD R0,R0#0X3F (把R0自己加3F在给R0就是地址)
2、寄存器寻址
ADD R0,R1,R2(R1加R2再把值给R0)
3、寄存器间接寻址
LDR R0,[R1](把R1里所指向的内存地址的值给R0,如R1里为0xffff,认为他是一个内存的地址,将这个地址里的值赋给R0)
STR R0,[R1] (把R0的值放到R1中的内存地址)
4、寄存器移位寻址
ADD R3,R2,R1,LSL #2(R1左移两位加R2赋给R3)
5、基址地址寻址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值