CAP-X

CAP-X とは、かつて情報処理技術者試験でのプログラミング能力試験のために使用されていたアセンブリ言語である。後継のCASLに置き換えられ、現在はCASL IIが使われている。

概要

情報処理技術者試験にはプログラミング能力試験があり、その試験内容はプログラミング言語別に分かれていた。第二種情報処理技術者試験(現基本情報技術者試験)では、受験者が最も得意とする言語による試験を選択することで、特定の言語が得意なプログラマが有利になることを防いでいる。

CAP-X はこの試験で使用するアセンブリ言語として開発されたもので、特定のコンピュータ・アーキテクチャをよく知る受験者に有利に働かないよう、実在しない仮想計算機のアーキテクチャに基づいて仕様が決められている。この仮想計算機を COMP-X と呼ぶ。CAP-X は COMP-X 上のアセンブリ言語の名称である。1977年以降、第一種情報処理技術者試験では CAP-X を使った問題は選択ではなく必須問題となった。

1986年、CAP-X は後継の CASL に代わる[1]。ワード長などの基本的なアーキテクチャは変わっていない。レジスタ-メモリ間の演算のみだったものが、レジスタ-レジスタ間の演算も可能となり、命令の種類も増えている。

COMP-X の仕様

COMP-X はデータワード長が16ビットメモリアドレス長も16ビットのコンピュータである。アドレスはバイト単位ではなくワード単位に付与される。ワード中のビットの番号付けは、最上位ビットを 0 番、最下位ビットを 15 番とする。バイト単位の処理という概念がないため、エンディアンも規定されていない。また、COMP-X には入出力の概念が規定されておらず、何らかの手段でメモリ上にプログラムとデータを格納し、実行し、その結果はメモリを読み取ることでわかるようになっている。従って、入出力命令は存在しない。扱う数は整数のみで、2の補数表現を採用している。

レジスタは次の通り。

汎用レジスタ GR0、GR1、GR2、GR3
16ビットのレジスタ。算術演算と論理演算に用いる。このうち GR1、GR2、GR3 は指標(インデックス)レジスタとしても用いる。
基底レジスタ BR
実効アドレス16ビットの上位8ビットを格納してあるレジスタ。BR の下位8ビットは常に 0 である。
制御カウンタ SC
実行中の命令のアドレスが格納される。いわゆるプログラムカウンタである。
条件コードレジスタ CC
加算命令と減算命令の完了時に、演算結果に従って 1 か 0 がセットされる 1 ビットのレジスタ。いわゆるステータスレジスタである。

命令語は全て 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ビットとする。

命令コードと各命令の概要は以下の通り。

HJ (0x0) - halt and jump
SC に実効アドレスを入れて停止。その後スタートボタンを押すと SC の示すアドレスから実行が再開される。GR フィールドは無視される。
JNZ (0x1) - jump if GR is not zero
GR フィールドで指定される GR の内容が 0 でないとき、実効アドレスにジャンプする。
JC (0x2) - jump on condition
GR フィールドが 00 ならば、何もしないで次の命令に移る。01 ならば、CC が 1 のときに実効アドレスにジャンプ。10 ならば、CC が 0 のときに実効アドレスにジャンプ。11 ならば無条件で実効アドレスにジャンプ。
JSR (0x3) - jump to subroutine
GR フィールドで指定した GR に現在の SC の内容に 1 を加算したものを格納し、実効アドレスが指すワードの内容を SC と BR に格納する。BR の内容を変更する唯一の命令である。従って、アドレスの上位8ビットの変化を伴うサブルーチン呼び出しとサブルーチンからの復帰は、必ず JSR 命令を使う。
SFT (0x4) - shift
GR フィールドで指定された GR の内容をシフトする。XR フィールドでシフトの方向(0 なら右へ、1 なら左へ)を指定し、AD フィールドでシフトするビット数を指定する。算術シフトであるため、第0ビットはシフトされず、右シフトでは第0ビット(符号ビット)がシフトされて空いた部分にコピーされる。
LAI (0x8) - load address immediate
実効アドレスの下位 8 ビットが GR フィールドで指定された GR の下位 8 ビットに格納され、上位 8 ビットは 0 にされる。いわゆる即値を汎用レジスタにセットする命令。
ADD (0xA) - add
GR フィールドで指定された GR の内容と実効アドレスで示されたメモリワードの内容を加算し、同じ GR に格納する。演算結果が負なら CC に 1 をセットし、0 か正なら CC に 0 をセットする。
SUB (0xB) - subtract
GR フィールドで指定された GR の内容から、実効アドレスで示されたメモリワードの内容を減算し、結果を同じ GR に格納する。演算結果が負なら CC に 1 をセットし、0 か正なら CC に 0 をセットする。
LD (0xC) - load
実効アドレスで示されたメモリワードの内容を、指定された GR に格納する。
ST (0xD) - store
指定された GR の内容を、実効アドレスで示されたメモリワードに格納する。GR の内容は変化しない。
AND (0xE) - and
指定された GR の内容と実効アドレスで示されたメモリワードの内容のビット毎の論理積をとり、同じ GR に格納する。
EOR (0xF) - exclusive or
指定された GR の内容と実効アドレスで示されたメモリワードの内容のビット毎の排他的論理和をとり、同じ GR に格納する。

CAP-X の仕様

CAP-X は1行に、ラベル、命令コード、オペランドの順に記述する。ラベルは記述しない場合もある。ラベルは3文字以内で、先頭は英大文字、それ以外は英大文字または数字である。オペランドでアドレスを指定する際に数値の代わりにラベルを記述できる。機械語命令のオペランドは "g, n, x" の順に記述され、それぞれ順に GR フィールド、AD フィールド、XR フィールドに対応している。x フィールドは省略可能で、省略すると XR フィールドは 0 となる。

CAP-X には次の擬似命令がある。

START n
プログラムの先頭に必ず書かれる。n は十進数で、プログラムの格納開始アドレスを示す。
END n
プログラムの最後に必ず書かれる。n はラベルか十進数で、プログラムの実行開始アドレスを示す(省略可能)。
CONST h
h には4桁の16進数が書かれ、その値がメモリワードの内容として格納される。
RESV n
n には十進数が書かれ、n ワードの領域が確保されることを意味する。プログラム格納時にはその領域の内容は変更されない。
ADCON n
アドレス定数。n はラベルまたは十進数。ラベルが同一プログラム内にあれば、そのラベルのアドレスが設定される。同一プログラム内にないラベルの場合、外部のシステムライブラリによってアドレスが決定され、対応するプログラムのSTART命令のアドレスに設定される。

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 (出力命令) が付け加えられていた[2]

脚注

  1. ^ CASLプログラミング―1・2種情報処理技術者試験, 甘利直幸, オーム社, 1986
  2. ^ CAP-X勉強室、明石ミニコン研究会『I/O』昭和55年 2月号 p.121、工学社

参考文献

  • 赤松徹(著)、『CAP-X入門』工学社(1980年)
現行の試験
スキルレベル1

IP ITパスポート試験 (旧初級システムアドミニストレータ試験の一部)

スキルレベル2

SG 情報セキュリティマネジメント試験  FE 基本情報技術者試験 (旧第二種情報処理技術者試験、旧基本情報情報技術者試験及び初級システムアドミニストレータ試験の統合)

スキルレベル3

AP 応用情報技術者試験 (旧第一種情報処理技術者試験ソフトウェア開発技術者試験

スキルレベル4
(高度情報処理技術者試験)

ST ITストラテジスト試験 (旧システムアナリスト試験、旧上級システムアドミニストレータ試験の統合)
SA システムアーキテクト試験 (旧特種情報処理技術者アプリケーションエンジニア
PM プロジェクトマネージャ試験
NW ネットワークスペシャリスト試験 (旧オンライン情報技術者試験テクニカルエンジニア(ネットワーク)
DB データベーススペシャリスト試験 (旧オンライン情報技術者試験テクニカルエンジニア(データベース)
ES エンベデッドシステムスペシャリスト試験 (旧マイコン応用システムエンジニア試験テクニカルエンジニア(エンベデッドシステム)試験
SM ITサービスマネージャ試験 (旧システム運用管理エンジニア試験
AU システム監査技術者試験 (旧情報処理システム監査技術者

過去の試験

PE プロダクションエンジニア試験 2000年(平成12年)春期試験まで)
SV テクニカルエンジニア(情報セキュリティ)試験 2008年(平成20年)春期試験まで)(現情報処理安全確保支援士試験
SW ソフトウェア開発技術者試験 2008年(平成20年)秋期試験まで)
SU 情報セキュリティアドミニストレータ試験 2008年(平成20年)秋期試験まで)
AN システムアナリスト試験 2008年(平成20年)秋期試験まで)
SD 上級システムアドミニストレータ試験 2008年(平成20年)秋期試験まで)
AD 初級システムアドミニストレータ試験 2009年(平成21年)春期試験まで)
SC 情報セキュリティスペシャリスト試験 2016年(平成28年)秋期試験まで)(現情報処理安全確保支援士試験

試験の歴史
試験に関する法律
主催
科目免除制度
試験に出題される
架空のコンピュータ言語、ソフトウェア
コンピュータの資格
国家資格
情報処理技術者
高度区分
過去の区分
日本商工会議所主催
中央職業能力開発協会認定
文部科学省後援
全国商業高等学校協会主催
全国工業高等学校長協会主催
経済産業省推進資格
マイクロソフト
サーティファイ
その他民間資格
シスコ技術者認定
試験実施団体
IPA
関連分野
情報セキュリティ
プログラミング
表計算
  • 表計算 (情報処理技術者試験)
  • マクロ
コンピュータシステム
ITマネジメント
関連項目