Subsections

3 [例題1]加算

教科書 [1]のList5-1のプログラムを例にして,加算方法について説明する.

3.1 高級言語との違い

高級言語の場合,加算は,
	
	wa=a+b;
のように書けばよい.数式と同じように書けば,a+bを実行し,その結果を変数waに 格納する.

しかし,アセンブラーでは,こんなに簡単ではない.加算はCPUで行うが,そのためのデー タはCPUが持っているメモリーであるレジスターを使って計算を行う.そのため,次のよ うな手順が必要である.

  1. 計算の対象のデータを,メモリーから,レジスターにロードする.
  2. 計算を行う.計算結果は,レジスターに蓄えられる.
  3. レジスターに蓄えられた計算結果をメモリーにストアーする.

全ての計算は,レジスターを通して行われるので,このような手間が必要なのである.こ れは,コンピューターのハードウェアーがそうなっているからである.アセンブラー言語 は,コンピューターのハードウェアーを反映しているのである.アセンブラー言語でプロ グラムをする場合,ハードウェアーの思い浮かべれば,高級言語との違いが明確になる.

実際,高級言語ではコンパイラー2が,レジスターの処理とかの機械語のプログラムに直している.これは, 同じハードウェアーで計算するので,やはり,高級言語と言えども最終的にはレジスター を使っているのである.

3.2 プログラムの構造

まず,リストを見て,プログラムが図3の構造になっているこ とを理解しなくてはならない.プログラムは,訳の分からない呪文が連なっているのでは なく,ちゃんと整理すれば理解できる.まずは,これが第一歩である.
図 1: 教科書のList5-1のプログラムの構造.
\includegraphics[keepaspectratio, scale=1.0]{figure/REI5-1.eps}

3.3 フローチャート

このプログラムのフローチャートを図2に示す.このプログ ラムは簡単で,水が上から下に流れるように命令部が順番に実行されるだけである.この ように,書かれた順にプログラムが実行される構造を「順次」と言う.
図 2: 教科書のList5-1のプログラムのフローチャート.
\includegraphics[keepaspectratio, scale=1.0]{flow_chart/REI5-1.eps}



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2006-02-08


no counter