A-101
INSTRUCTION SET REFERENCE
MUL <dest>,<src>
Function: Multiply
Description: Multiplies the unsigned integer in the source register with the unsigned integer in the
destination register. Only register addressing is allowed.
For 8-bit operands, the result is 16 bits. The most significant byte of the result is stored in the
low byte of the word where the destination register resides. The least significant byte is
stored in the following byte register. The OV flag is set if the product is greater than 255
(0FFH); otherwise it is cleared.
For 16-bit operands, the result is 32 bits. The most significant word is stored in the low word
of the dword where the destination register resides. The least significant word is stored in
the following word register. In this operation, the OV flag is set if the product is greater than
0FFFFH, otherwise it is cleared. The CY flag is always cleared. The N flag is set when the
MSB of the result is set. The Z flag is set when the result is zero.
Flags:
Example: Register R1 contains 80 (50H or 10010000B) and register R0 contains 160 (0A0H or
10010000B). After executing the instruction
MUL R1,R0
which gives the product 12,800 (3200H), register R0 contains 32H (00110010B), register R1
contains 00H, the OV flag is set, and the CY flag is clear.
MUL Rmd,Rms
Binary Mode Source Mode
Bytes: 32
States: 65
Hex Code in: Binary Mode = [A5][Encoding]
Source Mode = [Encoding]
Operation: MUL (8-bit operands)
if <dest> md = 0, 2, 4, .., 14
Rmd high byte of the Rmd X Rms
Rmd+1 low byte of the Rmd X Rms
if <dest> md = 1, 3, 5, .., 15
Rmd–1 high byte of the Rmd X Rms
Rmd low byte of the Rmd X Rms
CY AC OV N Z
0—✓✓✓
[Encoding] 1 0 1 0 1 1 0 0 s s s s S S S S