コンピュータ・アーキテクチュア第10回
(10)2016.12.12 藤木 文彦 |
今週は先週に引き続き、CPUが命令を実行する過程を説明します。 |
16ビットCPU 8086 の命令体系
(今の64ビットCPUでは命令が拡張されているが基本構造は変らない)
プログラムの実行過程 |
ここで、具体的に、CPUが命令を実行する様子を、簡単な例で説明しましょう。
「4000番地のデータと、4004番地のデータを加えて、結果を、4008番地に書き出す。」
という命令があったとします。
これを、次のように書くとします。( [ ] は、そのアドレスにあるデーを現しますが、詳細は後で説明します。)
[4000] + [4004] −> [4008]
CPUは、次のような順序で命令を実行していきます。
(1) IPレジスタ(次に実行する命令のアドレスを示すレジスタ。)の示すアドレスを、命令読み込み位置として指定する。
(2) 命令を読み込み、解釈する。
(3) データの読み込み位置を示すアドレスレジスタを指定する。
(4) データを読み込むアドレスを指定する。
(5)(6) 指定のアドレスから、データを、汎用レジスタに読み込む。
(7) ALUに指定の演算を指示
(8)(9) 指定の汎用レジスタの内容をALUに送って演算を行う。
(10) 演算結果を汎用レジスタに書き戻す。
(11) 汎用レジスタのデータを、指定のアドレスに書き戻す。
(注)上記の動作は、1つの命令では出来ず、複数の命令を実行することになりますが、煩雑になるので、命令の読み込みは、最初の1回だけ掲げました。
タイトル arch10 宛先 fujiki.kougei@gmail.com
宛先 fujiki.kougei@gmail.com
タイトル arch10
課題:
4000番地に置かれたデータ(16ビット)と。4010番地に置かれたデータを加え、それから4020番地に置かれたデータを引いた結果を4030番地に書き戻す命令をアセンブリ言語で書きなさい。