hulp.s 710 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. .sect .text
  2. .sect .rom
  3. .sect .data
  4. .sect .bss
  5. .sect .text
  6. loop = 100
  7. dvi4:
  8. xor a
  9. ld (.flag1),a
  10. ld (.flag2),a
  11. ld ix,0
  12. add ix,sp
  13. ld b,(ix+7) ! dividend
  14. bit 7,b
  15. jr z,1f
  16. ld c,(ix+6)
  17. ld d,(ix+5)
  18. ld e,(ix+4)
  19. call .negbd
  20. ld (ix+7),d
  21. ld (ix+6),e
  22. ld (ix+5),h
  23. ld (ix+4),l
  24. ld a,1
  25. ld (.flag1),a
  26. 1:
  27. ld b,(ix+3)
  28. bit 7,b
  29. jr z,2f
  30. call .negst
  31. ld a,1
  32. ld (.flag2),a
  33. 2:
  34. call .dvu4
  35. ld a,(.flag1)
  36. jr z,3f
  37. call .negbd
  38. 3:
  39. ld a,(.flag2)
  40. ld b,a
  41. ld a,(.flag1)
  42. xor b
  43. jr z,4f
  44. call .negst
  45. 4:
  46. jr loop
  47. .negbd:
  48. xor a
  49. ld h,a
  50. ld l,a
  51. sbc hl,de
  52. ex de,hl
  53. ld h,a
  54. ld l,a
  55. sbc hl,bc
  56. ret
  57. .negst:
  58. pop iy
  59. pop de
  60. pop bc
  61. call .negbd
  62. push hl
  63. push de
  64. jp (iy)
  65. .sect .data
  66. .flag1: .data1 0
  67. .flag2: .data1 0