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
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