81. MUL – Multiply Unsigned
81.1. Description
This instruction performs 8-bit × 8-bit → 16-bit unsigned multiplication.
Rd Rr R1 R0
Multiplicand
×
Multiplier
→
Product High Product Low
8 8 16
The multiplicand Rd and the multiplier Rr are two registers containing unsigned numbers. The 16-bit
unsigned product is placed in R1 (high byte) and R0 (low byte). Note that if the multiplicand or the
multiplier is selected from R0 or R1 the result will overwrite those after multiplication.
This instruction is not available in all devices. Refer to the device specific instruction set summary.
Operation:
(i) R1:R0 ← Rd × Rr (unsigned ← unsigned × unsigned)
Syntax: Operands: Program Counter:
(i) MUL Rd,Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1
16-bit Opcode:
1001 11rd dddd rrrr
81.2. Status Register (SREG) and Boolean Formula
I T H S V N Z C
– – – – – – ⇔ ⇔
C R15
Z R15 • R14 • R13 • R12 • R11 • R10 • R9 • R8R7 • R6 • R5 • R4 • R3 • R2 • R1 • R0
Set if the result is $0000; cleared otherwise.
R (Result) equals R1,R0 after the operation.
Example:
mul r5,r4 ; Multiply unsigned r5 and r4
mov w r4,r0 ; Copy result back in r5:r4
Words 1 (2 bytes)
Cycles 1
Atmel AVR Instruction Set Manual [OTHER]
Atmel-0856L-AVR-Instruction-Set-Manual_Other-11/2016
125