以前も述べたように情報処理技術者試験では、COMET IIという仮想的なコン
ピューター(ハードウェアー)上で動作するCASL IIというアセンブラ言語が使
われます。わざわざ、世の中で使われているアセンブラ言語を使用しないで、
仮想的なものを使うのは、以下の理由によります。
- アセンブラ言語は、機械語と1対1に対応している。機械語はCPU毎に異
なる。そのため、世の中にはCPUの種類だけ、アセンブラ言語がある。C
言語やFORTRANが1種類しかなく、コンパイルすればどのCPUでも、動作
するのと状況は全く異なる。
- 情報処理試験でも、アセンブラ言語を出題する必要がある。CPUの種類
毎に出題するのは大変だし、実際に市販されているCPUは高機能すぎて、
このような試験に似つかわしくない。
- そのため、機能が限定されたCOMET IIというコンピューターを仮想的
に作り、その上で実行されるアセンブラ言語が決められた。
要するに、単純な機能の試験を行いやすいアセンブラ言語が必要だったのです。
そのようなわけで、初心者がアセンブラ言語を学習するにはうってつけです。
このCOMET IIのメインメモリー(主記憶装置)は、アドレスが16ビット、メモリー
16ビットです。すなわち、図1のようになっています。
- アドレスが16ビット、メモリーが16ビットになっていることを確認し
ましょう。
- アドレス1個あたり、1個のデータがあります。
この図を見ても分かるように、2進数表示は紙面の面積が必要で紙の無駄です。
もう少し紙を節約し、更に分かりやすくするために、通常は図
2の16進数表示が使われます。
COMET IIでは、データは16ビット単位で扱われます。この16ビットの単位を1
ワード(1語)と呼びます。この1ワードは、教科書に書かれているように、便宜
上、上位8ビットと下位8ビットに分けています。そうして、最下位のビットか
ら番号がつけられています。最下位のビット番号が0で、最上位が15です。コ
ンピューターの世界では、整数は0から数えることが多いので、それに慣れま
しょう。こうすると便利なことは、整数を表す場合、ビット番号が2進数の指
数を表します。すなわち、第0ビットは、第7ビットは、第15ビット
はの桁を表します。便利でしょう。
CASL IIのプログラムではよほどのことが無い限り、整数しか扱いません。ひ
とつの整数は、メモリーのひとつのアドレスに格納されます。2進数で表現し
た整数がそのまま、メモリー上のデータとなります。メモリーに格納された整
数の様子を図
3に示します。ただし、符号付整数か、符号
無し整数かの判別は、プログラム次第です。
その整数の範囲については、教科書の通りです。電卓で自分で確認してみよう。
図 3:
整数を格納しているメモリーの状態(16進数表示)
|
COMET IIのメモリーは先ほど述べたとおりです。皆さんが使っているIntelの
Pentiumのメモリーはどうなっているのでしょうか?。まず、アドレスバスは32
ビットです。通常のコンピューターのデータは、8ビット単位で扱われ、その
単位を1 Byteといいます。一つのアドレスに1 Byte(8 bits)でデータが格納さ
れます。Pentium のアドレスバスは32ビットので、それが取り扱うことができ
るデータ数は、
です。
でG(ギガ)
2なので、4 GBytesのデータを扱うことができます。
また、データバスも32 bitsです。一度に32 bitsのデータを取り扱うことがで
きるから、32bit CPUと呼ばれています。ここで、ひとつ疑問があります。1つ
のアドレスには8 bitsのデータしか格納されないのに、32 bitsのデータを一
度に取り扱うのは変です。どうやっているかというと、pentiumでは一度に4つ
のアドレスのデータを読み書きできるのです。
ひとつのアドレスに、32 bitsを格納できるようにすれば、問題がなくなるよ
うに考える人も居るでしょう。そうすると他の問題が生じます。今まで、8
bits単位でデータを取り扱ってきたので、過去のデータやソフトウェアーとの
互換性がなくなる可能性があります。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年9月7日