Divide – DIV AB
DIV AB divides the unsigned eight-bit integer in the Accumulator by the unsigned eight-bit integer in register B. The Accumulator receives the integer part of the quotient; register B receives the integer remainder. The carry and OV flags are cleared.
Exception: if B had originally contained 00H, the values returned in the Accumulator and B-register are undefined and the overflow flag are set. The carry flag is cleared in any case.
Encoding:10000100
The Accumulator contains 251 (0FBH or 11111011B) and B contains 18 ( 12H or 00010010B). The following instruction,
DIV AB
leaves 13 in the Accumulator (0DH or 00001101B) and the value 17 (11H or 00010001B) in B, since 251 = (13 x 18) + 17. Carry and OV are both cleared.
The 8051 supports byte over byte division.
DIV AB ; divide A by B
When dividing a byte by a byte, the numerator must be in register A and the denominator must be in B. After the DIV instruction is performed, the quotient is in A and the remainder is in B.
ORG 0H
MAIN :
CLR A
CLR B
MOV A, #95H
MOV B, #10H
DIV AB ; A = 09, B= 05
END ; end of asm source file
Note: If the denominator is 0 (B = 0), the OV flag is set to 1.
Related topics:
8051 Addition of Unsigned Numbers | 8051 Addition of 16-bit Numbers | 8051 Subtraction of Unsigned Numbers | 8051 Subtraction of 16-bit Numbers | 8051 Multiplication Unsigned 8-bit | 8051 DIV Instruction
List of topics: 8051
No comments:
Post a Comment