除算

命令形式

          // 特殊形式
DIVS  <yop>, <xop>;
DVIQ  <xop>;

    // AY1:AY0 に入っている32ビット符号付固定小数点数を
    // AX0の16ビット符号付固定小数点数で割る。
    // 商はAY0に格納される。
DIVS  AY1, AX0; 
DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0;

説明

DIVSとDIVQは固定小数点割り算用の基本命令です。この二つの命令を組み合わせて16サイクルで32bit/16bitの割り算を実行します。符号付、符号なしの二つのアルゴリズムがありますが、いずれも割られる数の絶対値は割る数の絶対値より小さくなければなりません。つまり、商の絶対値は0 ≦ Q < 1.0に収まらなければなりません。

被除数の上位16ビットは<yop>に格納されます。下位16ビットはAY0に格納します。これは変更できません。除数は<xop>に格納します。その後、DIVSを実行し、続いて15回DIVQを実行します。これによって商がAY0に生成されます。このルーチンは符号付除算を行います。符号なし除算についてはISR 3-37を参照してください。

符号無し除算の場合は、ASTATのAQビットを0に初期化します。

DIVS, DIVQ命令は特殊形式です。条件実行や複合命令への使用は許されません。

文法要素

<xop>  ::= AX0, AX1, AR, MR2, MR1, MR0, SR1, SR0
<yop>  ::= AY1, AF
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |