daily pastebin goal
78%
SHARE
TWEET

GCDHL_BC

Zeda Jan 4th, 2012 155 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. GCDHL_BC:
  2. ;Inputs:
  3. ;     HL is a number
  4. ;     BC is a number
  5. ;Outputs:
  6. ;     A is 0
  7. ;     BC is the GCD
  8. ;     DE is 0
  9. ;Destroys:
  10. ;     HL
  11. ;Size:  25 bytes
  12. ;Speed: 30 to 49708 cycles
  13. ;       -As slow as about 126 times per second at 6MHz
  14. ;       -As fast as about 209715 times per second at 6MHz
  15. ;Speed break down:
  16. ;     If HL=BC, 30 cycles
  17. ;     24+1552x
  18. ;     If BC>HL, add 20 cycles
  19. ;     *x is from 1 to at most 32 (because we use 2 16-bit numbers)
  20. ;
  21.      or a \ sbc hl,bc     ;B7ED42    19
  22.      ret z                ;C8        5|11
  23.      add hl,bc            ;09        11
  24.      jr nc,$+8            ;3006      11|31
  25.        ld a,h             ;7C        --
  26.        ld h,b             ;60        --
  27.        ld b,a             ;47        --
  28.        ld a,l             ;7D        --
  29.        ld l,c             ;69        --
  30.        ld c,a             ;4F        --
  31. Loop:
  32.      call HL_Div_BC       ;CD****    1511
  33.      ld a,d \ or e        ;7AB2      8
  34.      ret z                ;C8        5|11
  35.      ld h,b \ ld l,c      ;6069      8
  36.      ld b,d \ ld c,e      ;424B      8
  37.      jr $-10              ;18F8      12
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top