Skip to content

Instantly share code, notes, and snippets.

@moonblade
Created September 1, 2016 05:28
Show Gist options
  • Save moonblade/73a6f9a7c87a3e53e5eaa44930dc9b4f to your computer and use it in GitHub Desktop.
Save moonblade/73a6f9a7c87a3e53e5eaa44930dc9b4f to your computer and use it in GitHub Desktop.
lab
;bsearch
;read num to search into r1
movx a,@dptr
inc dptr
mov r1,a
;read final element pos into r2
movx a,@dptr
subb a,#1
mov r2,a
mov r3,#0
inc dptr
;save dpl in r7
mov r7,dpl
repeat:
;if r2<r3, break
mov a,r2
clr c
subb a,r3
jc nofound
;find mid in a
mov a,r2
add a,r3
mov b,#2
div ab
;find mid element in r6 and pos in r5
mov r5,a
add a,r7
mov dpl,a
movx a,@dptr
mov r6,a
;check if mid element is r1
subb a,r1
jz found
jc upper
lower:
mov a,r5
clr c
subb a,#1
mov r2,a
jmp repeat
upper:
mov a,r5
add a,#1
mov r3,a
jmp repeat
nofound:
mov a,#10h
mov dpl,a
mov a,#0FFh
movx @dptr,a
jmp ende
found:
mov a,#10h
mov dpl,a
mov a,r5
movx @dptr,a
ende:
sjmp ende
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment