jp loop
ret
Po co ten ret???
cp 0
Krócej, bo w jednym bajcie:
or a
xor $ff
Jeśli chcesz zanegować (logicznie) akumulator, to prościej - jednym bajtem kodu:
cpl
dec b
jr nz,loop_sin2
Zamiast tych dwóch rozkazów masz jeden:
djnz loop_sin2
ld a,(hl)
ld (de),a
dec e
inc l
To jest bardzo niebezpieczne. Jesteś pewien, że rejestry e i l się nie "przekręcą"? Zamiast tego stosuj inkrementacje i dekerementacje 16-bitowe:
dec de
inc hl
add a,e
ld e,a
ld a,(de)
Uwaga j.w. Dodawanie (add a,e) może przepełnić akumulator i wtedy ld a,(de) pobierze wartość spod adresu, którego nie przewidziałeś. Chyba, że przewidziałeś, stosując jakąś niesamowitą sztuczkę
(nadal nie rozumiem Twojego algorytmu).