2013-10-22 65 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