分支程序设计
程序代码:
data segment
array dw 12,1,2,3,4,5,6,7,8,9,10,11,12
number dw 1
low_idx dw ?
high_idx dw ?
data ends
cseg segment
b_search proc far
assumecs:cseg,ds:data,es:data
pushds
pushax
mov ax,data
mov ds,ax
mov es,ax
pop ax
cmp ax,es:[di+2]
ja chk_last
lea si,es:[di+2]
je exit
stc
jmp exit
chk_last:
mov si,es:[di]
shl si,1
add si,di
cmp ax,es:[si]
jb search
je exit
stc
jmp exit
search:
mov low_idx,1
mov bx,es:[di]
mov high_idx,bx
mov bx,di
mid: mov cx,low_idx
mov dx,high_idx
cmp cx,dx
ja mo_match
add cx,dx
shr cx,1
mov si,cx
shl si,1
compare: cmp ax,es:[bx+si]
je exit
ja higher
dec cx
mov high_idx,cx
jmp mid
higher: inc cx
mov low_idx,cx
jmp mid
mo_match:
stc
exit:
pop ds
ret
b_search endp
cseg ends
end
经过修改后,程序编译连接后没有错误: