2013-10-22 68 views
0

在课堂上给出了下面的代码,并且假设每一行在注释中的含义都是正确的。它是否正确?将汇编语言翻译成英语(EASy68K)

 MOVE.B #20,D0  //Move 20 into D0 
     MOVEA.L #$1000,A0 //Move the contents of address 1000 into A0 
     CLR.B D1   //Set D1 to 0 
Again CMP.B (A0)+,D2 //Compare A0 to D2, then increment A0 by 1 
     BNE  NEXT  //If A0 and D2 are not equal, go to NEXT, otherwise continue 
     ADD.B #1,D1  //Add 1 to D1 
NEXT SUB.B #1,D0  //Subtract 1 from D0 
     BNE  Again  //Branch to AGAIN if contents of A0 is not equal to D2 
+0

你为什么不问你的导师? – 2013-10-22 22:20:54

+0

如果我有导师,我会问他们。谢谢您的帮助。 – Brett

+0

真的吗?你有没有导师的课? – 2013-10-22 22:23:15

回答

1

不,这是不正确的。最起码,这一点:

Again CMP.B (A0)+,D2 //Compare A0 to D2, then increment A0 by 1 

...是不是比较A0的内容任何东西。它将A0中包含的地址处的一个字节与D2中的一个字节进行比较(然后递增A0以指向下一个地址)。

如果我没有记错的话,在这些线路:

NEXT SUB.B #1,D0  //Subtract 1 from D0 
     BNE  Again  //Branch to AGAIN if contents of A0 is not equal to D2 

零标志应当设置/基础上的结果,清除前一个sub.b,所以,他们会继续为0x20的迭代(因为D0在第一行中加载了0x20)。

+0

谢谢。这就是我想说的,但不清楚/正确。 – Brett