書籍概要

基本情報技術者試験 らくらく突破

[改訂3版]基本情報技術者らくらく突破CASL II

著者
発売日
更新日

概要

基本情報技術者試験の午後問題対策シリーズ「らくらく突破」のCASLⅡバージョンが,大幅にパワーアップしました。これまでどおり,アセンブリ言語の基礎やCASLⅡの文法はしっかりと押さえつつ,さらに実力がつくように,実際の問題を使った演習を書き下ろしにて追加。基本演習と発展演習の2つで,より合格に近づくための実力が身につけられます。
また,さらに読みやすく,わかりやすくなるように,試験内容に変更がない部分もデザインを全面リニューアルしました。これからCASLⅡで午後試験突破を目指す人に必携の1冊です。

こんな方におすすめ

  • 基本情報技術者の午後試験をCASLで受験する方
  • JavaやC言語で受験する方(アセンブラの基礎学習のために)
  • CASLをとおして,アセンブラ言語の基本を学びたい方

著者から一言

本書は,基本情報技術者試験で出題されるアセンブラ言語CASL IIの受験に必要な学力の達成を目的として編まれた参考書です。平成13年度の試験から,それまでのCASLの仕様が変更され,それがCASL IIとして登場する運びとなりました。本書は,もともと平成元年に刊行された『CASLの完全解析』が前身となって,仕様変更を機に改訂されたものです。平成元年から平成最後の年まで,長年にわたって読者の幅広いご支持を受けて参りました。読者のみなさまのご支持をより強固なものとし,CASL II受験者の裾野拡大を図るべく,今般,再改訂版を出版する運びとなりました。
もちろん,本書がこれまで持っていた次のような特徴は,本改訂版においてもそのまま堅持することとしました。

  1. アセンブラ言語によるプログラミングの本当の楽しさを味わえる。
  2. まったくの初心者を,まったくの初歩レベルから始めて,合格に必要な実力を身につけるところまで無理なく引き上げる。
  3. CASL IIの解説書としての性格だけではなく,既往問題の詳しい解説を試みることによって,問題集としての性格も兼ね備える。
  4. 命令の基本的な使い方を整理した“基本パターン”,命令の応用的使い方を整理した“応用パターン”,そしてポイント欄を設けることによって,試験の直前対策として拾い読みできるようにする。

本書の構成は以下のようになっています。

  • 第1章:CASLIIによるプログラミングの全体的なイメージをつかまえてもらいます。
  • 第2章:アセンブラ言語でプログラムを作る場合にはどうしても,2進法及び16進法という数の表現法に通じている必要があります。その説明をわかりやすく詳細に行います。
  • 第3章:CASLIIにおける個々の命令の意味及び使い方を豊富な例を交えながら解説します。
  • 第4章:豊富な既往問題を8つのテーマに整理したうえで,学んだ文法を使えるようになるためのコンパクトな問題を配しました。
  • 第5章:前章のテーマに沿って,より実践的な問題を配し,合格への実力アップを目指します。

なお,上記の特徴に加えて,次のような工夫も凝らしました。すなわち,本改訂版では,CASL仕様の既往問題の中からもいくつかの良問を厳選し,それらをCASL IIの仕様に沿って改題いたしました。その上で,第4章,第5章の例題プログラムについてはすべてCASL IIのシミュレータで動作確認を行っております。
アセンブラ言語を学習することは,コンピュータそのものの仕組みや情報処理の世界を深層において理解する上で非常に役に立ちます。CASL IIを選択したことは,読者のみなさまにとってはたいへん幸運といえます。本書が,たくさんの合格者が輩出するのに役立ち,情報社会についてのより深い勉強に向けての扉を開く契機ともなっていただければ,執筆者としてこれに優る慶びはありません。
(本書「はじめに」より)

目次

  • はじめに

第1章 CASL IIとはこんなもの

1.1 コンピュータで計算を行うには

  • 1.1.1 コンピュータとはどんな装置か
  • 1.1.2 プログラムとデータは記憶装置に格納される
  • 1.1.3 演算はレジスタで行われる
  • 1.1.4 よりアセンブラ言語らしく
  • 1.1.5 A+B→CをCASL IIで書くと

1.2 COMET IIの記憶装置とレジスタ

  • 1.2.1 COMET IIの記憶装置の構造
  • 1.2.2 記憶の最小単位はビットである
  • 1.2.3 演算に使えるレジスタは8つ
  • 1.2.4 命令の実行順序を制御するプログラムレジスタ

1.3 アドレス修飾をマスターしよう

  • 1.3.1 アドレス修飾で番地を水増し
  • 1.3.2 CASL IIでのアドレス修飾の表現法
  • 1.3.3 アドレス修飾はこう使う
  • 1.3.4 アドレス修飾でプログラム作成効率がアップ

1.4 コンピュータは0と1の世界に生きる

  • 1.4.1 機械語は0と1の組み合わせでできている
  • 1.4.2 CASL IIから機械語への変換
  • 1.4.3 CASL IIの命令は3種類ある
  • 1.4.4 プログラム全体を見てみよう

第2章 2進法と16進法を征服する

2.1 10進数だけが数ではない

  • 2.1.1 10進法をあらためて考えれば
  • 2.1.2 2進法とは
  • 2.1.3 8進法とは
  • 2.1.4 16進法とは
  • 2.1.5 10進数から2進数への変換
  • 2.1.6 指による簡便な方法
  • 2.1.7 10進数から8進数,16進数への変換
  • 2.1.8 2進数の加算規則

2.2 負数は補数で表す

  • 2.2.1 負数の補数表現とは
  • 2.2.2 2wに対する補数の作り方
  • 2.2.3 2進数の減算は補数を利用できる
  • 2.2.4 16ビットで扱える数の範囲

第3章 CASL IIプログラムの書法

3.1 プログラムはこう書こう

  • 3.1.1 コーディングとは
  • 3.1.2 命令の表記法に慣れよう

3.2 アセンブラに対する指示はアセンブラ命令で

  • 3.2.1 START命令
  • 3.2.2 END命令
  • 3.2.3 DC命令
  • 3.2.4 DS命令
  • 3.2.5 フラグレジスタ

3.3 データのやりとりは転送命令で

  • 3.3.1 LD(LoaD)命令
  • 3.3.2 ST(STore)命令
  • 3.3.3 LAD(Load ADdress)命令
  • 3.3.4 LD命令とLAD命令の表記法

3.4 算術加算・減算と論理加算・減算

  • 3.4.1 ADDA(ADD Arithmetic)命令
  • 3.4.2 SUBA(SUBtract Arithmetic)命令
  • 3.4.3 ADDL(ADD Logical)命令
  • 3.4.4 SUBL(SUBtract Logical)命令

3.5 数の比較は比較演算命令で

  • 3.5.1 CPA(ComPare Arithmetic)命令
  • 3.5.2 CPL(ComPare Logical)命令

3.6 分岐命令で好きなところへジャンプ

  • 3.6.1 JMI(Jump on MInus)命令
  • 3.6.2 JPL(Jump on PLus)命令
  • 3.6.3 JNZ(Jump on Non Zero)命令
  • 3.6.4 JZE(Jump on ZEro)命令
  • 3.6.5 JOV(Jump on OVerflow)命令
  • 3.6.6 JUMP(unconditional JUMP)命令

3.7 論理を操る

  • 3.7.1 論理演算とは何か
  • 3.7.2 AND命令
  • 3.7.3 OR命令
  • 3.7.4 XOR(eXclusive OR)命令

3.8 けたの移動で乗算や除算ができる

  • 3.8.1 SLA(Shift Left Arithmetic)命令
  • 3.8.2 SRA(Shift Right Arithmetic)命令
  • 3.8.3 SLL(Shift Left Logical)命令
  • 3.8.4 SRL(Shift Right Logical)命令

3.9 プッシュとポップ

  • 3.9.1 スタックとは何か
  • 3.9.2 PUSH(PUSH effective address)命令
  • 3.9.3 POP(POP up)命令

3.10 副プログラムを使ってむだを省く

  • 3.10.1 副プログラムとは何か
  • 3.10.2 CALL(CALL subroutine)命令とRET(RETurn from subroutine)命令
  • 3.10.3 汎用レジスタを多目的に使う

3.11 マクロ命令を使う

  • 3.11.1 データの入力はIN命令で
  • 3.11.2 処理結果の出力はOUT命令で
  • 3.11.3 もうひとつのスタック操作命令

第4章 CASL IIプログラミングの基本を学ぼう

4.1 入出力処理の基本

  • 4.1.1 入出力の基本
  • 4.1.2 10進文字列の編集
  • 節末問題

4.2 ビット列操作の基本

  • 4.2.1 パリティセット
  • 4.2.2 マスク処理
  • 節末問題

4.3 数の変換の基本

  • 4.3.1 16進数字の2進数データへの変換
  • 4.3.2 10進数字の2進数データへの変換
  • 節末問題

4.4 大小比較の基本

  • 4.4.1 大小判定
  • 4.4.2 最大値と最小値
  • 節末問題

4.5 テーブル操作の基本

  • 4.5.1 文字の数え上げ
  • 4.5.2 テーブル要素の参照
  • 節末問題

4.6 四則演算の基本

  • 4.6.1 乗算
  • 4.6.2 除算
  • 節末問題

4.7 文字列処理の基本

  • 4.7.1 文字列圧縮
  • 4.7.2 タブの設定
  • 節末問題

4.8 データ構造の基本

  • 4.8.1 リスト処理
  • 4.8.2 待ち行列処理
  • 節末問題

第5章 実戦力をつけよう

5.1 入出力処理

  • 5.1.1 浮動挿入編集
  • 5.1.2 16進表記のメモリダンプ

5.2 ビット列操作

  • 5.2.1 循環シフト
  • 5.2.2 2次元配列の処理

5.3 数の変換

  • 5.3.1 入力データの圧縮処理
  • 5.3.2 文字コードの16進表現

5.4 値の大小比較

  • 5.4.1 最大値・最小値・平均値
  • 5.4.2 小数部の処理

5.5 テーブル操作

  • 5.5.1 単語管理テーブルの作成
  • 5.5.2 メモリプールの管理

5.6 四則演算

  • 5.6.1 商品コードの検査数字
  • 5.6.2 倍精度整数の加算

5.7 文字列処理

  • 5.7.1 タブの設定
  • 5.7.2 10進文字列の処理

5.8 データ構造

  • 5.8.1 二分木のリスト表現
  • 5.8.2 二分探索法
  • 付録 アセンブラ言語の仕様
  • 索引

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2019年3月12日最終更新)

P.182 「解答と解説」の問題1

解答 ウ
解答

P.265 「解答と解説」の問題8

解答 イ
解答

商品一覧