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

DIVS

DIVS

符号あり除算 (でぃぶえす)


DIVS.L <ea>,Dq

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00100110001モードレジスタr
+20レジスタq100000000レジスタ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常にクリア

解説

🚧


DIVS.L <ea>,Dr:Dq

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

命令コード

アドレス1514131211109876543210
+00100110001モードレジスタr
+20レジスタq110000000レジスタ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常にクリア

解説

🚧


DIVS.W <ea>,Dq

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

命令コード

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

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

モードレジスタr<ea>680006801068020680306804068060
000rDr156※(1/0)156(1/0)🚧🚧🚧🚧
1(Ar)160※(2/0)160(2/0)
1(Ar)+
100-(Ar)162※(2/0)162(2/0)
1(d16,Ar)164※(3/0)164(3/0)
10(d8,Ar,Xn)166※(3/0)166(3/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W164※(3/0)164(3/0)
1(xxx).L168※(4/0)168(4/0)
10(d16,PC)164※(3/0)164(3/0)
1(d8,PC,Xn)166※(3/0)166(3/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>160※(2/0)160(2/0)

※最大値

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

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化するゼロ除算またはオーバーフローのとき未定義、商が負のときセット、さもなくばクリア
68000/68030 はゼロ除算のときクリア、オーバーフローのとき被除数が \$80000000 または商が \$0000xxyy または \$ffffxxyy で yy が負のときセット、さもなくばクリア
68060 はゼロ除算またはオーバーフローのとき変化しない
Zゼロ除算またはオーバーフローのとき未定義、商が 0 のときセット、さもなくばクリア
68000/68030 はゼロ除算のときセット、オーバーフローのとき商が \$00008000 または商が \$0000xxyy または \$ffffxxyy で xx が 0 でなくて yy が 0 のときセット、さもなくばクリア
68060 はゼロ除算またはオーバーフローのとき変化しない
Vゼロ除算のとき未定義、オーバーフローのときセット、さもなくばクリア
68000 はゼロ除算のとき被除数が \$00008000 のとき反転、被除数が \$7fffffff を除く正または \$80000000 のときセット、さもなくば変化しない
68030 はゼロ除算のとき DIV*/MUL* の正常終了後ゼロ除算までに DBcc が奇数回実行されたときセット、さもなくばクリア
68060 はゼロ除算のとき変化しない
C常にクリア

解説

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

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