機械語命令の書き方は,オペランドの指定の仕方により,以下の5通りに分類できる.
ラベル欄 | 命令コード欄 | オペランド欄 | 注釈欄 |
---|---|---|---|
[label] | OP | r1,r2 | ;レジスタ同士の操作 |
[label] | OP | r,adr[,x] | ;レジスタとメモリーの操作 |
[label] | OP | adr[,x] | ;メモリーの操作 |
[label] | OP | r | ;レジスタの操作 |
[label] | OP | ;メモリーやレジスタを操作しない |
これを見て分かるように,機械語命令の多くは,メモリーやレジスターを操作する.プロ グラムの目的は,データを処理することで,そのデータはメモリーまたはレジスターに格 納されることからも,そのことが理解できる.
xは指標レジスタを示している.指標レジスタについては,第6回の授業で説明した
が,忘れていると思うので,再度説明する.プログラムを書いているとき,基準点のアド
レスにある値を加算してデータにアクセスしなくてはならないことがある.このようなと
きに指標レジスタを使う.CASL IIでは,オペランド欄に,
adr,x
COMET IIのメインメモリーのアドレスは,16ビットである.従って,アドレスの範囲は, 0〜65535(#0000〜#FFFF)番地となる.このメモリー空間は,20年くらい前の8ビットパ ソコンと同じである.64kバイトです.ちなみに,いま主流の32ビットパソコンのメモリー 空間は32ビットで,4Gバイトにもなる.メモリーにアクセスする場合,番地を指定しなく てはならない.その番地の指定方法を述べる.
教科書に書かれている通り(p.39),アドレスは,つぎに示す3通りの方法で記述でる.最初の2つ
の10進数と16進数を使う場合,絶対アドレスを指定することになる.よっぽどのことがな
いかぎり,絶対番地を指定することはない3.なぜならば,実際のプログラムを実行する場
合,データがどの番地に格納されているかは,プログラマは分からない.プログラム実行
段階で,OSが決めるからである.従って,みなさんは最後のアドレス定数を使うことにな
る.
10進定数 | 10進数の定数を用いる.内容は,教科書に書かれている通 り. |
16進定数 | 16進数の定数を用いる.16進数であることを表すために, 先頭に#を付ける. |
アドレス定数 | ラベル名を指定する.アセンブラーにより,ラベル名がア ドレスに変換される. |
教科のリテラル形式をアセンブルすると,DC命令を使ったのマシン語になる.あと は,教科書の通り(p.39).