ARM开发之汇编语言

本文详细介绍了ARM汇编语言,包括指令格式、寻址方式、算术和内存操作、跳转指令以及混合编程。讲解了各种寻址模式,如立即数、寄存器、寄存器间接等,并举例说明了如何进行加法、内存读写和跳转操作。同时,文章还讨论了汇编语言在C/C++中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

----向一个寄存器中一个值添加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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值