我必须对ARY1给出的数组进行排序,在SORT函数中对其进行排序,然后将排序的数组存储到ARY1S中。我选择不包括ARY2,但它会工作相同。 SORT应适用于ARY1和ARY2。我采用了bubblesort算法(C ++)并尽力将其转换为汇编,但我遇到了错误。
我的D0
是数组的长度
我的D1
将是我
我的D2
将是j
和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 :(得分:0)
CMP(A1,D2),(A1,D1)//这不是编译/错误的语法
我建议您下载并使用the M68000 Programmer's Reference Manual
在其中,您会发现唯一有效的CMP
形式是CMP <ea>,Dn
。换句话说,您必须先将(A1, D1)
处的值移至D
- 注册表中,然后将其与(A1, D2)
进行比较。
答案 1 :(得分:0)
请改为尝试:
CMP.B A1,D2
CMP.B A1,D1