K-COMシミュレータ
2. K-COMシミュレータの構成
2.1 仕様概要
コンピュータの構造を理解するために,ここでは必要最小限の規模で動作するマイクロコンピュータを考え,K-COMと名づけたシミュレータを作成した.以下のサイトよりダウンロードできる.シェアウェアだが未登録で使える.(機能制限もない)
K-COM マイコンの仕組みの学習用教材(高専,工業高校,大学初等向け)
http://www.vector.co.jp/soft/win95/edu/se178902.html (Vectorより)
K-COMの仕様は,
(1)扱う数は整数のみとし,簡単な加減乗除算を行えるようにする.データ長を1バイト(8
ビット)とすると,0から255(ー128~127)までの整数値を扱える.
(2)直接使用できるレジスタはアキュームレータ1種類とし,演算は基本的にアキュームレー
タとメモリ内容との演算に限定した.その他,プログラムカウンタ,命令レジスタの必要最小限
のレジスタしか準備しない.
(3)コンピュータの構造を単純化するため,1バイトを上位3ビットと下位5ビットに分けて
,それぞれ命令コード(オペコード)と番地指定(オペランド)に用いるものとする.その結果
,命令は最大8個,番地指定は0から31番地までとなる.
(4)メモリレジスタ間の転送命令,算術演算命令,ビット演算命令,条件ジャンプ命令の必要
最小限の命令のみの構成とする.
(5)命令数が限られているので,入出力(I/O)命令は省いた.そのためマップドI/O方
式を取り,メモリにマッピングされた番地に書き込み,読み込みを行うことで,外部装置との入
出力を行う.
以上の仕様一覧を表2.1に示す.続いて,各仕様についてより詳細な説明を行う.
表2.1 K-COMの仕様
2.2 命令構成
K-COMで使用される命令数は8個である.これを表2.2のように定めた.
算術演算命令としてADD命令(加算),SUB命令(減算)の2種類,論理演算命令として
NAND命令,SHIFT命令の2種類,転送命令としてLD(ロード)命令,ST(ストア)
命令の2種類,最後にジャンプ命令としてJPC命令,JPZ命令の2種類の計8個とした.実
行停止のためのHALT命令は,JPZ命令のアドレス部分が全て1,つまり1FH番地にジャン
プする時をハード的に(回路内で)検出し,停止するものとした.また,命令コードを2進数で
”000”から”111”までを順に割り振った.
演算及び転送命令は,基本的にアキュームレータ(ACC)とメモリとの間で行われる.
表2.2 命令一覧
2.3 機械語
図2.1の様に,データ長を8ビットのうち上位3ビットを命令コード,下位5ビットをアド
レスまたは数値として機械語を構成する.そのため,命令数は23=8,メモリ空間
は25=32バイトとなる.ただし,演算はアキュームレータとメモリを介して行う
ため8ビットの定数値0~255(-128~127)までを用いることができる.
図2.1 機械語の構成
例として,アセンブリ言語”ADD 0FH”の機械語を生成してみる.スペースで区切ら
れた”ADD”の部分は命令コード(オペコード)であり,実行する命令が種ADD”命令であ
ることを表す.また,スペース後の”0FH”は番地指定(オペランド)で,数値またはアドレ
スを示し,命令を修飾する部分である.命令によっては,オペランドを取らないものもある.A
DD命令のコードは表2.1より”000”である.オペランドはメモリ上のアドレスを示し,
16進数の”0FH”を5ビットの2進数に直して,”01111”となる.両者を並べて8ビ
ットの2進数とし,4ビットごとに16進数に直した”0FH”が対応する機械語となる.以上
をまとめて図2.2に示す.

図2.2 機械語の生成
2.4 メモリ及びI/Oマップ
K-COMのメモリマップを図2.3に示す.マップドI/O方式を取ったため,利用できるメモリ
領域としては0~1DH番地までである.1EH番地は入力ポート,1FH番地は出力ポートに
それぞれ対応させた.メモリからデータを読み込むのと同様に,ロード命令(LD)により1E
H番地からデータを読みとると,実際には入力ポートよりデータが入力される.同様に,ストア
命令(ST)により1FH番地に対してデータを書き込むと出力ポートにデータが出力される.

図2.3 メモリマップ
2.5 その他の仕様
クロックは,ウエイト無しの実現しうる最高速(シミュレーションを行うパーソナルコンピュ
ータの処理速度に依存)から,1秒間隔まで可変できるようにした.また,ステップ実行も可能
とした.
I/Oポートに外部機器を接続して制御の演習を行うため,仮想的な外部機器の作成と,K-COM
と外部機器とのデータの受け渡しが出来るようにした.具体的には,OS(Microsoft,
Windows9X)上で管理されている一時記憶領域(クリップボード)を介してデータを受け渡す方式
を取ることにした.