IAIのSEL言語を使って論理演算を実行する命令です。
XSELやMSELで使用することができます。
- AND:論理積
- OR:論理和
- EOR:排他的論理和
- NOT:否定
命令の記述方法
どの命令も操作1と操作2の入力方法は同じです。操作1と操作2の論理演算を行って、計算結果が操作1の変数に代入されます。操作1と2では入力する数値のデータ型が異なるので注意が必要です。(操作1の数値に*が付いていた場合、変数Noの中身の数値をさらに変数Noとしてその中身の数値を扱うということです。)演算結果がゼロの場合、出力部はONします。
拡張条件 E | 入力条件 N,Cnd | 命令 Cmnd | 操作1 Operand1 | 操作2 Operand2 | 出力部 Pst |
AND | 変数No | データ | ZR | ||
OR | 変数No | データ | ZR | ||
EOR | 変数No | データ | ZR | ||
NOT | 変数No | データ | ZR |
計算結果は真理値表の通りです。
AND命令のサンプルプログラム
論理積のサンプルプログラムです。74と153の論理積に加えて74と21の計算も行っています。表の下は計算結果です。2つのオペランドの2進数を比較して、両方が1の場合のみ計算結果が1となります。
E | N,Cnd | Cmnd | Operand1 | Operand2 | Pst | Comment |
LET | 2 | 74 | 変数2に74を代入 | |||
AND | 2 | 153 | 74と153の論理積を計算 計算結果8は変数2に格納 | |||
LET | 3 | 21 | 変数3に21を代入 | |||
AND | 2 | *3 | 74と21の論理積を計算 計算結果0を変数2に格納 |
OR命令のサンプルプログラム
論理和のサンプルプログラムです。74と153、74と21の計算を行っています。操作1と操作2のオペランドを比較して、どちらか片方が1の場合は計算結果が1となります。
E | N,Cnd | Cmnd | Operand1 | Operand2 | Pst | Comment |
LET | 2 | 74 | 変数2に74を代入 | |||
OR | 2 | 153 | 74と153の論理和を計算 計算結果219は変数2に格納 | |||
LET | 3 | 21 | 変数3に21を代入 | |||
OR | 2 | *3 | 74と21の論理和を計算 計算結果95を変数2に格納 |
EOR命令のサンプルプログラム
排他的論理和のサンプルプログラムです。74と153、74と21の計算を行っています。2つのオペランドを比較して、両方のビットが1もしくは両方のビットが0の場合は計算結果が0、それ以外の計算結果は1となります。
E | N,Cnd | Cmnd | Operand1 | Operand2 | Pst | Comment |
LET | 2 | 74 | 変数2に74を代入 | |||
XOR | 2 | 153 | 74と153の排他的論理和を計算 計算結果211は変数2に格納 | |||
LET | 3 | 21 | 変数3に21を代入 | |||
XOR | 2 | *3 | 74と21の排他的論理和を計算 計算結果95を変数2に格納 |
NOT命令のサンプルプログラム
否定のサンプルプログラムです。操作2の数値を反転して操作1の変数に格納します。10進数の74の否定を計算しているのですが、2進数で考えるとわかりやすくなります。2進数の場合74は1001010なので全てのビットを反転すると0110101となります。答えとなる反転結果は53となります。
E | N,Cnd | Cmnd | Operand1 | Operand2 | Pst | Comment |
NOT | 2 | 74 | 74の否定を計算 計算結果53を変数2に格納 |