Subsections
教科書の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
2006-02-25