| LDM 転送命令 <<L1R>>, <<L1>>, <<L2>> |
【ニモニックとオペランド】
LDM srcs, reglist
【機能】
Load multiple registers
複数データのロード
【オプション】
なし
【命令フォーマットと表記法】
【解説】
この命令はメモリのsrcsを先頭アドレスとする領域からデータを複数のレジスタへロードします。ロードするレジスタはビットマップのレジスタリストreglistで指定します。reglistはsrcsの拡張部の後に配置します。reglistのビットマップ指定は以下の通りです。
@SP+(スタックポップ)をsrcsに指定すると、小さい番号のレジスタから順にポップされ、最後に、SPがロードしたレジスタの数の4倍だけ増加します。他のアドレッシングモードでは、入手した実効アドレスがレジスタヘロードするメモリ領域の先頭アドレスを示します。いずれの場合も、メモリ中の低いアドレスにあるデータの方が小さい番号のレジスタへロードされます。
LDM命令はロードしないレジスタにはメモリの領域を割り当てません。reglistのすべてのビットが0のときには、何も行われません。これはエラーとはなりません。
【フラグ変化】
【発生EIT】
RIE srcs [Gen-IRC/rx]のアドレッシングモード違反
RIE s = 1
【注意事項】
【使用例】
16ビット長の数値H'1140を32ビットに符号拡張して(H'00001140)、汎用レジスタR7の内容(H'002d7200)に加えます。加算結果(H'002d8340)を先頭アドレスとする連続したメモリ領域から読み出した32ビットデータを、R1〜R3とR9〜R13へ逐次転送します。命令の前後での値の変化は次の通りです。