умножение на mul в nasm в al oop, которое вызывает printf - результаты неожиданно растут - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь использовать 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 сохраняет ответ за один тик или что-то ... что за механизм муль?

...