assembly - 附加多个位的 ARM 程序集
问题描述
我的程序的目的是获取寄存器 0 中的值并将其以“1011”的形式复制到寄存器 1 中。
编辑我最初并没有说清楚,不是用简单的来实现的mov
,目标是隔离每个位并从该点重建
我正在使用逻辑移位来隔离每个位,并结合寄存器 4 中的 AND 掩码来检测天气或不存在 1。
就目前而言,代码正常退出,但问题是每次我循环执行一个新的和时,前一个和的值被推出寄存器 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 的先前内容。试着拿笔和纸,然后在你的循环中写下每一步的寄存器值。
推荐阅读
- windows - 批处理文件错误“/100 在这个时候是意外的”
- css - 如何在居中视频旁边的剩余空间中居中按钮
- mongodb - 如何从 mongo 数据库中仅导出少数集合,而不是全部?
- python - sqlite3.InterfaceError:错误绑定参数 4 - 可能不支持的类型
- python - 在 A*(A 星)算法中实现开放集时,使用 min() 获取最小值或对数组进行排序,然后在 Python 中弹出第一个值?
- java - 如何将链接列表分成两个其他列表,一个具有奇数索引,另一个具有偶数索引但以递归方式
- javascript - 我疯了,试图弄清楚如何将 JSON 响应作为字符串传递给 dynamodb 调用
- python - “静音”命令根本不起作用(Discord.py,重写)
- bash - 如何在 SFTP 中获取远程文件的时间戳并将其与文件本地版本的时间戳进行比较?
- python - 使用 pip 安装 Airflow