// Pascal

NumX:=-40; 

// Assm

 MOV EAX,NumX MOV ECX,4 IDIV ECX MOV IntPart, EAX 

Why does IntPart return 1073741815?

    1 answer 1

    Because the value is unsigned.
    In EAX put a converted 4-byte integer -40, which gives the value FFFFFFD8 , or 4294967256 in decimal.

    Divide by 4, we get 3FFFFFF6 , or 1073741814 in decimal form.

    Here’s how your code should look right:

     MOV EAX,NumX CDQ MOV ECX,4 IDIV ECX MOV IntPart, EAX 

    The symbolic EAX extension in EDX:EAX forgotten ...

    • How to make it sign? - BigTows
    • Thank you ........ - BigTows
    • I haven't worked with assembler for a long time, and gave bad advice in the comments. Good - in augmented my answer: CDQ - Harry