|
さて、ここまで読んでくれた皆さんならばおわかりいただけると思いますが、AH=9の システムコールは、'$'があるとそこで表示が終わってしまいます。つまり「I$ am a boy.」と入力して も「I」としか表示されません。機能拡張として'$'が途中にあっても表示がそこで止まらないようにしてみて ください。 いくつかのやり方があると思います。AH=9をやめて、表示部[DISP]のところで1文字 出力のシステムコールを使ってLOOPで回すか、[TOUPPER_20]のstosbのところで、もう表示させてしまう か・・・。 私の個人的な意見を言えば、機能は1つ1つまとめて作った方が後々のために便利ですので前者の方が よいと思います。TOUPPERは大文字の変換部、DISPは表示部として機能は分けた方がよいと言うことです。 もし後者のようにTOUPPERで変換と表示を同時に行おうとした場合、仕様を変更して、表示ではなく文字列 として格納しておきたいと言った場合に、TOUPPERを直さなければならないからです。前者の場合はこのよう な仕様変更があっても、DISPをしなければ何の修正も必要なくなります。このように機能ごとに細かく 分けた方が良いというのは、他の言語にも言えることです。 しかし、アセンブラでのプログラムは、「プログラムを可能な限り小さくしたい」「実行速度をできる だけ速くしたい」という要望があるからこそ、アセンブラを使うと言う場合があります。このような場合に 上述したようなやり方をするとプログラムが冗長になったり遅くなったりしますので、あえて後者のように 複数の機能を1つにまとめてしまう場合もあります。
前ページへ : トップへ : 次ページへ |