Wrong result after dividing signed integer

tilikompowaa

Basic question:

I wrote the following block of code:

DATASEG

Result db ?
Modulo db ?

var3 db -9
var4 db 2


CODESEG

start:

    mov ah, 0
    mov al, [var3]
    mov bl, [var4]
    div bl
    mov [Result], al
    mov [Modulo], ah 

I get wrong result for -9/2. The result I get is "7B", seems that it treats "F7" as 247.

How can I get this done correctly while still defining var3 as a databyte (db)?

Or, is there any other way?

Thanks for answers

Sep Roland

You must use idiv to perform a signed division.

div will not correctly process the negative number in var3

mov al, [var3]
cbw
idiv byte ptr [var4]

From your comments I see that you don't like the cbw instruction and that you don't want to use the shortest code for the division instruction. You can always code it like:

mov   al, [var3]
mov   ah, FFh      ;Only if you 'know' var3 has a negative value!
mov   bl, [var4]
idiv   bl
mov   [Result], al
mov   [Modulo], ah

Alternatively and still avoiding cbw:

movsx ax, byte ptr [var3]
mov   bl, [var4]
idiv   bl
mov   [Result], al
mov   [Modulo], ah 

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Wrong result after dividing signed integer

From Dev

getting integer result when dividing float by integer in c

From Dev

If returning wrong result when comparing integer with string

From Java

difference of unsigned integer - standard supported way to get signed result?

From Dev

Dividing an integer into lists

From Dev

Integer dividing columns - SQLite

From Dev

C: How to save the result of 2 32 bit unsigned integer into a signed integer

From Dev

"Count()" after "Take()" on "IQueryable" returns wrong result?

From Dev

Wrong result printed after calculating the volume of a sphere

From Dev

CUDA atomicAdd produce wrong result even after the result param is initialized

From Dev

Right shift for signed integer

From Dev

Signed integer overflow behaviour

From Dev

bit shifting signed integer

From Dev

Signed integer to unsigned and back?

From Dev

Signed integer overflow behaviour

From Dev

(Py)OpenCl: wrong scan result after 16th element

From Dev

php mysqli affected rows returns wrong result after delete statement

From Dev

After changing jpa entity at runtime,select gives wrong result

From Dev

Wrong result after compare select.val() and span.text()

From Dev

command -v <foo> returns wrong result after overwriting <foo> as function

From Dev

Integer arithmetic produces a strange result (rounding after division?)

From Dev

Movilizer: How to get integer result after calculation with getAnswerValue() return values?

From Dev

Modifying bigInteger after dividing Java

From Dev

Number of digits after multiplication, dividing

From Dev

why 32-bit signed integer maximum value change to minimum value after increment by 1 in c#?

From Dev

Dividing hh:mm:ss by an integer in Javascript

From Dev

Dividing integer by all numbers in a range in Python

From Dev

Dividing cv::Mat by a number using integer division

From Dev

Dividing an Integer by Its Reverse in Python 3

Related Related

  1. 1

    Wrong result after dividing signed integer

  2. 2

    getting integer result when dividing float by integer in c

  3. 3

    If returning wrong result when comparing integer with string

  4. 4

    difference of unsigned integer - standard supported way to get signed result?

  5. 5

    Dividing an integer into lists

  6. 6

    Integer dividing columns - SQLite

  7. 7

    C: How to save the result of 2 32 bit unsigned integer into a signed integer

  8. 8

    "Count()" after "Take()" on "IQueryable" returns wrong result?

  9. 9

    Wrong result printed after calculating the volume of a sphere

  10. 10

    CUDA atomicAdd produce wrong result even after the result param is initialized

  11. 11

    Right shift for signed integer

  12. 12

    Signed integer overflow behaviour

  13. 13

    bit shifting signed integer

  14. 14

    Signed integer to unsigned and back?

  15. 15

    Signed integer overflow behaviour

  16. 16

    (Py)OpenCl: wrong scan result after 16th element

  17. 17

    php mysqli affected rows returns wrong result after delete statement

  18. 18

    After changing jpa entity at runtime,select gives wrong result

  19. 19

    Wrong result after compare select.val() and span.text()

  20. 20

    command -v <foo> returns wrong result after overwriting <foo> as function

  21. 21

    Integer arithmetic produces a strange result (rounding after division?)

  22. 22

    Movilizer: How to get integer result after calculation with getAnswerValue() return values?

  23. 23

    Modifying bigInteger after dividing Java

  24. 24

    Number of digits after multiplication, dividing

  25. 25

    why 32-bit signed integer maximum value change to minimum value after increment by 1 in c#?

  26. 26

    Dividing hh:mm:ss by an integer in Javascript

  27. 27

    Dividing integer by all numbers in a range in Python

  28. 28

    Dividing cv::Mat by a number using integer division

  29. 29

    Dividing an Integer by Its Reverse in Python 3

HotTag

Archive