最近ではめっきり聞かなくなった用語で「ニモニック」(あるいは「ニーモニック」)があります。
現在では、一部の熱狂的なマニアかPLCでほんの少し用いる程度のものとなりました。
このページにたどり着いた方は、「ニモニック」とはどのようなものだろうかと検索された方が殆どだと思われます。
この記事では、「ニモニック」とはどのようなものか解説しています。
ニモニックとは
FA の世界で使われるPLCのプログラミングには、「ラダー」と「ニモニック」というのがあります。
「ラダー」というのは、文字通り、記号を使って、梯子のように記述する所から来ているようです。
また、「ニモニック」は、
「CPUが実行可能な機械語のプログラムを、人間が記憶しやすいような英数字で記述した言語。PLCではラダー言語と相互変換できる(オムロンより)」
つまり「アセンブリ言語(アセンブラ)」と呼ばれている物そのものです。
FAの場合で説明すると、PCが一般的ではなかった頃の人は、ラダー図から「ニモニック」に起こしなおして、プログラミングコンソール(略してプロコン)というPLCにプログラムを入力するための機器で入力していました。
ラダーをニモニックにすると
では、FAの世界で用いられるラダーに関し、ニモニックにするとどのようになるか、下記に例を挙げてみますね。
【通常出力OFF。2つの入力をONすると、出力がOFF→ONする】
LD 0.00
AND 0.01
OUT 100.00
【通常出力OFF。2つある入力のいずれかをONすると、出力がOFF→ONする】
LD 0.00
OR 0.01
OUT 100.00
【通常出力ON。2つの入力をONすると、出力がON→OFFする】
LD 0.00
AND 0.01
OUTNOT 100.00
【通常出力ON。2つある入力のいずれかをONすると、出力がON→OFFする】
LD 0.00
OR 0.01
OUTNOT 100.00
PCプログラミングで用いるニモニック
次にPCプログラミングで用いられる基本的なニモニックを一部紹介しましょう(ご紹介したもの以外にもニモニックがあります)。
ニモニック | 意味 | 説明 |
---|---|---|
LD | ロード | 指定されたメモリアドレスからデータを転送してレジスタに格納する命令 |
ST | ストア | レジスタの内容を指定されたメモリアドレスに保存するための命令 |
ADD | 加算 | CPUに対する加算の命令 |
SUB | 減算 | CPUに対する減算の命令 |
DIV | 除算 | CPUに対する除算の命令 |
MUL | 乗算 | CPUに対する乗算の命令 |
MOV | データ転送 | CPUに対するデータ転送の命令 |
CMP | 比較 | CPUに対するデータ比較の命令 |
JMP | ジャンプ | プログラムの処理を別の場所へ移動させる命令 |
RET | リターン | サブルーチンからメインプログラムに戻る命令 |
INC | インクリメント | 指定されたメモリやレジスタの値を1増やす命令 |
DEC | デクリメント | 指定されたメモリやレジスタの値を1減らす命令 |
AND | アンド | 2つのビット列を論理積する命令 |
OR | オア | 2つのビット列を論理和する命令 |
XOR | エクスクルーシブ・オア | 2つのビット列を排他的論理和する命令 |
NOT | ノット | ビットを符号反転する命令 |
PUSH | プッシュ | スタック(一時的なメモリ領域)にデータを格納する命令 |
POP | ポップ | スタックからデータを取り出す命令 |

JITERAというサイトで詳しく説明されているので、ご紹介しますね。
ニモニックはハードウェア+プログラムをかじった人向け
昔であれば、ターミナルでプログラミングしなければならないため、「ニモニック」は必須。
私はプログラミングをある程度マスターした後にラダーを始めましたが、当初は全く理解できませんでした。
ハードウェアをかじっていたこともあり、ANDやORが出てきたので、「あぁ、論理回路ね」という取っ掛かりから、理解できるようになりました。
実際に自分が体験してみて、「ニモニック」は、ハードウェアだけでなく、プログラムを相当かじった(マスターした)人向けであろうと思ってます。
ちなみに、上記に登場した内容は次の通りになります。
- LD(ロード):指定したアドレスに格納する。入力があった場合、有効。
- AND(アンド):この命令の前の物と、指定したアドレスのAND(論理積)を取る。
- OR(オア):この命令の前の物と、指定したアドレスのOR(論理和)を取る。
- OUT(アウト):指定アドレスの出力を1にする。
- OUTNOT(アウトノット):指定アドレスの出力を0とする。
FAの世界では、今はグラフィカルにラダー図でプログラミングが可能なだけでなく、FBD(ファンクションブロックダイヤグラム)なども使用することができます。
PCプログラミングでも、現在は様々な言語が存在します。



選択肢が多いので、態々「ニモニック」を無理に使用するまでもありませんね。
ニモニックのメリットとは
全く「ニモニック」にメリットがないように思えますが、実はC言語などの高級言語と呼ばれる言語よりも圧倒的に優れている点があります。



それが、高級言語よりもプログラムを動かす速度が速いということです。
プログラミング言語で一番早いのはマシン語(機械語)と言われていますが、「ニモニック」はマシン語を言語的に分かりやすくしたものとなっています。
しかし、まだ分かりづらいという欠点があるため、さらに人が理解しやすいようにしたものが高級言語と呼ばれるものなのです。
人が理解できるということは、マシン語からかけ離れてしまっているということに他なりません。
そのため、それをコンパイラーやインタープリターなる翻訳するものを介してやる必要があります。



だから、高級言語では実行速度が遅くなるんですね。
「ニモニック」はマシン語近しい言語であるために、高級言語よりもプログラムを動かす速度が速いと言われる所以なのです。
ハードウェアに近い部分を制御する必要があるシステムプログラミングであったり、処理速度が求められる組み込みシステム開発においては、未だに「ニモニック」(アセンブリ言語)が用いられているのは致し方ないでしょう。
ニモニックのまとめ
「ニモニック」はある意味古いものではありますが、「ニモニック」を理解することは、プログラミングの流れをマスターすることになるので、例えプログラミング言語が変わっても対応できるプログラマーになれるのです。
これからプログラミングを学ぼうとされている人は、「ニモニック」を学んでも損はありません!