Pointer offset trickery: один регистр — и смещение, и счётчик

Указатели сдвигаем на конец буфера, width уводим в минус — и цикл крутится, пока widthq не доползёт до нуля. Ни cmp, ни отдельного счётчика.


    
Куда смотрит загрузка — [srcq + widthq]
[
srcq
+
widthq
] =
адрес
srcq заранее сдвинут за конец буфера, поэтому отрицательный widthq возвращает адрес внутрь. widthq растёт к нулю — окно едет вправо.
Память — буфер src, 32 байта (1000–1031) · src2 = константы 10 (не показан)
CPU — регистры
srcq
указатель src
1000
src2q
указатель src2
2000
widthq
смещение и счётчик
32
FLAGS:
m0пусто
m1пусто
окно чтения [srcq+widthq] записано обратно (+10) метка окна