题
我使用Easy68k做一个简单的程序,它包括一while循环。
假设寄存器A0是指向我的数据,它们是的话。 为什么这个不行?
MOVE.W (A0) , D3
MOVE.W (A0)+, (A0)
MOVE.W (A0) , D3
如果A0指向最初的数量2,之后,4号,结果我想是第一移动后,2被存储,则增量和第三移动之后,4被存储。 然而,最后移动没有影响。
解决方案 3
我找到了答案,我的指令是不正确的。
基本上,(A0)+将递增地址寄存器之后它完成任何指令它的一部分。
我认为这将增加第一,然后分配(这是一个逻辑错误以及)。
所以,我需要做的是:
move (A0)+,D3;
这将在A0的值与D3,然后增量A0围绕下一次。
其他提示
我不知道如果我understod你想要什么,但如果我对你的secord指令应
ADDI.L #2,A0
或
LEA (A0)+,A0
我绝不是一个68K股癣,但我没有抬头看寻址模式,我通过这条线困惑:
MOVE.W (A0)+,(A0)
如果即时读取正确的,它被复制地址的内容,其中A0点,其中A0点,然后通过2,右递增A0?是,仅仅一个增量A0指令?
或者,没有考虑在A0的值,增量A0 2,并且该值写入新的地址?如果是这样,它似乎将通过应对的“2”,在每个循环迭代的连续存储器位置,这可以解释为什么D3状态越来越2。
不隶属于 StackOverflow