countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2023 年 7 月 6 日
X68000 LIBRARY > 資料室 > 命令セットリファレンス(準備中) > D > DIVU

DIVU

DIVU

符号なし除算 (でぃぶゆー)


DIVU.L <ea>,Dq

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00100110001モードレジスタr
+20レジスタq000000000レジスタq

アドレッシングモードと実行時間

モードレジスタr<ea>68020680306804068060
000rDr🚧🚧🚧🚧
1(Ar)
1(Ar)+
100-(Ar)
1(d16,Ar)
10(d8,Ar,Xn)----
(d8,Ar,Xn*sf)🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W
1(xxx).L
10(d16,PC)
1(d8,PC,Xn)----
(d8,PC,Xn*sf)🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する🚧
Z
V
C常にクリア

解説

🚧


DIVU.L <ea>,Dr:Dq

68020/68030/68040/68060(ソフトウェア)の命令

命令コード

アドレス1514131211109876543210
+00100110001モードレジスタr
+20レジスタq010000000レジスタr

レジスタ q とレジスタ r は違うレジスタ

アドレッシングモードと実行時間

モードレジスタr<ea>68020680306804068060
000rDr🚧🚧🚧S
1(Ar)
1(Ar)+
100-(Ar)
1(d16,Ar)
10(d8,Ar,Xn)----
(d8,Ar,Xn*sf)🚧🚧🚧S
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W
1(xxx).L
10(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)
100#<data>

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する🚧
Z
V
C常にクリア

解説

🚧


DIVU.W <ea>,Dq

68000/68010/68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+01000レジスタq011モードレジスタr

アドレッシングモードと実行時間

モードレジスタr<ea>680006801068020680306804068060
000rDr136※(1/0)136(1/0)🚧🚧🚧🚧
1(Ar)140※(2/0)140(2/0)
1(Ar)+
100-(Ar)142※(2/0)142(2/0)
1(d16,Ar)144※(3/0)144(3/0)
10(d8,Ar,Xn)146※(3/0)146(3/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W144※(3/0)144(3/0)
1(xxx).L148※(4/0)148(4/0)
10(d16,PC)144※(3/0)144(3/0)
1(d8,PC,Xn)146※(3/0)146(3/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>140※(2/0)140(2/0)

※最大値

68000 の DIVU の実行時間は、以下に実効アドレスの時間を加えます。

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化するゼロ除算またはオーバーフローのとき未定義、商が負のときセット、さもなくばクリア
68000/68030 はゼロ除算またはオーバーフローのとき被除数が負のときセット、さもなくばクリア
68060 はゼロ除算またはオーバーフローのとき変化しない
Zゼロ除算またはオーバーフローのとき未定義、商が 0 のときセット、さもなくばクリア
68000/68030 はゼロ除算またはオーバーフローのとき被除数の上位ワードが 0 のときセット、さもなくばクリア
68060 はゼロ除算またはオーバーフローのとき変化しない
Vゼロ除算のとき未定義、オーバーフローのときセット、さもなくばクリア
68000 はゼロ除算のときセット
68030 はゼロ除算のとき DIV*/MUL* の正常終了後ゼロ除算までに DBcc が奇数回実行されたときセット、さもなくばクリア
68060 はゼロ除算のとき変化しない
C常にクリア

解説

  1. <ea> が指すワード(Dr のとき下位ワード)を読み出して除数 Y とします。
  2. Dq の全体を読み出して被除数 X とします。
  3. Y が 0 のときゼロ除算例外処理を開始します。
  4. X と Y を符号なし整数とみなして X を Y で割った商を Q、余りを R とします。
  5. Q が 0〜65535 の範囲内のとき Dq の上位ワードに R、下位ワードに Q を書き込みます。
  6. 結果に応じてフラグを操作します。

ゼロ除算またはオーバーフローのとき Dq は変化しません。