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

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


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