━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ いざというときに役立つMS−DOS 執筆:速星 千里 特別号(2004.03.13) アセンブラへの招待(2) 5863部配信 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <目次> ■ はじめに ● 3〜4月の発行予定(修正版)(再掲) ■ 文字列を出力するプログラム(2) ■ ゲームの作成 ● 作成のヒント ■ アセンブラ関連のおすすめ資料 ● Webページ ● 書籍 ● ソフト ─ PR ──────────────────────────────── ●申告・決算作業が終わらない。本業に専念できない。・・・・・・・・・・ ●パソコン会計は難しそうだ。経理は実は苦手だ。・・・・・・・・・・・・ ●うちの会社に合った会計ソフトが見つからない。・・・・・・・・・・・・ →まとめて面倒見ます。『弥生会計04』資料のご請求はこちらから。 http://211.10.20.135/a/a.cgi?k30175Gm01507 ─ PR ──────────────────────────────── ─ PR ────────────────────────────────  ☆  ┌―<< 世界が面白くなるメルマガ&サイト! >>―┐☆ ┌―☆―┘★★ ワールド ダイジェスト メールニュース ★★└―☆―┐ │    1週間の国際ニュースを短くまとめて毎週月曜日に発行    │ │  ホームページにも映画紹介や紛争解説などのコンテンツが満載!――┘ └―――――――――> http://www.w-digest.com/ ─ PR ──────────────────────────────── ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ はじめに ------------------------------------------------------------------------ 皆さん、こんにちは。速星です。 当メルマガでは、創刊1周年を記念し、「アセンブラへの招待」と題した特別号 を、8日と今日の2回に分けてお送りしています。 2回目の今日は、DEBUGコマンドで作成できる実用プログラムの例を紹介します。 なお、DEBUGコマンドは、使い方によってはシステムやデータを破壊する危険性 もある強力なコマンドです。 前号同様、今号の内容を実践する際は、十分に注意して下さい。 ------------------------------------------------------------------------ ● 3〜4月の発行予定(修正版)(再掲) 3〜4月は、都合により休刊、および配信日の一部変更をさせていただきます。 当初予定から、1周年記念特別号を2週に分けて発行するように変更しました。  3月01日:第45号(プロンプト)  3月08日:1周年記念特別号(アセンブラへの招待(1))  3月13日:1周年記念特別号(アセンブラへの招待(2))  3月20日:第46号(リダイレクトとパイプ(3))  3月27日:第47号(バッチファイル開発ツール)  4月 3日:休刊  4月10日:第48号(MS−DOSの実体)  4月17日:休刊(情報処理技術者試験前日) (以降は通常通り発行の予定) 詳細は、当メルマガのホームページでご確認下さい。 http://www.geocities.co.jp/Bookend-Hemingway/4963/column/dos/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ 文字列を出力するプログラム(2) ------------------------------------------------------------------------ 前号で、文字列「Hello, world!」を出力する簡単なプログラムを作成しました。 第45号で説明したエスケープシーケンスも文字列の一種ですから、前号と同様 の方法を用いて、エスケープシーケンスを出力するプログラムを作ることができ ます。 つまり、文字色や背景色を変えたり、カーソルを移動したりするプログラムは、 これまでに説明したことの応用で作成できるのです。 (WindowsMe,2000,XPは標準ではエスケープシーケンスを利用できません。詳細 は第45号をご確認下さい) では、前回の復習を兼ねて、文字色を赤にするエスケープシーケンス「ESC[31m」 を出力するプログラムを打ち込んでみましょう。 DOS窓でDEBUGコマンドを実行して、表示が以下と同様になるように打ち込ん でいって下さい。 D:\>debug -a0100 29E5:0100 mov ah,09 29E5:0102 mov dx,0109 29E5:0105 int 21 29E5:0107 int 20 29E5:0109 -e109 1b -e10a '[31m$' -g=100 プログラムは正常に終了しました. (註:この行以下は赤色の文字で表示される) -r bx BX 0000 :0000 -r cx CX 0000 :000f -n d:\red.com -w 0000F バイト書き込み中 -q これと同様にして、「e10a 」以下の文字列と「r cx」で設定するファイルサイ ズ、そして「n」で設定するファイル名を変更することで、様々なエスケープシー ケンスの入力を行うミニプログラムを作成することができます。 例えば、「e10a」以下の文字列を「'[0m$'」とし、ファイルサイズを「000e」、 ファイル名を「default.com」としてコマンド「r」を実行すれば、プロンプト表 示色の設定を全てリセットするプログラム「default.com」を作ることができま す。 文字列を変更するときは、最後に「$」を付けることを忘れないようにして下さ い。「$」がないと、プログラムが暴走します。 また、ファイルサイズの設定を間違えないように注意しましょう。実サイズより 小さいサイズで保存すると、暴走するプログラムになってしまいます。このプロ グラムの場合、ファイルサイズは、「e10a 」の後のシングルクォーテーション 内の文字数に「000a」を足した値(16進数)となります。 なお、エスケープシーケンスについての詳細は以下のWebページが詳しいです。 ページ中程の「VT-100エスケープシーケンスについて」の項をご確認下さい。 「エスケープシーケンスについて」 http://hp.vector.co.jp/authors/VA016670/escape_code.html ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ ゲームの作成 ------------------------------------------------------------------------ DEBUGコマンドでは、上節のような単純なプログラムだけではなく、64KBまでの 様々なプログラムを(根気さえあれば)作成することができます。 さてここで、素晴らしいサイトをご紹介しましょう。 「魅惑の似非科学」 http://www.geocities.co.jp/Technopolis/8931/ 定番中の定番といえる理系読み物サイトですが、なんと、DEBUGコマンドでのゲー ムの作成例も公開していらっしゃいます。 トップページにある目次から、2003年7月10日付けの「打ち込め、青春!マシン 語ダンプリストのミッシングリンクをつなげ!の似非科学」という項目を選べば、 作成例を見ることができます。 皆さんも是非、このサイトの記事に沿って実際に打ち込んでみて下さい。 なお、同文章の末尾には、 > WindowsXP Pro/Homeで動作確認しましたが、WinNT系列ならOKだと思います。 > Win9xやWinMEマシンでは、ちょっと何が起こるかわかりませんので実行しない > でください。 との記述がありますが、当方にて、Windows98でも一通り動作することを確認し ました。また、コードを見る限りでは、Windows95,Meでも問題ないように思われ ます。 (いずれにせよ、実行は自己責任にて願います) ------------------------------------------------------------------------ ● 作成のヒント 打ち込み途中、あるいは打ち込み完了時点でのデータは、保存しておくことがで きます。以下の手順を実行して下さい。 -r bx BX 0000 :0000 -r cx CX 0000 :0200 -n d:\dumplist.dat -w 00200 バイト書き込み中 コマンド「n」で設定したファイル名で、データが保存されます。 保存した後、そのまま打ち込みを続けることもできます。 また、一旦DEBUGコマンドを終了した後で打ち込みを再開するときは、次のよう に、ファイル名をオプションとしてDEBUGコマンドを起動すれば、それまでに打 ち込んだ部分を読み込むことができます。 DEBUG D:\DUMPLIST.DAT ただし、この方法で保存したダンプリストは、自分1人で利用するにとどめ、公 開したり譲渡したりしないようにして下さい。 「魅惑の似非科学」の同文章末尾にある以下の注意書きの趣旨をご理解願います。 > このゲーム単体の再配布は禁止します(あくまで打ち込みを体験してもらうの > が趣旨ですので)。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ アセンブラ関連のおすすめ資料 ------------------------------------------------------------------------ この特別号でアセンブラに興味をもたれた方のために、関連する資料やソフトを いくつか簡単にご紹介します。 ------------------------------------------------------------------------ ● Webページ 「目指せプログラマー!」 http://hp.vector.co.jp/authors/VA000124/ アルゴリズム、および各種プログラミング言語(C、C++、アセンブラ、Java)の 解説サイトです。 C言語を少し知っている人がアセンブラを勉強するのに最適でしょう。 「プログラマの隠れ里」 http://www7.plala.or.jp/keny01/ 上と同様に、各種プログラミング言語およびアルゴリズムの解説サイトです。 アセンブラに関しては、他のサイトや書籍などで基礎を知った上で、技術を身に つけるために読むとよいのではないかと思われます。 ------------------------------------------------------------------------ ● 書籍 『CPUの創りかた』(\2,800) http://www.amazon.co.jp/exec/obidos/ASIN/4839909865/msdos-22 CPUの動作原理と設計について、面白く分かりやすく解説した話題の書籍。 アセンブラ言語そのものの解説はありませんが、アセンブラと機械語とCPUの 動作との対応関係が詳しく説明されています。 表紙のイラストを見て購入を躊躇される方も多いようですが、内容は素晴らしい ものがあります。私のお勧めの1冊。 『8086マクロアセンブラ入門』(\2,180) http://www.amazon.co.jp/exec/obidos/ASIN/4774114421/msdos-22 読みやすく、プログラム例の豊富なアセンブラの入門書。ただ、章によって難易 度のばらつきが大きく、またファイルの取り扱い方法についての記述がないのが 難点といえます。 上で紹介したサイト「目指せプログラマー!」と組み合わせて読み進めるのがよ いかと思われます。 ------------------------------------------------------------------------ ● ソフト 「TD4エミュレータ」(フリーウェア) http://book.mycom.co.jp/support/e5/cpu/ 上述の書籍『CPUの創りかた』の中で設計・作成しているCPU「TD4」の動 作をパソコン上でエミュレートするソフトウェア。 機械語とCPUの動作との関係を理解するのに役立ちます。 「「TD4エミュレータ」用 簡易アセンブラ TD4asm」(フリーウェア) http://www.vector.co.jp/soft/win95/prog/se312045.html 上のソフト「TD4エミュレータ」向けの簡易アセンブラ。 実は私が作成したソフトです。ご贔屓のほどよろしくお願いします (^^ゞ この特別号で扱ったようなアセンブラ言語で記述したプログラムを、「TD4エミュ レータ」で読み込める形式のファイルに変換します。 ------------------------------------------------------------------------ 特別号はここまでです。 お疲れ様でした! 第46号の予定は、「リダイレクトとパイプ(3)」です。 第44号の続きで、パイプで利用される代表的なフィルタコマンド3つを紹介し ます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ コメントをお待ちしています ------------------------------------------------------------------------ 皆さんからの感想・質問・要望をお待ちしています。 「こんなテーマを扱ってほしい」 「こんなことはできるの?」 「このへんが分かりにくかった」 「1回の分量を増やしてほしい/減らしてほしい」 など、掲示板(下記URL)まで気軽にお願いします。 http://bbs9.otd.co.jp/dos/bbs_thread (スレッド表示) http://bbs9.otd.co.jp/dos/bbs_tree (ツリー表示) メールでもコメントを受け付けておりますので、そちらもご利用下さい。 tetrahedrane@yahoo.co.jp なお、いただいたコメントは、本マガジン上で引用する場合があります。 (メールアドレスやお名前は一切公開いたしません) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● 感想・質問宛先 http://bbs9.otd.co.jp/dos/bbs_tree tetrahedrane@yahoo.co.jp ● 広告募集 当メルマガへの広告掲載をご希望の方は、下記アドレスまでお願いします。 tetrahedrane@yahoo.co.jp ● メルマガ交換広告募集 当メルマガとのメルマガ交換広告をご希望の方は、下記アドレスまでどうぞ。 tetrahedrane@yahoo.co.jp ● 登録・解除・バックナンバー http://www.geocities.co.jp/Bookend-Hemingway/4963/column/dos/ このメールマガジンは、『まぐまぐ』を利用して発行しています。 http://www.mag2.com/m/0000106066.htm (c) 2004 Chisato Hayahoshi