**Multiply**– MUL AB

MUL AB multiplies the unsigned 8-bit integers in the Accumulator and register B. The low-order byte of the 16-bit product is left in the Accumulator, and the high-order byte in B. If the product is greater than 255 (0FFH), the overflow flag is set; otherwise it is cleared. The carry flag is always cleared.

Encoding:10100100

Originally the Accumulator holds the value 80 (50H). Register B holds the value 160 (0A0H). The instruction,

MUL AB

will give the product 12,800 (3200H), so B is changed to 32H (00110010B) and the Accumulator is cleared. The overflow flag is set, carry is cleared.

The 8051 supports byte-by-byte multiplication only. The bytes are assumed to be unsigned data.

MUL AB ; A * B, place the 16-bit result in B and A

In byte-by-byte multiplication, one of the operands must be in register A, and the second operand must be in register B. After multiplication, the result is in the A and B registers; the lower byte is in A, and the upper byte is in B.

```
```
ORG 0H
MAIN :
CLR A
CLR B
MOV A, #25H
MOV B, #65H
MUL AB ; B = 0EH, A= 99H
END ; end of asm source file

*<< Previous :: Up :: Next >>*

**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 Division Unsigned 8-bit | 8051 MUL Instruction

**List of topics:**8051

## No comments:

## Post a Comment