Individual Instruction Descriptions
4-132
4.14.38 MUL Multiply (Rounded)
Syntax
[label] name src
[,
mod
] Clock,
clk
Word,
w
With RPT,
clk
Class
MUL A
n
[~] [,
next A
] 1 1 n
R
+3 3
MUL {
adrs
} Table 4–46 Table 4–46 5
Execution [premodify AP if
mod
specified]
PH,PL ⇐ MR *
src
PC ⇐ PC +
w
Flags Affected
src
is A
n
: OF, SF, ZF, CF are set accordingly
src
is {
adrs
}: TAG bit is set accordingly
Opcode
Instructions 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MUL A
n
[~] [,
next A
] 1 1 1 0 0
next A An
1 1 1 1 0 0 A~ 0
MUL {
adrs
}
1 1 0 1 1 1 0 1 1
adrs
x
dma16
(for direct) or
offset16
(long relative) [see section 4.13]
Description Multiply MR and
src
. The 16 MSBs of the 32–bit product are stored in the the
PH register. The contents of the accumulator are not changed. The upper 16
bits of the result are rounded for MUL An, but not for MUL {
adrs
}. Pre–modify
the accumulator pointer if specified.
Syntax Description
MUL A
n
[~] [
, next A
] Multiply MR by A
n
[~] word, store result in A
n
[~]
†
MUL {
adrs
} Multiply MR by data memory word
‡
†
Round upper 16 bits
‡
No status change
See Also MULR, MULAPL, MULSPL, MULSPLS, MULTPL, MULTPLS, MULAPL
Example 4.14.38.1 MUL A0~, ––A
Predecrement accumulator pointer AP0. Multiply MR with accumulator A0~ and store upper 16 bits of
the result (rounded) PH. Accumulator A0~ is left unchanged.
Example 4.14.38.2 MUL *R3––
Multiply MR with the value pointed at by R3 and store the upper 16 bits of the result (rounded) into PH.
Decrement R3 by 2.