

これを実行したところ、予想では`-21`になると思っていたのですが、実際には`75350281`という値が表示されました。色々と調べたのですが原因がわからず詰まっています。誰かお力添え願えませんか。

[code]

    .data
    L_fmt:
        .ascii "%d\n\0"
    .text
    .globl _main
    _main:
        pushl %ebp
        movl  %esp, %ebp
        movl  $0, %eax
        movl  $0, %ebx
        movl  $0, %ecx
        movl  $0, %edx
        movl  $1, %ebx
        imull  $10, %ebx
        addl  $2, %ebx
        imull  $10, %ebx
        addl  $3, %ebx
        imull  $10, %ebx
        addl  $4, %ebx
        negl  %ebx
        addl  %ebx, %eax
        movl  $5, %ebx
        imull  $10, %ebx
        addl  $7, %ebx
        idivl  %ebx
        pushl %eax
        pushl $L_fmt
        call  _printf
        addl  $16, %esp
        leave
        ret
    
[/code]


CC BY-SA 4.0
2018-10-30T14:55:57.523
49808
2018-10-30T16:25:55.773
2018-10-30T16:25:55.773
3060
30772
question
assembly
アセンブリでidivlを実行