資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。

多分合ってないぞ!!!。いま一生懸命勉強中だ! (T∀T))間違ってるとこみつけたら、板にツッコミ入れよう!)

・・・ふっ・・・ 所詮笑われてナンボじゃい!。 (T∀T) 

8086(リアルモード)時のレジスタ達

8086は16ビットCPUなので、全て16ビット。 ※32ビットも使えるらしいが、かえってややこしくなるので全部16ビットとしておくほうがよさそうらしい。

汎用 anchor.png Edit

  • AX
  • CX
  • DX
  • BX
  • SI
  • DI

の六つ。基本的にはなにに使っても構わないらしい。

ちなみに上記レジスタがABCD順に並んでいないのはわけがある。A〜Dまでのレジスタは別にABC順で作られたわけではなく、おのおのある用途用に作られている。呼び名の略がたまたまABCDになっているだけなので誤解のなきよう

BXやCXでももちろん計算等ができるが、元来は「BX はメモリアドレスの指定用」。「CX はループカウンタ用」として作られている。

なので、どうしてもの場合以外は計算やビット操作・退避などにはAXとDXだけで行うのが望ましい。(そういう意味ではAXとDXは汎用中の汎用とも言える)

その意味で考えると、AXとDXとSIとDIが「汎用の中の汎用」らしい

Page Top

8ビットレジスタとして使う anchor.png Edit

AX〜DXの汎用レジスタを二つに割って、独立した8ビットレジスタとして使うことが出来る。

指定の方法は、AXの上半分をAH、下半分をALとするらしい。(HighとLowという意味らしい)

「独立」と言ったが、場所は同じ。

つまり、AHに0x1Fを代入。ALに0x3Aを代入する。当たり前だが、AHレジスタやALレジスタを操作しなければ値は変わらない。で、ここでAXレジスタを読み出してみると、0x1F3Aとなる。

Page Top

セグメントレジスタ anchor.png Edit

CS,DS,ES,SS

CS:今動いているプログラムのセグメント値。自動的に設定され、通常は触らないもの

DS:レジスタ・メモリ間でのやりとりの時に使われる。プログラムではなくデータのあるセグメントアドレスを管理している

ES:通常はDSレジスタの補助・予備として使用される

SS:スタックの番地を管理している

Page Top

インデックス anchor.png Edit

;SI,DI

特殊 BP,SP,IP

Page Top

フラグレジスタ anchor.png Edit

FLAGS

フラグ用レジスタ。レジスタとは言うが、ここに値をセットしたり等の使い方はしない(できない?)ようだ。

通常、レジスタはそれ1つで計算したりいろいろできるようだが、フラグレジスタは特殊で、ビットひとつひとつに意味がある。

各フラグ(16ビットレジスタだから、16本?)は、例えば汎用レジスタを使って計算を行ったりした場合等に、ある条件を満たすと0になったり1になったりする。

普通は参照しかしないものらしい。

Page Top

スタックポインタ anchor.png Edit

SP

SSとともにスタックの番地を管理するレジスタ。

具体的にスタックの番地はSS:SPになる。

スタックについてはNASK​/スタック参照。

Page Top

勉強中 anchor.png Edit

・・・あぁぁ! こんどはスタック!? わー! むずかしー!(T∀T)


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 2979, today: 1, yesterday: 1
Last-modified: 2012-10-22 (Mon) 21:57:54 (GMT) (2812d) by