CASL
当ページ「CASL」はまもなく削除される予定です。理由は以下の通りです。
削除に同意されないのであれば、方針などを確認して、ページを適切なものに書き換えた上で、このテンプレートを取り除いてください。勝手に取り除いた場合、投稿ブロックされる恐れがあります。
基本情報技術者試験に出題されるCASLに関するコンテンツです。
はじめに

基本情報技術者試験(FE)では午後の科目で、選択必須問題としてソフトウェア開発(プログラミング)に関する問題が出題されています。C言語、Java、Python、CASL、表計算ソフトの5つのプログラミング言語の中から一つ選択して解答するという内容になっています。令和元年度秋季まではCOBOLも選ぶことができましたが、Pythonと置き換わる形で廃止されました。
はじめに

FE午後ではソフトウェア開発の問題は配点が非常に大きいため、擬似言語とともに同試験の鬼門として扱われることがあります。合格するためには擬似言語とソフトウェア開発の問題に関しては特に重点的に対策する必要があります。
はじめに

CASLはC言語やJavaなどに比べて命令文が単純で、プログラムの行数も少ないといった特徴があり、覚えやすい言語です。問題自体も簡単であり、シミュレータも用意しやすいため、初心者がプログラミングを勉強するには丁度良い言語と言えます。
はじめに

CASLの仕様は試験実施者が予め発表してくれるほか、試験問題中にも仕様書を示してくれるので、試験中にその場で仕様書を読んで理解し解答することも可能です。初心者が合格を狙うならば、表計算と並びオススメの言語です。
CASLの概要

CASL(キャスル)は、基本情報技術者試験におけるプログラミングの試験のために、CAP-Xの後継として1986年(昭和61年)に仕様が策定されたアセンブリ(アセンブラ)言語です。
CASLの概要

基本情報技術者試験ではプログラミング能力に関する問題が出題されますが、これでは幾つかのプログラミング言語のなかから、受験者はそれぞれが最も得意とする言語による試験を選択することで、特定の言語のプログラマが有利になることを防いでいます。
CASLの概要

この試験で使用するアセンブリ言語としてCASLが開発されました。アセンブリ言語には、ハードウェアのアーキテクチャとの関連性が強いという特徴があります。特定の実在するアーキテクチャを試験に採用した場合、それを利用する受験者に有利に働いてしまうという問題がある。このため、実在するどのアーキテクチャとも関連性がない単純化した仮想の計算機COMP-Xと、そのアセンブリ言語の仕様CAP-Xを策定することで、この問題を解消しました。その後継の仮想計算機をCOMETと呼び、アセンブリ言語の仕様をCASLと名付けました。
CASLの概要

COMETは、最低限の機能のみを実装した仮想機械であり、そのためCASLも非常に簡素なアセンブリ言語となっています。初期の仕様ではCOMETの各機械語命令を除けば4種類の擬似命令と3種類のマクロしかありません。COMETとCASLの仕様は試験実施者が予め発表するほか、試験問題中にも示し、試験中にその場で仕様を理解し解答することも可能です。
CASLの概要

2001年(平成13年)に第二種情報処理技術者試験が基本情報処理技術者試験に改称された際に、COMETとCASLの仕様改訂も行われており、改訂後はそれぞれCOMET II、CASL IIと呼ばれています。なおIT人材育成センター国家資格・試験部(旧・情報処理技術者試験センター)から、WindowsのJava環境で動作するCASL-IIシミュレータが学習用に提供されています。(この他にも非公式のシミュレータがいくつか開発されています。)
CASLの概要

情報処理技術者試験の開始当初には、同様にCAP-XおよびCOMP-Xが用いられていましたが、主にマイクロプロセッサの登場と普及に伴う主流アーキテクチャの変化に伴い、変化に対応した新しいアセンブリ言語および仮想計算機としてCASLおよびCOMETが定義されています。
COMET の仕様

ここでは、COMET IIに改訂される前のCOMETの仕様について述べます。COMET IIとの違いについては#仕様改訂による変更点を参照してください。
COMET の仕様

COMETは、1ワード長が16ビットの固定長語で表現され、処理の対象となるデータは全てワード単位で行われます。1ワードを構成するビットの並びは、最上位ビットを0番、最下位ビットを15番とします(COMET IIで変更されています)。制御方式は逐次処理方式であり、命令語は2ワードの固定長で表現されます。扱うデータは算術データ、論理データ、文字データの3種類があり、算術データは 1ワードのデータを2の補数表現で表現し、論理データは符号無し整数として扱います。文字データはJIS X 0201規格「7ビット及び8ビットの情報交換用符号化文字集合」を採用しています。
COMET の仕様

レジスタは次の通りです。
COMET の仕様

前述の通りCASLは命令語を2ワードの固定長として扱います。命令語の構成は先頭から順に OPフィールド(8ビット)、GRフィールド(4ビット)、XRフィールド(4ビット)、ADRフィールド(16ビット)のデータアドレスと続きます。COMETの前身であるCOMP-Xとほぼ同様の構成ですが各フィールドのビット数が違うことに注意してください。
COMET の仕様

OP フィールドは命令の種類を表すコード(オペコード部)であり、初期のCOMETでは23種類の命令が用意されており、COMET IIでは 28種類に拡張されています。GR フィールドでは演算で使用する GR の番号が指定されます。分岐命令やスタック操作の場合は GRを指定することはないので、これらの命令ではこの部分は無視されます(何を指定しても問題ありません)。XR フィールドではアドレス修飾を行う GR の番号が指定され、内容が0の場合はGR0を意味するのではなく、GR によるアドレス修飾をしないGRフィールドと同様、アドレス修飾を持たない命令においては無視されます。ADRフィールドは処理対象となるアドレスが指定され、このアドレスにXRフィールドのアドレス修飾を施したものが実行アドレスとして使用されます。
COMET の仕様

なお、COMP-Xと異なり、COMETでは命令の具体的なオペコードは定義されていません(定義の後に、定義の一部でないと明示のうえで参考資料として示されています)。
COMET の仕様

命令コードと各命令の概要は以下の通りです。なお、書き方の[]は省略可能を意味しています。
CASL の仕様

CASL は1行に、ラベル、命令コード、オペランドの順に記述します。ラベルは記述しない場合もあります。ラベルは3文字以内で、先頭は英大文字、それ以外は英大文字または数字でし。オペランドでアドレスを指定する際に数値の代わりにラベルを記述できます。
CASL の仕様

CASL には次の擬似命令があります。
CASL の仕様

また、CASLには入出力を表すマクロ命令が用意されています。内容は以下の通りです。
仕様改訂による変更点

2001年のCOMET II、CASL IIの改訂によってCASL COMETに比べていくつかの変更が行われています。具体的には以下の通りです。
仕様改訂による変更点

COMET IIに追加された命令は以下の通りです。
仕様改訂による変更点

CASL IIに追加された命令は以下の通りです。
サンプルコード

以下は CASL II による再帰呼び出しを用いて、ハノイの塔(パズルの一種)を解くサンプルコードの一例です。
サンプルコード

このコードを実行すると以下の結果が得られます(ここで、from A to C は A の一番上にある円盤を C に移すことを意味しています)。