.386
.model flat,stdcall
option casemap:none
includelib C:/masm32/lib/msvcrt.lib
printf proto c :dword, :vararg
.data
dArray dword 50,78,99,200,451,680,718,820,1000,2000
ITEMS equ ($-dArray)/4
Element dword 680
Index dword ?
Count dword ?
szFmt byte 'Index=%d, Count=%d Element=%d',0ah,0
szErrMsg byte 'Not found, Count=%d Element=%d',0ah,0
.code
start:
mov Index,-1
mov Count,0
mov ecx, 0
mov edx,ITEMS-1
mov eax,Element
b10:
cmp ecx,edx
jg b40
mov esi,ecx
add esi,edx
shr esi,1
inc Count
cmp eax,dArray[esi*4]
jz b30
jg b20
mov edx,esi
dec edx
jmp b10
b20:
mov ecx,esi
inc ecx
jmp b10
b30:
mov Index,esi
invoke printf,offset szFmt,Index,Count,dArray[esi*4]
jmp b50
b40:
invoke printf, offset szErrMsg,Count,Element
b50:
ret
end start