我想编写一个子程序,对 16 位二进制补码字的有序数组执行递归二进制搜索。我有大部分代码,我现在需要做的就是编写一个递归二进制搜索子程序。有什么帮助吗?
int binSearch(int key, int &lo, int &hi) {
if(hi < lo)
return NOT_FOUND; //RETURN with V = 1
int mid = (lo+hi) / 2;
if(key == array[mid])
return mid;
else if(key < array[mid]) // go left
return binSearch(key, lo, mid-1); // left
else
return binSearch(key, mid+1, hi); // right
}
我试图把它放到汇编程序中。
link A6,#0
movem.l D1/A1-A2,-(sp) *this is right
move.w 8(A6),D1 *key *this is right
movea.l 10(A6),A1 *lo*this is right
movea.l 14(A6),A2 *hi*this is right
cmpa.l A1,A2 *if hi>lo
BHS else
move.l A1,D1 *low D1
add.l A2,D1 *adds hi
asr.l #1,D1 * divide by 2
andi.w #$FFFE,D1 * I dont cras
h 这里的部分我有一些权利,我该怎么做 if(hi < lo)