マイコン教室 

                             Since 07/10/2002     Renewal 07/12/2002

 皆さんはパソコンがどのようにして動くのか考えた事がありませんか?
このコーナーでは、パソコンの基本的な動作原理について勉強してみましょう。



  1.パソコンのしくみ

 パソコンを理解するには、8bitマイコンを勉強すると理解し易くなります。
ここでは、8bitマイコンを例にしてパソコンのしくみを考えてみましょう。
まず、パソコンがいかに処理しているかを考えて見ましょう。よく言われる事に
0と1があります。電気のスイッチをONした場合(電圧が掛かった状態)とOFF
(電圧が切れた状態)した場合の2個のパターンしかありません。これを幾つも
組み合わせてパソコンの言葉にして使います。例えば0001とか1010とか
表現します。私達が普通よく使う10進法や12進法や60進法に対して、2進法
と呼ばれます。しかしこの表現方法は、0と1だけで判り辛いですね。
そこで4桁の2進数が0から16まで表現出来る事から、16進数と言う表現方法
が使われており、パソコンの世界では必需品ですので覚えておきましょう。

これは、0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fと数えます。
Fの上は位が一つ上がり10,11,12,13・・・と言う具合に数えます。
8bitマイコンは、8桁の2進数を一つの言葉の如く処理する事により計算をします。
例えば00000000とか11111111とかこれを先程の16進数で表現すると、
00やFFとなり、これをマイコンの言語いわゆる機械語と称しています。
最近ではマイコンの処理能力を上げる為、16bitから32bitや64bitのマイコンに
世代交替しています

例えば64bitのマイコンでは、64桁の2進数(16進数では、16桁)
を一つの言葉として扱っている訳です。

8bitマイコンに話を戻すと、8桁の2進数これだけでは単に0〜128迄の数字を
表現出来るだけですね。これではパソコンと言えど何も出来ません。
パソコンは、この数字を、一つの命令としたり、メモリーの情報を読み出す番地
としたり、モニター画面に表示する為のキャラクター番号としたり、単に数字として
計算をさせたりして、複合的に活用する事により高度な処理を可能にしています。
この8bitの信号をどの様に活用し処理するかを決めているのが
フラッグと言う信号です。フラッグには、Z,C,P,S,CY4,SUBの6個があり、
これにより処理が正しく実行されます。

[CPUの構成]




  2.CPUの構造と動作

 ここで、この8bitマイコンで使われているCPUの構造を簡単に説明します。
CPUは、LSI(集積回路)の一種ですが、メモリ等に使われるLSIに比べると回路が
遥かに複雑です。数多くのトランジスタを組合せて機能させており、その基本は、
フリップフロップと言う考え方が基本となっています。

フリップフロップと言うのは、簡単に言えば「2進数のそろばん」と思えば判り易いと思います。
そろばんでは、先ず始めに「ねがいましては」と、そろばん玉をRESETしますね。
そして、1円な〜り、2円な〜りと言って計算を進めます。そろばん玉は、各列1個づつです
から1円の場合は、1桁目のそろばん玉を上げます。(00000001)
これに2円を足すには、もう一つ上の位のそろばん玉を上げてやれば
良いわけです。(00000011)
足し算、引き算、掛算、割算ともに一つ玉そろばんをイメージしてみて下さい。

次に、CPUの内部の構成を説明します。
主なものとしては、ALU(演算ユニット)、アキュームレータ(Aレジスタ)、
レジスタB,C,D,E,H,L、SP(スタックポインタ)、PC(プログラムカウンタ)及び、
6個のフラッグから成り立っています。特にALUは、CPUの心臓部です。

[8080A CPUのブロックダイヤグラム]




  3.ALUで何をするの?

ALUを簡単に考えるなら、電卓が入っていると思って下さい。
基本的には、電卓と同じ様な役目をしています。電卓では、加減乗除のキーが
ありますがCPUでは、フラッグがその代わりをしてくれます。
又、数字のキー入力の代わりに、データバスを行き来する8bitのデータがその代わり
となります。システム全体の動作を同期させタイミングを取るために外部クロック信号
(圧電クリスタルの発振信号)を利用しています。Z−80のCPUでは、2MHzのクロック
で動作する設計となっています。後継のZ−80Aでは、4MHzで動作可能です。
このタイミングに合わせてデータバス上をデータが移動すると共に、フラッグが
立てられ指示された処理が進みます。

[CPUの配線]







  4.CPUの言葉とは

ところで、マイコンが処理し理解出来るのは8bitの0と1ですが、これを16進数で
表してみても数字の羅列となり到底人間が理解出来る代物では有りません。
そこで人間が理解出来るように機械語との翻訳が必要となります。
それにはニーモニックと言う言葉を使います。例えば、16進数で「78」と言うのは、
ニーモニックでは、「MOV A,B」 と表現します。この命令は、Bレジスタの8bitデータを
Aレジスタ(アキュームレータ)に転送しなさいと言う命令です。
 注)転送元と転送先は、Dosとは逆表現となります。

「A6」と言う16進数は、ニーモニックでは、「ANA,M」と表現し、Aレジスタ(アキュームレータ)
とM(メモリー)との論理積(AND)をすると言うものです。
命令語には、1バイト(8bit)命令、2バイト命令、3バイト命令と大きく分けて3つの種類の
命令があり、3バイト命令は8bitのメモリー番地を3個必要とします。
下図に命令一覧表を添付します。これらの命令を組合せてプログラムを作ります。

[図−1]


[図−2]


[図−3]





  5.プログラムを作る

 次に、この8bitマイコンを使い簡単なプログラムを作ってみましょう。
1,2,3,4,5,6,7,8の表示が0.5秒間隔で点滅するプログラムです。



[プログラムの内容]
1.HLレジスタ対に1234番地を入れる
2.83EE番地にLレジスタの内容を、83EE+1番地にHレジスタの内容を転送する
3.HLレジスタ対に5678番地を入れる
4.83EC番地にLレジスタの内容を、83EC+1番地にHレジスタの内容を転送する
5.LEDの表示出力をさせる
6.8220番地に飛ぶ
7.Aレジスタにデータ7Fを入れる
8.02番地にアドレスされたI/Oポートに、データバスを通してAレジスタの値を出力する
9.8220番地に飛ぶ
10.AレジスタにデータFFを入れる
11.02番地にアドレスされたI/Oポートに、データバスを通してAレジスタの値を出力する
12.820F番地へ飛ぶ
13.Bレジスタにデータ12を入れる
14.02EF番地へ飛ぶ
15.Bレジスタの値を-1する
16.ゼロでなければ8222番地へ飛ぶ
17.直前のCALLの次の番地にリターンする
これでLEDが点滅するわけです。



 マイコンの概要が少しでも理解して頂ければ幸いです。
もっと詳しく知りたい方は、書店にて専門書を購入して勉強してみて下さい。


◆ 戻る ◆

SINCE 05/21/2002
Copyright(C) 2002 artおじさん