You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM汇编:如何用R8的值替换R3中的第二个带符号字节?

正确的ARM汇编指令方案

首先要明确你的需求场景,分两种情况处理:

场景1:修改寄存器R3本身的第二个字节

寄存器R3是32位,第二个字节对应bit8~bit15的位置(从0开始计数,第0字节为最低8位)。要替换这个字节为R8的低8位值,需要通过位操作指令组合实现:

; 清除R3中第二个字节的原有内容
AND R3, R3, #0xFFFF00FF
; 将R8的低8位移到第二个字节的位置
MOV R0, R8, LSL #8
; 合并得到修改后的R3
ORR R3, R3, R0

如果你的ARM架构支持复合指令,也可以用更简洁的组合写法:

BIC R3, R3, #0xFF00        @ 清除第二个字节
ORR R3, R3, R8, LSL #8     @ 写入R8的低8位到第二个字节位置

场景2:修改R3指向的内存地址中的第二个字节

如果你的实际需求是操作R3指向的内存区域里的第二个字节(即内存地址R3+1处),直接用字节存储指令STRB即可:

STRB R8, [R3, #1]

这条指令会把R8的低8位值存储到R3+1的内存位置,覆盖原有字节。你提到的LDRSB是带符号加载字节的指令,仅用于从内存读取带符号字节到寄存器,和你要做的“替换写入”操作不符,所以不能用在这里。

内容的提问来源于stack exchange,提问作者Cjknsefkjnzlsk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:45:57