在有序数组上执行递归二进制搜索

时间:2013-05-02 05:41:43

标签: assembly motorola

我想编写一个子程序,对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

ħ 这里的部分我有一些权利,我如何做(如果&lt; lo)

0 个答案:

没有答案