MOVE.W 一个 24 位值怎么可能?

How is it possible to MOVE.W a 24-Bit value?

我正在学习汇编并使用教程来指导我完成学习过程。在这种情况下,我正在学习摩托罗拉68000在使用VASM编译的Sega Genesis上进行一些编程。

采用以下片段:

VDP_ctrl EQU $C00004   ;VDP control, word or longword writes only
MOVE.W (VDP_ctrl),D5   ;$C00004 read VDP status (interupt acknowledge)?

了解 MOVE.W 是将 16 位 WORD 值写入寄存器(在本例中为 D5),而 $C00004 是 24 位十六进制值,如何这可能吗?这确实可以在 Sega 模拟器 Fusion 上编译和运行。

有关完整上下文,教程位于 https://www.chibiakumas.com/68000/helloworld.php#LessonH1

要跟进的书:https://www.amazon.com/gp/product/B08W7DWZB3

这里没有处理 24 位数据。 24位的是地址。指令

MOVE.W (VDP_ctrl),D5

正在 地址处的字 VDP_ctrl 和寄存器 D5.

之间移动数据

注意括号。在汇编中,这些通常用于指示间接级别。类似地,(A0) 表示正在访问 A0 中保存的地址的数据,而不是 A0 本身的内容:

MOVEA.L D0, A0      ; Copies the contents of D0 into A0 (most assemblers accept MOVE.L)
MOVE.L  D0, (A0)    ; Copies the contents of D0 into the longword at address A0