8、内存操作与数据处理:从地址构建到字符串转换

内存操作与数据处理:从地址构建到字符串转换

在编程中,尤其是在嵌入式系统开发里,对内存的操作和数据的处理是至关重要的。下面将详细介绍如何直接构建地址、使用相对寻址、加载和存储数据,以及如何对字符串进行大小写转换等操作。

1. 直接构建地址

在现代操作系统(如 Linux)下编写程序时,不能直接创建内存地址,需要向操作系统请求。但在像 RP2040 这样的微控制器上,没有操作系统、虚拟内存、内存管理和内存保护,其内存映射是固定的。

例如,对于地址 0xd0000014,我们可以使用以下三条 16 位指令将其构建到寄存器 R2 中:

MOV R2, #0xd0
LSL R2, R2, #24 @ 变为 0xd0000000
ADD R2, #0x14

这种代码可能比较复杂,所以一定要做好注释。

2. PC 相对寻址

在之前的示例中,使用 LDR 指令加载 “Hello World!” 字符串的地址,如 LDR R0, =helloworld ,汇编后为 ldr r0, [pc, #12]; (10000370 <loop+0xe>) 。汇编器知道程序计数器(PC)的值,通过提供一个偏移量来得到正确的内存地址,这就是 PC 相对寻址。

偏移量在指令中有 8 位,范围是 0 - 255。若目标地址按 32 位对齐,有效范围会乘以 4,即 0 - 1020。

3. 从内存加载数据 <
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值