摩托罗拉68k字存储

问题描述 投票:0回答:1

有人可以解释为什么 FF00 在 MOVE.W #$FFFF,d1 运行后存储在 d1 中吗?

我知道一个字在 68k 架构中是 16 位,但想知道为什么结果是 FF00 而不是 00FF,以及如果使用 MOVE.B 或 MOVE.L 会发生什么变化。 谢谢你

编辑:ADD.B #1, d1 在 MOVE.W #$FFFF,d1 之后运行

assembly motorola easy68k
1个回答
0
投票

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 未知,因为它来自之前的某些代码序列且未显示。

© www.soinside.com 2019 - 2024. All rights reserved.