附加多个位的 ARM 程序集
ARM assembly appending multiple bits
我的程序的目的是获取寄存器 0 中的值并将其复制到表单中
“1011”进入寄存器 1。
编辑我最初并没有说清楚,不是通过简单的 mov
来实现的,目标是隔离每一位并从该点重建
我正在使用逻辑移位结合 AND 来隔离每个位
寄存器 4 中用于检测天气的掩码是否存在 1。
就目前而言,代码正常退出,但问题是每次我循环执行新的 and,前一个 and 的值被推出寄存器 1。
在调试器中,R1 的值变为 1、0、1、1
当我要找的是:1, 10, 101, 1011
这是.s文件
.global _start
_start:
mov R0,#0b1011
mov R4,#1 @Will act as a mask
mov R5,#3 @Shifter
bl movregs
mov R7,#1
svc 0
movregs:
and R1,R4,R0,lsr R5 @Isolates each bit for moving
subs R5,#1 @Decrements the shifter
bge movregs
bx LR
你知道一个简单的
mov R1, R0
给你你想要的?
对于您的示例,它没有按照您的意愿行事也就不足为奇了——AND 操作码每次都会破坏 R1 的先前内容。尝试拿笔和纸,然后通过循环写下每一步的寄存器值。
我想到的解决方案涉及使用寄存器 mov R4,#1
作为位掩码,
最后用 and R1,R4,lsr R5
检查 1 是否存在 orr R0,R1,lsl #4
,每次都递减左逻辑移位。
我的程序的目的是获取寄存器 0 中的值并将其复制到表单中 “1011”进入寄存器 1。
编辑我最初并没有说清楚,不是通过简单的 mov
来实现的,目标是隔离每一位并从该点重建
我正在使用逻辑移位结合 AND 来隔离每个位 寄存器 4 中用于检测天气的掩码是否存在 1。
就目前而言,代码正常退出,但问题是每次我循环执行新的 and,前一个 and 的值被推出寄存器 1。
在调试器中,R1 的值变为 1、0、1、1
当我要找的是:1, 10, 101, 1011
这是.s文件
.global _start
_start:
mov R0,#0b1011
mov R4,#1 @Will act as a mask
mov R5,#3 @Shifter
bl movregs
mov R7,#1
svc 0
movregs:
and R1,R4,R0,lsr R5 @Isolates each bit for moving
subs R5,#1 @Decrements the shifter
bge movregs
bx LR
你知道一个简单的
mov R1, R0
给你你想要的?
对于您的示例,它没有按照您的意愿行事也就不足为奇了——AND 操作码每次都会破坏 R1 的先前内容。尝试拿笔和纸,然后通过循环写下每一步的寄存器值。
我想到的解决方案涉及使用寄存器 mov R4,#1
作为位掩码,
最后用 and R1,R4,lsr R5
检查 1 是否存在 orr R0,R1,lsl #4
,每次都递减左逻辑移位。