| CMP 比較命令 <<L1R>>, <<L1>>, <<L2>> |
【ニモニックとオペランド】
【機能】
Compare
比較
【オプション】
なし
【命令フォーマットと表記法】
【解説】
src1とsrc2を符号付きデータとして比較し、その結果によりフラグをセットします。
src1とsrc2のサイズが異なる場合には、サイズの小さい方のオペランドを符号拡張した上で比較します。
CMP:Qフォーマットのsrc1はリテラル値です。ビットパターンとオペランド値の対応は以下の通りです。000 8 001 1 010 2 : : 110 6 111 7
【フラグ変化】
【発生EIT】
RIE src1 [Gen/r], src1 [Sho/r], src2 [Gen-I/r], src2 [Sho-I/r]のアドレッシングモード違反 RIE sx = 11, sy = 11
【使用例】
汎用レジスタR3に指定されたメモリアドレスから2バイトのデータをフェッチします。このデータを32ビット(H'ffffffff)に符号拡張し、R1に保持された値から減算することによって比較します。減算の結果src1(H'ffff)がsrc2(H'00000000)より小さいので、L_flagとZ_flagをクリアします。
8ビット長の数値H'64(#100)は32ビットに符号拡張し、R0の値(H'00000001)から減算して比較します。減算の結果、src1(#100)がsrc2(H'00000001)より大きいので、L_flagをセットします。