プログラムはハードウエアを動作させるものです。
なので、プログラムを作るためには、
ハードウェアに関する情報が必要です。
ただし、ハードウェアの詳細な回路図とにらめっこする必要はありません。
プログラムを作るのに必要なハードウェアの情報は7つだけです。
【CPUの情報】
・CPUの種類
・クロック信号の周波数
【メモリーの空間】
・アドレス空間
・1つのアドレスに記憶できる情報のビット数
【I/Oの情報】
・I/Oの種類
・アドレス空間
・接続されている周辺装置
CPUの種類によって使用されるマシン言語が決まってます。
CPUの種類が違えば同じ0101010でもどう解釈するかが違ってきます。
足し算と解釈するCPUもあれば、I/Oへの出力と解釈するCPUもあります。
Z80 CPUのためのマシン語を使います。
クロック信号の周波数とは、クロック・ジェネレータからCPUに与えられる電気信号の周波数のことです。
メモリーのアドレス空間とは、メモリーの中にあるデータの格納場所を指定するアドレスの範囲のことです。
私たちのマイコンには0番地〜255番地のメモリ空間があり、1つの番地に8ビットの命令やデータを記録できます。
接続されているI/Oの種類とは、マイコンと周辺装置を接続するI/Oの種類のことです。
私たちのマイコンには8ビットのレジスタを4つ持った「Z80 PIO」というI/Oが1つだけ搭載されています。
CPUからI/Oのレジスタを操作することで、I/Oの機能を設定することや、周辺装置とデータを入出力することができます。
I/Oのアドレス空間とは、I/Oのレジスタを指定するためのアドレスの範囲のことです。
Z80 PIOには、0番地〜3番地までのアドレス空間があり、
1つの番地で1つのレジスタを指定できます。
メモリーはどの番地でも命令やデータを記憶するという同じ役割を持っていますが、
I/Oは番地が異なると(レジスタの種類が異なると)役割が違ってきます。
私たちのマイコンでは、0番地に「Aポート・データ」、1番地に「Bポート・データ」
、2番地に「Aポート制御」、3番地に「Bポート制御」というZ80 PIOのレジスタが割り当てられています。