Я пытаюсь использовать mul и, чтобы лучше понять это, я написал небольшую функцию, и для меня это не имеет смысла, проблема в том, что умножения становятся нестабильными, вот код:
section .rodata
aformat: db "%d", 10, 0
bformat: db "%d", 10, 0
section .text
global stam
extern printf
stam:
push ebp
mov ebp, esp
pushad
mov ebx,1
mov eax,2
mov edx,0
loop:
cmp ebx,120
jge end
mul ebx
mov ebx,eax
mov eax,2
push ebx
push aformat
call printf
sub esp, 8
jmp loop
end:
mov esp,ebp
popad
pop ebp
ret
вывод:
2
4
8
16
48
144
почему вдруг после 16 числа умножаются на 4?
также: когда я пытался просто умножить eax на константу 2, присвоенную ebx числа не работали вообще, я догадывался, что eax сохраняет ответ за один тик или что-то ... что за механизм муль?