dec bc (т.е. DCX B) не устанавливает флагов. Видимо флаг Z уже после CalcStartEnd установлен был.
---------- Post added at 15:21 ---------- Previous post was at 15:10 ----------
Кстати, если области копирования будут пересекаться (а они наверняка будут пересекаться), то нужно учитывать, куда производится копирование: вверх или вниз. Если вниз, то надо с конца копировать, а если вверх, то сначала, как у тебя. Т.о. у тебя будут работать только те программы, которые работают с нуля, или с адреса, превышающего размер программы.