更新日: 2023 年 7 月 6 日
MULS
MULS
符号あり乗算 (まるえす)
MULS.L <ea>,Dl
68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | モード | レジスタr | ||||
+2 | 0 | レジスタl | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | レジスタh |
レジスタ h は使用しない
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68020 | 68030 | 68040 | 68060 | ||||
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | r | Dr | 🚧 | 🚧 | 🚧 | 🚧 | ||
1 | (Ar) | |||||||||
1 | (Ar)+ | |||||||||
1 | 0 | 0 | -(Ar) | |||||||
1 | (d16,Ar) | |||||||||
1 | 0 | (d8,Ar,Xn) | - | - | - | - | ||||
(d8,Ar,Xn*sf) | 🚧 | 🚧 | 🚧 | 🚧 | ||||||
(bd,Ar,Xn*sf) | ||||||||||
([bd,Ar,Xn*sf],od) | ||||||||||
([bd,Ar],Xn*sf,od) | ||||||||||
1 | 0 | 0 | 0 | (xxx).W | ||||||
1 | (xxx).L | |||||||||
1 | 0 | (d16,PC) | ||||||||
1 | (d8,PC,Xn) | - | - | - | - | |||||
(d8,PC,Xn*sf) | 🚧 | 🚧 | 🚧 | 🚧 | ||||||
(bd,PC,Xn*sf) | ||||||||||
([bd,PC,Xn*sf],od) | ||||||||||
([bd,PC],Xn*sf,od) | ||||||||||
1 | 0 | 0 | #<data> |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
---|---|---|---|
X | 使用しない | 変化しない | |
N | 変化する | 🚧 | |
Z | |||
V | |||
C | 常にクリア |
解説
🚧
MULS.L <ea>,Dh:Dl
68020/68030/68040/68060(ソフトウェア)の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | モード | レジスタr | ||||
+2 | 0 | レジスタl | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | レジスタh |
レジススタ h とレジスタ l が同じレジスタのとき結果は未定義
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68020 | 68030 | 68040 | 68060 | ||||
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | r | Dr | 🚧 | 🚧 | 🚧 | S | ||
1 | (Ar) | |||||||||
1 | (Ar)+ | |||||||||
1 | 0 | 0 | -(Ar) | |||||||
1 | (d16,Ar) | |||||||||
1 | 0 | (d8,Ar,Xn) | - | - | - | - | ||||
(d8,Ar,Xn*sf) | 🚧 | 🚧 | 🚧 | S | ||||||
(bd,Ar,Xn*sf) | ||||||||||
([bd,Ar,Xn*sf],od) | ||||||||||
([bd,Ar],Xn*sf,od) | ||||||||||
1 | 0 | 0 | 0 | (xxx).W | ||||||
1 | (xxx).L | |||||||||
1 | 0 | (d16,PC) | ||||||||
1 | (d8,PC,Xn) | - | - | - | - | |||||
(d8,PC,Xn*sf) | 🚧 | 🚧 | 🚧 | S | ||||||
(bd,PC,Xn*sf) | ||||||||||
([bd,PC,Xn*sf],od) | ||||||||||
([bd,PC],Xn*sf,od) | ||||||||||
1 | 0 | 0 | #<data> |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
---|---|---|---|
X | 使用しない | 変化しない | |
N | 変化する | 🚧 | |
Z | |||
V | |||
C | 常にクリア |
解説
🚧
MULS.W <ea>,Dq
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0 | 1 | 1 | 0 | 0 | レジスタq | 1 | 1 | 1 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | r | Dr | 38+2n※(1/0) | 38+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 | ||
1 | (Ar) | 42+2n※(2/0) | 42+2n※(2/0) | |||||||||
1 | (Ar)+ | |||||||||||
1 | 0 | 0 | -(Ar) | 44+2n※(2/0) | 44+2n※(2/0) | |||||||
1 | (d16,Ar) | 46+2n※(3/0) | 46+2n※(3/0) | |||||||||
1 | 0 | (d8,Ar,Xn) | 48+2n※(3/0) | 48+2n※(3/0) | - | - | - | - | ||||
(d8,Ar,Xn*sf) | - | - | 🚧 | 🚧 | 🚧 | 🚧 | ||||||
(bd,Ar,Xn*sf) | ||||||||||||
([bd,Ar,Xn*sf],od) | ||||||||||||
([bd,Ar],Xn*sf,od) | ||||||||||||
1 | 0 | 0 | 0 | (xxx).W | 46+2n※(3/0) | 46+2n※(3/0) | ||||||
1 | (xxx).L | 50+2n※(4/0) | 50+2n※(4/0) | |||||||||
1 | 0 | (d16,PC) | 46+2n※(3/0) | 46+2n※(3/0) | ||||||||
1 | (d8,PC,Xn) | 48+2n※(3/0) | 48+2n※(3/0) | - | - | - | - | |||||
(d8,PC,Xn*sf) | - | - | 🚧 | 🚧 | 🚧 | 🚧 | ||||||
(bd,PC,Xn*sf) | ||||||||||||
([bd,PC,Xn*sf],od) | ||||||||||||
([bd,PC],Xn*sf,od) | ||||||||||||
1 | 0 | 0 | #<data> | 42+2n※(2/0) | 42+2n※(2/0) |
※ n はソースの末尾に 0 を付け加えた 17 ビットに含まれる 10 または 01 の数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
---|---|---|---|
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット | |
Z | 結果が 0 のときセット、さもなくばクリア | ||
V | 常にクリア | ||
C |
解説
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Yw とします。
- Dq の下位ワードを読み出して Xw とします。
- Xw に Yw を符号ありで掛けた結果を Zl とします。
- 結果に応じてフラグを操作します。
- Zl を Dq の全体へ書き込みます。