我正在研究68k微处理器的MOVE指令。我的教科书里有这个问题:
如果[D0.L] = $ AAAABBBB,[$ 024020] = $ FF,[$ 024021] = $ EE,[$ 024022] = $ DD,[$ 024023] = $ CC,D0.L之后的内容是什么执行以下每条指令? (a)MOVE.B $ 024021,D0(b)移动$ 024022,D0(c)MOVE.L $ 024020,D0
我理解在(a)部分答案是[D0.L] = $ AAAABBEE,因为我只将$ 024021的内容移动到D0.L的最低位。
我也明白在(c)部分答案是D0.L = $ FFEEDDCC,因为它会复制$ 024020- $ 024023的内容。
但我不理解(b)部分。我想老师说答案是D0.L = $ AAAABBCC,但也许我听错了。
另外,我写了一个代码来检查我的结果:
ORG $24000 ; Go to address 24000
MOVE.L #$AAAABBBB,D0;
MOVE.B #$FF,$24020;
MOVE.B #$EE,$24021;
MOVE.B #$DD,$24022;
MOVE.B #$CC,$24023;
MOVE.B $24021,D0 ;
MOVE $24022,D0 ;
FINISH JMP FINISH ;
然而,$ 24023的内容总是#$ EE,即使在我的程序中它说它应该是#$ CC。