Можно создать табличку на 2 сектора, где хранятся адреса всех крайних точек, а затем пользоваться такой нехитрой процедуркой:
Код:
ld a,l
and 7
ld (end-1),a ; save offset
xor l
rrca
rrca
rrca
ld l,h
ld h,table
or (hl)
inc h
ld h,(hl)
ld l,a
ld a,0 ; restore offset
end:
На практике не проверял, что 'сходу' придумалось то и написал, но вроде должно работать. вообще-то процедуру можно с'оптимизировать на 4 такта и 1 байт, если входные параметры будут не вида H = y, L = x (как обычно принято на спеке), а наоборот, то есть H = x, а L = y.
Ну а если нужно работать с de, то ex de,hl в начале и в конце процедуры.