我刚开始学习ARM汇编语言,不清楚如何使用MOV将立即数转移到寄存器中。
从 ARM 引用手册和我的教科书中,都说 MOV 指令后面的立即数范围是 0-255。但是当我在自己的 PC 上使用 ADS 1.2 IDE 进行测试时,指令
MOV R2, #0xFFFFFFFF
表现良好。根据规范,数字 0xFFFFFFFF 是否超出范围?
最佳答案
一条 ARM 指令只能编码一个立即数,该常数可以表示为一个 8 位立即数,按 2 的任意偶数次幂移位。
不过也有MVN
指令,类似于 MOV
但反转所有位。所以,虽然 MOV R2, #0xFFFFFFFF
不能编码为 MOV
指令,可编码为MVN R2, #0
.汇编器可能会很好地为您执行此转换。
关于assembly - ARM 的 MOV 指令如何以大数作为第二个操作数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624471/