在一次操作中将特定位从寄存器复制到不同寄存器的特定位置

时间:2018-08-30 13:29:46

标签: assembly bit-manipulation beagleboneblack

我正在为Beaglebone Black PRU(使用PASM汇编语言)编写一些汇编代码,而我一直在努力解决看似简单的问题。

正如标题所示,我需要将一个位从指定位置复制到同一位置的另一个寄存器中。 例如,

说我有

r1 = 0bABCDExGH
r2 = 0bIJKLMyOP

其中大写字母表示不应修改的现有数据。我想将x复制到y。

现在,我知道在正常情况下可以执行此操作的百万种方法,但是要注意的是,我只能执行一个操作。我可以预先设置一些其他内容,但是这种移动本身应该在一次操作中完成。

PASM允许通过点后缀来引用各个位,例如r2.t3具体引用位3。通过这个,我想我可以使用类似的东西

MOV r2.t3, r1.t3

但是编译器抱怨use of .T field not allowed here。 我的下一个尝试是将r2复制到例如r3中,清除相关位,然后将其与相同的.t位进行“或”运算。所以

MOV r3, r2
CLR r3, 3
OR r2, r3, r1.t3

但是,再一次,use of .T field not allowed here

这就是我放弃的地方。关于PASM的文档非常有限且令人困惑,我找不到任何不允许在此使用.T后缀的充分原因(用于字节级访问的.b似乎很好)。

我一直在使用的一些参考资料:

0 个答案:

没有答案
相关问题