アプリ版:「スタンプのみでお礼する」機能のリリースについて

レジスタペアとは何なのでしょうか?ふつうのレジスタ(A,Bなど)と違いはあるのでしょうか?

LD DE,0000H とあった場合はDEというレジスタペアに0000Hを入れるということですか?

A 回答 (2件)

こんにちわ。



非常に懐かしい質問のような・・・


Z80系の場合、レジスタはおおまか以下のようになっています。

A(F)
BC
DE
HL

(IXとかもありますが割合)

このうち、AFのうちAは、8bitレジスタ、BC~HLまでは
それぞれ8bitレジスタと16bitレジスタを兼ねます。
この兼ねるレジスタのことを、レジスタペアといいます。

ですので、おっしゃるとおり、LD DE, 0000Hは
DE=0000H であるのですが、D=00H、E=00Hの両方を一緒にやることに
なります。

ここで、レジスタをいくつかあげましたが、疑問が出てくると
思いますが
A(F) と記載されているのも、レジスタペアとしては代入
できないのですが、スタックを用いて操作ができます。
F=フラグレジスタですので、通常は読み書きできないはずですが・・

LD BC, 0001H
PUSH BC
POP AF
とやるだけで、F に 01H を書き込むことができます。

ちなみに、レジスタペアは、レジスタとしての回路を節約
するだけではなく、命令セットをシンプルにしたり、間接的に
8bit単位ではありますが、ビット演算をしやすく(しなくて済む)
する為に、用いることができます。

例えば・・・

512 を 256 で割るには・・・
LD DE, 0200H

で、D に答えがかえってきます。
(ただし、16bitから8bitにもなってしまいます)

LD A,D 等して、取り出すことも可能です。

もちろん、その逆も可能で
LD B, 01H
LD C,20H
をすれば、BCに0120Hがはいるはずです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
ふつうのレジスタよりもbit数が多いんですね。

お礼日時:2012/11/07 22:34

機械語の話をするなら, 対象とする CPU を明示しておかないとだめだよ (まあ LD と書いてる時点で Zilog であることはわかるんだけど) と言いつつ



イメージとしては
もともと 16ビットのレジスタペア (BC/DE/HL/AF) が存在するんだけど, その上位 8ビットと下位 8ビットを別々に各レジスタとしてアクセスできる
と思った方が簡単かも.

この辺の構成は 8080 だか 8008 だかから今に至るまで連綿と受け継がれてたりします.
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
CPUの情報書いてませんでしたね、申し訳ありませんでした。CPUはZ80でした。

お礼日時:2012/11/07 22:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!