| DIV 算術演算 <<L1R>>、<<L1>>、<<L2>> |
【ニモニックとオペランド】
【機能】
Divide
除算
【オプション】
なし
【命令フォーマットと表記法】
【解説】
destをsrcで除算し、商をdestに入れます。
演算は符号付きで行われます。
この命令では、結果のサイズが被除数のサイズと同じになります。
商はゼロ方向に丸められ、剰余の符号は被除数と同じになります。例 :
src = 0のときには、ゼロ除算トラップ (ZDT)が発生します。このときには、V_flagがセットされますが、destの値は変化しません。 ゼロ除算以外で、オーバフローは最小負数(MSBが1で他のビットがすべて0)を−1で除算するときにのみ発生します。
10/3 → 商 = 3、 剰余 = 1 (−10)/3 → 商 = (−3)、 剰余 = (−1) 0/(−3) → 商 = (−3)、 剰余 = 1
例 :
src = H'ffff = (−1)、dest = H'8000 = (−32768)でDIV.Hを実行すると、次の結果になります。
【フラグ変化】
(1) : (2)、(3)以外の除算 (2) : 最小負数を−1で除算 (3) : ゼロ除算
【発生EIT】
RIE src [Gen/r], dest [Gen/m]のアドレッシングモード違反 RIE sx = 11, sy = 11 ZDT src = 0
【使用例】