2013-10-25 63 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? –