【发布时间】:2021-07-01 08:24:55
【问题描述】:
我正在学习组装并使用教程来指导我完成学习过程。在这种情况下,我正在学习摩托罗拉 68000 对使用 VASM 编译的 Sega Genesis 进行一些编程。
采取以下sn-p:
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
【问题讨论】:
-
符号地址周围的括号是不需要的(一些汇编程序,包括摩托罗拉的甚至会窒息)。 m68k 程序集的设计方式是
move始终暗示间接地址(而不是lea)