ваша правда, облажался немного с контролем границы массива
(поправил) так-то внутренний цикл недлинный 9 тактов (для иксмеги
на 32МГц это 3,4Мбайт/сек - мало??) (основное - сравнение границ
массива , само сравнение двух регистров с условием - почти в три
раза короче :) можно немного ещё ускорится (на вскидку процентов на 20 (а может 30) перейдя к однобайтовой адресации и работе с блоками данных по 256 байт, или того паче - переходу к тупому линейному коду из массы сравнилок, каждый раз с прямой адресацией по новому адресу без всяких циклов, инкрементов и косвенных адресаций (это если памяти не жалко и нужно максимально быстро :))
P.S. сделал тупой линейный код последовательных сравнилок - получил 6,3 такта на байт или 4,84МБайт/сек на XMEGA@32MHz , т.е. выйгрыш с более компактным циклическим алгоритмом примерно в 30% (не ошибся в предварительной оценке :)))