Topページ1−23>1−24>1−25

◆◆1−24 機械語の形式(1)◆◆



ところで,機械語に翻訳された命令はいったいどのような形式に
なっているのでしょうか。

COMETU機械語には,次のような2つの形式があります。

1語命令の形式

2語命令の形式

例えば,「レジスタGR1とGR2を加算しなさい」という命令を
アセンブラ言語機械語で表すと次のようになります。

アセンブラ言語→機械語@

レジスタレジスタの演算は,「1語命令」になるということが
仕様で定められています。ですから機械語に直したときに
全部で16個の1と0が並びます(つまり16bitです)。

この時,左端から8つ目までの8ビット(00100100)において,
加算しなさい!」という命令を表しており,続く4ビット
(0001)がGR1を,最後の4ビット(0010)がGR2を表している
のです。

なお,各機械語命令を機械語に翻訳した際のビット構成は,
巻末の「命令語の構成」をご参照ください。

では,次に「レジスタGR2の内容から主記憶の100番地
(絶対アドレスが100)の内容を引き算しなさい」と
いう命令をアセンブラと機械語で表してみましょう。

アセンブラ言語→機械語A

レジスタ主記憶間の演算は,「2語命令」になるということ
が仕様で定められています。ですから機械語に直した時に
16個の1と0の列が2つ並びます。

この時,1語目の左端からの8ビット(00100001)において,
引き算をしなさい(SUBはSUBTRACT(引き算)の略です)」
という命令を表しており,続く4ビット(0010)がGR2を,最後の
ビット(0000)は全部0なので「インデックスレジスタ指定はない
(つまりレジスタは1つしか使わない)」ということを表しています。
また,2語目は16ビット全てを使って主記憶アドレスを表して
おり,0000000001100100で絶対アドレスの100番地を表して
いるのです((100)10は16進数で(0064)16ですね)。

なお,実際にプログラムを作成する際には,絶対アドレス
ではなく,ラベルを指定します。
しかし,ラベルは最終的
にはアセンブラによってアドレスに変換されるのです。



←前へ 次へ→

TOPページへ