AND回路をラダー言語とアッセンブリ言語で書く

 以下に、**AND回路**をラダー言語(ラダー図)とアセンブリ言語(x86)で記述した例を説明します。


---


### 1. ラダー言語(ラダー図)でのAND回路

#### 例: 2入力AND回路(A AND B → OUT)

```

|-----| |-----|-------( )--|

|  A  | |  B  |   OUT     |

```

**動作条件**:  

- 入力 `A` **かつ** 入力 `B` がON(接点閉)のとき、出力 `OUT` がON(コイル励磁)します。


---


### 2. x86アセンブリ言語でのAND回路

#### 例: メモリ上の変数でAND演算

```assembly

section .data

    A   db  1       ; 入力A (1=ON, 0=OFF)

    B   db  1       ; 入力B (1=ON, 0=OFF)

    OUT db  0       ; 出力OUT (初期値0)


section .text

    global _start


_start:

    ; AND演算の実行

    mov  al, [A]    ; AL = Aの値

    and  al, [B]    ; AL = A AND B

    mov  [OUT], al  ; OUT = 結果


    ; プログラム終了

    mov  eax, 1     ; システムコール番号 (exit)

    int  0x80       ; カーネル呼び出し

```


#### 動作説明:

1. `A` と `B` の値をレジスタ `AL` にロード

2. `AND` 命令で論理積を計算

   - `A=1` かつ `B=1` の場合のみ `AL=1` になります

3. 結果を `OUT` に格納


---


### 3. 物理I/Oを使った例(PLC風の実装)

#### 例: ポート入出力でAND回路を実現

```assembly

section .text

    global _start


_start:

    ; ポート0x20から入力Aを読み取り

    in   al, 0x20    ; AL = ポート0x20の値 (A)

    and  al, 0x01    ; 最下位ビット(Aの状態)を抽出


    ; ポート0x21から入力Bを読み取り

    in   bl, 0x21    ; BL = ポート0x21の値 (B)

    and  bl, 0x01    ; 最下位ビット(Bの状態)を抽出


    ; AND演算

    and  al, bl      ; AL = A AND B


    ; ポート0x22に結果を出力

    out  0x22, al    ; OUTポートに書き込み


    ; 無限ループ(PLCは常に動作するため)

    jmp  _start

```


#### 動作説明:

- ハードウェアの入力ポート(`0x20`, `0x21`)からスイッチ状態を読み取り

- ビット演算でANDを計算後、出力ポート(`0x22`)に結果を送信

- PLCのように**無限ループ**で動作


---


### 4. ラダー図とアセンブリの対応関係

| ラダー要素        | アセンブリ対応               |

|-------------------|-----------------------------|

| 入力接点(A)     | `mov al, [A]` または `in`命令 |

| AND論理           | `and` 命令                  |

| 出力コイル(OUT) | `mov [OUT], al` または `out`命令 |


---


### 5. 注意点

- **PLCの実際の動作**:  

  実機のPLCは「スキャンサイクル」と呼ばれるループで入出力を連続的に処理します。アセンブリの無限ループ(`jmp _start`)がこれに相当します。

- **ビット操作**:  

  PLCでは1ビット単位で入出力を制御しますが、x86アセンブリでは通常8ビット(1バイト)単位で操作します。

- **タイミング**:  

  実際のPLCはタイマーやシーケンシャル制御を含みますが、単純なAND回路では不要です。


このように、ラダー図のAND回路はアセンブリでは **`AND`命令** で直接表現できます。

コメント

このブログの人気の投稿

Pydroid用ピアノアプリ+ラフマニノフピアノ協奏曲第2番1楽章デモ音源付き

訴えの変更(追加的変更)申立

最高裁での上告理由書受理・却下の判断基準について