Организация вложенных циклов
Пусть необходимо реализовать участок программы:
For (i=0; i<n; i++)
For (j=0; j<m; j++)
…
Можно для параметров цикла использовать разные регистры – но регистров мало. В этом случае, если для параметров достаточно 16 битных значений можно использовать один регистр для двух параметров.
Пример 1. Пусть необходимо реализовать участок программы
For (i=0; i<5; i++)
For (j=0; j<6; j++)
…
; For (i=0; i<5; i++)
mov ecx, 5
shl ecx, 16; Счетчик в старшую часть регистра
for1:
; For (j=0; j<6; j++)
mov cx, 6
for2:
…
dec cx
jnz for2
sub ecx, 10000h
jnz for1
Пример 3. Составить программу для вычисления произведений всех элементов вида a[0] * b[0], a[0] * b[1], … a[0] * b[m-1] ,…a[n-1] * b[m-1]:
P=1;
For (i=0; i<n; i++){
For (j=0; j<m; j++) P=p*a[i]*b[j];
}
; P=1;
mov eax, 1
;For (i=0; i<n; i++){
mov ecx, [n]
shl ecx, 16
mov ebx, offset a
; For (j=0; j<m; j++)
fori:
mov cx, [m]
mov esi, offset b
; P=p*a[i]*b[j];
forj:
mul [dword ptr ebx]
mul [dword ptr esi]
;}
add esi, 4
dec cx
jnz forj
add ebx, 4
dec ecx, 4
jnz fori