有人可以解释为什么 FF00 在 MOVE.W #$FFFF,d1 运行后存储在 d1 中吗?
我知道一个字在 68k 架构中是 16 位,但想知道为什么结果是 FF00 而不是 00FF,以及如果使用 MOVE.B 或 MOVE.L 会发生什么变化。 谢谢你
编辑:ADD.B #1, d1 在 MOVE.W #$FFFF,d1 之后运行
move.w
指令将FFFF放入d1.w
,即32位d1
的低16位。高 16 位不受此移动的影响,因此如果没有更多信息,我们无法说出 d1
(d1.l
) 中的内容,但我们知道 d1 中有 XXXXFFFF(其中 x 表示未知)。
因为
add.b
是一个字节大小的操作,所以它与d1.b
相加,即d1
的低8位。该指令添加的是 FF 和 01。这些加起来就是 00,因此 d1
(又名 d1.b
)的低 8 位将保存 00。d1.w
的 16 位将保存 FF00,因为FF 部分不受 add.b
的影响,因此该部分继承了先前值(由 move.w
设置)。
32 位寄存器
d1
将保存 XXXXFF00,其中 XXXX 未知,因为它来自之前的某些代码序列且未显示。