手元に実機も実行環境もありませんのでサポート不可です。
文章は執筆当時のものをそのまま掲載していますので、時代・時節と合わない表現が含まれています。
また、一部に半角カナ文字が使用されています。
今回の講義内容は、基礎知識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」という事で、命令についての説明です。
手元に実機も実行環境もありませんのでサポート不可です。
文章は執筆当時のものをそのまま掲載していますので、時代・時節と合わない表現が含まれています。
また、一部に半角カナ文字が使用されています。