2013-10-25 65 views
0

我必須對由ARY1給出的數組進行排序,在SORT函數中對其進行排序,然後將排序後的數組存儲到ARY1S中。我選擇不包括ARY2,但它的功能完全相同。 SORT應該適用於ARY1和ARY2。我使用了bubblesort算法(C++)並盡力將其轉換爲程序集,但遇到了錯誤。彙編語言Bubblesort

D0是數組的長度

D1是我

D2將Ĵ

D3是臨時

這是我嘗試(這不起作用)不僅因爲語法問題:

ARY1  DC.B 7  //array size  
      DC.B 56,-5,8,23,-9,18,4 //my array 
ARY1S  DS.B 7  //storage size 

SORT1  MOVEA.L #ARY1, A0 //moving values into A0    
      MOVEA.L #ARY1S, A1 
      MOVE.B (A0)+, D0 //Storing size (7) into D0 
      BSR SORT 

SORT  CMP.B D0,D1 
      BGE DONE 

LOOP  CMP.B D0,D2 
      BGE INC 
      CMP (A1,D2),(A1,D1) //this is not compiling/wrong syntax 
      BLE NOTLESS 
      MOVE.B (A1,D2),D3 
      MOVE.B (A1,D1),(A1,D2) 
      MOVE.B D3,(A1,D1) 

NOTLESS  ADDQ #1, D2 
      BRA LOOP 

INC   ADDQ #1, D1 
      MOVE.B D1,D2 
      BRA SORT 

DONE  RTS 

此外,如果有人可以幫助我註釋的代碼行不起作用。提示語法錯誤。

回答

0

CMP(A1,D2),(A1,D1)//這不是編譯/錯誤的語法

我建議你下載並使用the M68000 Programmer's Reference Manual
其中,您會發現CMP的唯一有效格式是CMP <ea>,Dn。換句話說,您必須先將(A1, D1)的值轉換爲D -register,然後將其與(A1, D2)進行比較。

+0

哦哦感謝你,參考手冊是兩倍書 –

+0

也一樣好,如果我所有的值移入A0再沒有什麼,但存儲在A1,所以做我必須將A0移動到A1然後排序,或在A0中排序然後將其移動到A1? –