Доброго дня.
Вчера, пока писал, обратил внимание на нюанс, и поэтому хочу задать вопрос: кто должен сохранять актуальные значения регистров? Функция, которую вызывают? Или вызывающая сторона?
Может я уже подзабыл, но сам всегда сохранял внутри функции те регистры, которые использовал, чтобы была прозрачность для программы.
print_digit:
push eax
push ecx; Вот это было добавлено, так как >>
mov eax, DWORD line
add eax, edx
push DWORD 0
push DWORD written
push DWORD 1
push eax
push DWORD [stdout]
call _WriteConsoleA@20; >> здесь изменяется ecx.
pop ecx; А здесь я восстанавливаю его прежнее значение, чтобы
; не сбить вызывающую программу.
pop eax
ret