教科書のList5-11のプログラムを例にして、文字データを数値データに変換する方法を学
習する。
教科書のプログラムは、
- キーボードから数値を読み込む。読み込まれた数値は、文字コードになり、それ
をラベルBUFFが示すアドレスから格納される。読み込まれた文字数は、ラベ
ルLENに格納される。キーボードから入力する文字は、0〜9と'-'のみである。
- この、BUFFから格納されたLEN個の整数を表す文字列を整数に変換する。
- 変換された整数を汎用レジスターGR0に格納する。
という問題を解く、プログラムである。このプログラムは、教科書のp.118-119のList5-11に示
されている。
このプログラムのフローチャートを図
1に示す。このプログ
ラムの内容については、教科書に沿って説明する。
まずは、教科書p.115の文字を格納するメモリー領域を
BUF DS 256
が気になるところである。この256とはいったい何かである。256=

である。これはコ
ンピューターでよく使われる整数で、多分この場合は1レコードの値と思われる。1回に読
み込まれる最大文字数のつもりであろう(推測)。通常、このようにするとデータ転送の効
率が良いのである。ただ、COMMET IIにはそんな仕様は無いので気にする必要はない。実
際に使われている機器のアセンブラのプログラムを書く場合は、注意が必要である。
後は教科書に沿って説明する。
表 2:
メインルーチンの汎用レジスターとメモリの内容
GR0 |
最終的に、読み込んだ整数になる |
GR1 |
桁の重みを読み出すときに使うインデックスレジスター |
GR2 |
処理の桁を示し、先頭の桁(符号の時もある)がゼロで、1の位がLEN-1とな
る |
GR3 |
処理している桁の整数値 |
GR4 |
その桁の値(桁を表す整数 その桁の重み) |
DATA |
調べるデータの先頭アドレス。 |
BUFF |
読み込まれた整数を文字コードとして格納している先頭のアドレス。 |
LEN |
読み込んだ文字数。 |
表 3:
サブルーチンMULTIの汎用レジスターの内容。このサブルーチン
では
を計算している。
レジスター |
実行前 |
実行後 |
GR3 |
乗算する値(カウンターとして使う) |
0 |
GR4 |
乗算する値 |
除算の結果 |
図 1:
教科書のList5-11のプログラムの構造とフローチャート
|
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成17年2月20日