CAP-X

CAP-X とは、かつて情報処理技術者試験でのプログラミング能力試験のために使用されていたアセンブリ言語である。後継のCASLに置き換えられ、現在はCASL IIが使われている。
概要.
情報処理技術者試験にはプログラミング能力試験があり、その試験内容はプログラミング言語別に分かれていた。第二種情報処理技術者試験（現基本情報技術者試験）では、受験者が最も得意とする言語による試験を選択することで、特定の言語が得意なプログラマが有利になることを防いでいる。
CAP-X はこの試験で使用するアセンブリ言語として開発されたもので、特定のコンピュータ・アーキテクチャをよく知る受験者に有利に働かないよう、実在しない仮想計算機のアーキテクチャに基づいて仕様が決められている。この仮想計算機を COMP-X と呼ぶ。CAP-X は COMP-X 上のアセンブリ言語の名称である。1977年以降、第一種情報処理技術者試験では CAP-X を使った問題は選択ではなく必須問題となった。
1986年、CAP-X は後継の CASL に代わる。ワード長などの基本的なアーキテクチャは変わっていない。レジスタ-メモリ間の演算のみだったものが、レジスタ-レジスタ間の演算も可能となり、命令の種類も増えている。
COMP-X の仕様.
COMP-X はデータワード長が16ビット、メモリアドレス長も16ビットのコンピュータである。アドレスはバイト単位ではなくワード単位に付与される。ワード中のビットの番号付けは、最上位ビットを 0 番、最下位ビットを 15 番とする。バイト単位の処理という概念がないため、エンディアンも規定されていない。また、COMP-X には入出力の概念が規定されておらず、何らかの手段でメモリ上にプログラムとデータを格納し、実行し、その結果はメモリを読み取ることでわかるようになっている。従って、入出力命令は存在しない。扱う数は整数のみで、2の補数表現を採用している。
レジスタは次の通り。
命令語は全て 1 ワードであり、先頭から順に OP フィールド（4ビット）、GR フィールド（2ビット）、XR フィールド（2ビット）、AD フィールド（8ビット）で構成される。OP フィールドは命令の種類を表すコード（オペコード）であり、COMP-X には 12 種類の命令しかない。GR フィールドでは演算で使用する GR の番号が指定される。また、JC命令では分岐条件の指定に使われる。XR フィールドではアドレス修飾を行う GR の番号が指定され、内容が 0 の場合は GR0 を意味するのではなく、GR によるアドレス修飾をしない。AD フィールドはアドレスの下位8ビットを指定する。
実効アドレスとは命令で使用するメモリアドレスであり、上位8ビットは BR で、下位8ビットは AD フィールドで指定される。XR フィールドが 0 以外の場合、指定された GR の下位8ビットと AD フィールドの値を加算し、結果の下位8ビットを実効アドレスの下位8ビットとする。
命令コードと各命令の概要は以下の通り。
CAP-X の仕様.
CAP-X は1行に、ラベル、命令コード、オペランドの順に記述する。ラベルは記述しない場合もある。ラベルは3文字以内で、先頭は英大文字、それ以外は英大文字または数字である。オペランドでアドレスを指定する際に数値の代わりにラベルを記述できる。機械語命令のオペランドは "g, n, x" の順に記述され、それぞれ順に GR フィールド、AD フィールド、XR フィールドに対応している。x フィールドは省略可能で、省略すると XR フィールドは 0 となる。
CAP-X には次の擬似命令がある。
CAP-Xの学習.
1979年まではCOMP-X、CAP-Xに関する参考書は皆無であった。CAP-Xで受験しようとする受験者にとって参考にできるものは、試験の際に配布される仕様書が唯一であった。COMP-Xは仮想のコンピュータなので、プログラムを作って実行してみることもできず、紙と鉛筆を使用して頭の中でシミュレートするしかなかった。そこで明石ミニコン研究会は、I/O（アイオー）誌の昭和55年 (1980年) 2月号から6回にわたり解説記事、過去に出題された問題の解説、練習問題を連載した。読者が練習問題の解答を郵送するとOKITAC-4300 (ミニコン) 上で稼働するCAP-Xシミュレータで実行した上、結果を返送するサービスを行っていた。なお、CAP-Xには入出力命令が無いので、実行するためのREAD (入力命令)、WRITE (出力命令) が付け加えられていた。