0章〜3章にまつわるQ&Aのまとめ

  • (by K, 2006.03.28)
  • いろいろQ&Aが集まったと思うので、ここにまとめておこうと思います。
  • ここで答えが見つからなければ、q_and_aへ!
  • makeに関する質問は faq/make にあります。

質問と答え

  • むずかしい!
  • Aドライブにきちんとディスクを入れているのにinstall.batの実行に失敗する(エラーが出る)。
    • tolsetを置いたディレクトリが深くありませんか? 実際は深さが問題になるのではなく、tolsetへの絶対パスが長くなるといけないようです(おそらくimgtol.comを含めて64文字以内)。対策としてはtolsetを丸ごと引越しさせてください。
  • edimg.exeの詳しい説明がほしい。
  • nask.exeではエラー数の表示しか出ないけど、どこでどんなエラーが出たのか詳しく知りたい。
  • edimg.exeでコピーしたファイルって更新日時が9時間ずれていませんか?
    • するどいです。そうです、実はずれています。これは bias パラメータで日本時間を指定しなかったせいです(biasパラメータの説明をするのが面倒で、本文には書きませんでした)。 bias パラメータについてはtools/edimgをご覧ください。

  • [p.18(1-1)] 実機で試したいけどFDDをもっていないのでCD-Rでやりたい。方法はないのか?
    • p.678(30-6)にCD-ROM起動について書いてありますので参考にしてください(そこでは話の流れの都合でディスクイメージ名がharibote.imgになっていますので読み替えてください)。
  • p.18(1-1)] 手順どおりにディスクを作ったけど、ディスクをWindowsで見てみたら空っぽって表示されている。どうやればhelloos0をインストールできるのか?
    • いえいえ、空っぽだと表示されますが、それでいいのです。OSはきっときちんとインストールされています。迷わずそのディスクから起動してみてください(ファイルとして表示されないからといって、何も入っていないということにはならないのです。helloos0はWindowsのディスクの管理方法における「ファイル領域」という部分を使っていないので、その意味ではディスクの容量を消費していないのです)。
  • [p.23(1-3)] 「超長いソースプログラム」のhelloos.nas(184320行)をnaskにかけると「NASK : too large helloos.nas」というエラーがでる。
    • どうもすみません。そのとおりです。まさかそれを試す方がおられるとは・・・。どうかその次の「まともな長さのソースプログラム」でガマンしてください。
  • [p.31(2-2)] バイナリエディタで打ち込んできたことを考え合わせると、「JMP entry」は「EB 4E」に翻訳されるようです。しかしこれは「JMP 0x4e」ということなんですか?でもentryって0x7c50ですよね?この食い違いはなんですか?
    • とりあえずその翻訳結果はそれで合っています。食い違っているように見えるかもしれませんが、食い違ってはいません。変だと思うかもしれないですが、そのように翻訳されるのが正しいのです(機械語というのはちょっとややこしいのです)。この説明でまあそんなものなのかなと思えない人はfaq/asmをご覧ください。
  • [p.48(3-1)] ipl.nasのerror:の処理のところに ES = 0; に相当する処理をしているところがあるが、これは何のために必要な処理なのか?
    • すみません、それは不要な処理です。筆者が開発中に消し忘れたものが残ってしまいました(ESは使っていないので、この処理があっても動作に問題があるわけではありません)。初版第8刷以降では修正(=削除)したいと思っています。
  • [p.59(3-6)] haribote.nasに ORG 0xc200 を書き足したようだが、こんな命令を書き足す必要が本当にあるのか。というのは、ipl.nasによってharibote.nasは0xc200に無事に読み込まれているのだから。しかも試しにharibote.nasからORG命令を削除してみても問題なく動作しているようにみえる。
    • ORG命令の意味は、アセンブラにこのプログラムがどこに読み込まれる予定なのかを教えることです。したがって0xc200に読み込むのならそれは当然ORG 0xc200と書くべきで、その意味でこのプログラムは正しいのです。・・・しかし一方で、確かにこのORGを省略してしまっても、harib00hくらいまでは問題なく動いてしまうでしょう。これは偶然にORGの値が機械語の翻訳に影響しない命令の組み合わせだけになっているからです。そしてharib00iからはORG命令の影響を受ける命令も使っているので、ORG命令を消したらうまくいかなくなるでしょう。
    • どうも誤解されているように思うのですが、ORG命令は機械語を指定した番地に読み込ませるための命令では「ありません」。正しい番地に読み込ませるのはプログラマの責任です。ORG命令は、どこに読み込ませて実行するつもりなのかをアセンブラに教えてやるための命令です(p.31参照)。もしこれが正しくないと不適切な機械語になってしまい、うまく実行できなくなるというだけのことです。

こめんと欄

  • (新規の質問をここには書いてほしくなかったので、名無しさんの質問はq_and_aに移動させました。) -- K
  • なぜEB4E004845から始まるか全くわかりません。全く素人です。すみません -- tarochi0812 2009-08-19 (水) 20:30:47
  • 新規の質問はここには書かないでください!新規の質問で本文の内容についてはq_and_aへ、改造やより高度なことはimpressionsへお願いします。 -- K 2009-08-19 (水) 21:22:05

コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2009-08-19 (水) 21:22:05 (3764d)