n equ 30 ; array count key equ 69 ; key to be searched org $1000 max rmb 1 min rmb 1 mean rmb 1 result rmb 1 org $1500 clra staa min ; initialize min to 0 staa result ; initialize result to 0 ldaa #n-1 staa max ; initialize max to n-1 ldx #arr ; use X as the pointer to the array loop ldab min cmpb max lbgt notfound ; if min > max, then not found addb max ; compute mean lsrb ; " stab mean ; save mean ldaa b,x ; get a copy of the element arr[mean] cmpa #key beq found bgt search_lo ldaa mean inca staa min ; place mean+1 in min to continue bra loop search_lo ldaa mean deca staa max bra loop found ldaa #1 staa result notfound swi arr db 1,3,6,9,11,20,30,45,48,60 db 61,63,64,65,67,69,72,74,76,79 db 80,83,85,88,90,110,113,114,120,123 end