В настоящее время я работаю над вложенными циклами в Assembly для моего класса. Что мне интересно, так это то, что если я нажму ecx, мне нужно будет переместить другое значение в ecx или текущее будет иметь ту же информацию, что и push px?
Пример:
ArraySum PROC
push esi ; save esi, ecx
push ecx
mov eax, 0 ; set the sum to zero
L1:
add eax, [esi] ; add each integer to sum
add esi, TYPE DWORD ; point to next integer
loop L1 ; repeat for array size
pop ecx ; restore ecx and esi to original values
pop esi
ret ; sum is eax
ArraySum ENDP
Когда я снова ссылаюсь на ecx, содержит ли оно исходное значение 5, даже если это значение было помещено в стек? Допустим, используя тот же код, что и выше, что я добавляю цикл. Счетчик начнется с 5, или мне нужно будет повторно инициализировать ecx?
Полагаю, возможно, это не так, как в моей голове. Я использую это из моего учебника, и это работает. Мой вопрос, который я предполагаю, почему он использует исходное значение ecx, если мы выдвинули его и не переместили другое значение в ecx после push?
P.S. Я знаю, что пример кода, который я использовал, не является вложенным циклом, но эта функция находится внутри другого цикла. Не то чтобы это действительно имело отношение к моему вопросу в любом случае:)