コンピュータ・アーキテクチュア第10回

               (10)2016.12.12
藤木 文彦


 今週は先週に引き続き、CPUが命令を実行する過程を説明します。

  16ビットCPU 8086 の命令体系
(今の64ビットCPUでは命令が拡張されているが基本構造は変らない)

紙を配布しますので、命令の実行過程を図示して提出してください。

2000 番地に置かれたデータをAX レジスタに転送し、

2010 番地に置かれたデータを BX レジスタに転送し
2つのデータを加算した結果を、 AX レジスタに置き
AX レジスタの内容を、 2020 番地に転送する。
という命令を機械語で書き、その様子を、図に示す。
 プログラムの実行過程


 ここで、具体的に、CPUが命令を実行する様子を、簡単な例で説明しましょう。

 「4000番地のデータと、4004番地のデータを加えて、結果を、4008番地に書き出す。」

 という命令があったとします。
 これを、次のように書くとします。( [ ] は、そのアドレスにあるデーを現しますが、詳細は後で説明します。)

 [4000] + [4004] −> [4008]

CPUは、次のような順序で命令を実行していきます。

(1) IPレジスタ(次に実行する命令のアドレスを示すレジスタ。)の示すアドレスを、命令読み込み位置として指定する。
(2) 命令を読み込み、解釈する。
(3) データの読み込み位置を示すアドレスレジスタを指定する。
(4) データを読み込むアドレスを指定する。
(5)(6) 指定のアドレスから、データを、汎用レジスタに読み込む。
(7) ALUに指定の演算を指示
(8)(9) 指定の汎用レジスタの内容をALUに送って演算を行う。
(10) 演算結果を汎用レジスタに書き戻す。
(11) 汎用レジスタのデータを、指定のアドレスに書き戻す。

(注)上記の動作は、1つの命令では出来ず、複数の命令を実行することになりますが、煩雑になるので、命令の読み込みは、最初の1回だけ掲げました。











 今日の課題 第10回 12.12



タイトル  arch10         宛先 fujiki.kougei@gmail.com


宛先   fujiki.kougei@gmail.com
タイトル arch10

課題:

4000番地に置かれたデータ(16ビット)と。4010番地に置かれたデータを加え、それから4020番地に置かれたデータを引いた結果を4030番地に書き戻す命令をアセンブリ言語で書きなさい。

inserted by FC2 system