2013-02-14 116 views
1

我想写一个程序,将采取8位值并将其写入到D0。然后它将被屏蔽成4位值。我得到的号码应该访问A0中的一个数字并写入D1。MC68k汇编程序地址语法

该号码将被发送到输出。

这是我怎么就开始激战:

IN_PORT  EQU $FFFFF011 
OUT_PORT EQU $FFFFF019 

mask  EQU $0F 

ORG $4000 

START: MOVE.B IN_PORT,D0 
     ANDI.B #mask,D0 

     MOVE.B (0,A0,D0),D1 * Problem area 
     MOVE.B D1,OUT_PORT 

JMP START 


ORG $5000 

segCodes: 
    DC.B $77,$22,$5B,$6B 
    DC.B $2E,$6D,$7D,$23 
    DC.B $7F,$2F,$DD 

我的问题似乎是围绕注释语法。 D1没有写入任何内容,也没有内容发送到输出。

+0

在你的问题你说你正在访问A0的值。这不是你所做的。指令:MOVE.B(0,A0,D0),D1,对它的源使用间接寻址,即A0指向一个基地址,0和D0给它加上一个偏移量。结果地址是将值从D1复制到的地址。你的代码中的问题是A0没有用基地址初始化,你已经在你自己的答案中找到了它。 – 2013-02-16 13:43:40

回答

1

我忘了使用以下命令添加地址:

MOVEA.L #$5000,A0 

这写地址的目的,因此可以正确访问,我想。如果我错了,请纠正我。