我使用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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top