第二回講義 「基礎知識1」

今回の講義内容は、基礎知識1という事で、極々簡単な話をするだけです。


まずは、レジスタというものについてから説明しましょう。

レジスタというのは、言わば変数みたいなものです。

というより、

既にCPUによってその働きが決定されている変数みたいなもの

とでもいいましょうか、まぁ、何らかのデータ(実数でも整数でも、文字でもなんでもござれ)なやつです。

さてさて、コンピュータの内部では、我々人間が指し示す所の「数値」とか「文字」とかというのは、存在してませんけども、それをそう判断するのは、人間の勝手。

つまりは、人間が「小数にしたい」といえば、「小数」として扱えますし、「文字として扱いたい」といえば、文字にもなってくれます。

まぁ、この事はおいおいわかることでしょうから、ここでは詳しい説明は省いたとして、だから「何らかのデータ」を「保持」できる「変数みたい」なものがレジスタなわけです。

で、そのレジスタっちゅうのは以下のようなものがあります。


No.

名称

ビット数

役割

1

AX(アキュムレータ レジスタ)

16(H/L)

汎用。加減算にも用いるし、一番よく使うと思う。

アドレス指定には使えない。

2

BX

16(H/L)

汎用。アドレス指定にも使える。

3

CX(カウンタ レジスタ)

16(H/L)

汎用。カウンタによく使う。アドレス指定には使えない。

4

DX

16(H/L)

汎用。I/OPort系でも使う。AXに次によく使うかな?

アドレス指定には使えない。

5

SI(ソースインデックス)

16

汎用。アドレス指定が殆ど。DIとセット利用が多い。

大抵は、DS:SIとしてポインタ指定する。

6

DI(ディストネーション)

16

汎用。アドレス指定が殆ど。SIとセット利用が多い。

大抵は、ES:DIとしてポインタ指定する。

7

BP(ベースポインタ)

16

汎用。スタック系だけど、あんまし使わない。

暗黙下にSS:参照以外はBXとほぼ同じかもしれない。

8

SP(スタックポインタ)

16

スタック専用。初心者は触らない方がいい。

一応、汎用にもできるけど、普通はしない。

CとかPascalとかでの引数云々では使うけどね。

9

CS(コードセグメント)

16

セグメント指定専用。直接操作しないのが定石。

CS:IPで次に実行するアドレスを指定する。

特殊な場合を除いて、値は変えない。

10

DS(データセグメント)

16

セグメント指定専用。ポインタ参照でよく使う。

DS:SIとか、DS:BXとかとして使う事が多い。

DS:SIを読み込み専用として使う人も多い。

11

ES

16

セグメント指定専用。ポインタ参照でよく使う。

ES:SIとか、ES:BXとかとして使う事が多い。

ES:DIを書き込み専用として使う人も多い。

12

SS(スタックセグメント)

16

セグメント指定専用。スタックポインタ専用。

SS:SPとしてスタックポインタを表す。

普通は、直接内容を触らない。

13

F(フラグ レジスタ)

16

フラグの内容を保持。

部分的に直接、内容を操作できる。

AXに反映させて参照する方法もある。


こんなんです。ちなみに、(H/L)っていうのは、AX = AH | ALと分けられるという意味をもってます。

つまり、


             AXレジスタ

   ┌────────────┴────────────┐

    _ _ _ _ _ _ _ _ − _ _ _ _ _ _ _ _

   └─────┬─────┘ └─────┬─────┘

      AHレジスタ       ALレジスタ


っていうように、上位8ビットをAH、下位8ビットをALに分けて、両方合わせてAXってなるようになっています。

基本的に、8086は16Bit-CPUですから、レジスタも16。まぁ、アドレスバスに関しては、32ぽっい20だったりしますけど(--;

通常は A800:0024 とかと表記するため 32bit で記述しているように見えるものの
実際は A8024 と 20bit で解釈しないといけない、という意味です(2012/12/8追記)

殆どのデータのやりとりは、16ビットか8ビットでしますね。

16の場合ですと、全てのレジスタが相互に自由にデータをやり取りできるんですけど、8ビットの場合だけ、8ビット同士は自由なんですけど、8⇔16の場合だけ8⇒16とか、16⇒8とかという変換作業みたいな事が必要になります。


という事で、このまま続けると、大変大きくなってしまいますので、次回講義内容は「基礎知識2」という事で、命令についての説明です。


Back


手元に実機も実行環境もありませんのでサポート不可です。

文章は執筆当時のものをそのまま掲載していますので、時代・時節と合わない表現が含まれています。

また、一部に半角カナ文字が使用されています。