MS-DOS(Ver7.1)のイニシャルプログラムローダを解析すると、
BIOSから制御が移された直後に
割り込み1EHの設定を変更しているくだりがあるのですが、
これは一体何をやっているのでしょうか?
以下に詳細を書きます。
・0000:0078からの4バイト(すなわちINT 1Eに対する割り込みベクタテーブル)を
スタックに保存し、新たに0000:0522というポインタを設定する。
・旧ジャンプ先の先頭から11バイトを新ジャンプ先にコピーする。
5バイト目(0000:0526)にディスクのトラックあたりのセクタ数を上書きし、
10バイト目(0000:052B)に即値0FHを格納する。
最終的には下のようなバイト列になる。
DF 02 25 02 12 1B FF 54 F6 0F 08
(トラックあたり18(=12H)セクタの場合)
これをディスアセンブルしても意味のある命令列にならない。
・この後、IO.SYSの探索に入る。スタックに積まれた旧ポインタは
エラーメッセージのあとのキー入力待ちを経て復元される。
御存知の方がいらっしゃいましたら教えてください。
No.1ベストアンサー
- 回答日時:
INT 1Eh は割り込み処理アドレスではなく
フロッピーディスクパラメータアドレスです
内容は全て byte で下記の通りです
オフセット 内容
00h bit 7-4:ステップレート
bit 3-0:ヘッドアンロード時間
01h bit 7-1:ヘッドロード時間
bit 0 :DMAを使わない
02h モータ回転停止までの待ち時間(Tick単位)
03h セクタ長(00h:128バイト 01h:256バイト 02h:512バイト 03h:1024バイト)
04h トラックあたりのセクタ数
05h セクタ間のギャップ長
06h データ長
07h フォーマット時のギャップ長
08h フォーマットデータ
09h ヘッドセトリング時間(ミリ秒単位)
0Ah モータ回転開始時間(1/8秒単位)
なお
INT 1Dh は ビデオパラメータテーブルアドレス
INT 1Fh は 8x8ドットグラフィックフォントテーブルアドレス
となっています
ありがとうございます!なんで割り込みジャンプ先なのに命令列になっていないのだろう?とずっと悩んでおりました。ディスクのパラメータだったんですね。私は全くの趣味で解析をしているのですが、AT互換機の仕様が分からないせいで何日も進まないことがあり、本当に助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- Windows 10 MicrosoftIMEでトラブル、助けてください m(_._)m 4 2023/05/16 14:11
- Windows 7 Windows7でMicrosoft VirtualPC2007 SP1を使用する 9 2022/11/17 13:12
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- リフォーム・リノベーション 汚水枡改修工事の見積額は妥当でしょうか? 2 2022/06/30 09:01
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ubuntuで デイスク/deb/loopと...
-
ブロック化因数(ブロッキング...
-
磁気ディスク装置についての計算
-
プログラムの規模を表す単位「k...
-
L2スイッチの管理VLANに...
-
MoveNextの処理速度は?
-
パソコンでインターネット接続...
-
ライン数とステップ数の違いに...
-
スタックとキュー
-
ステップ数について
-
prologでNの階乗の逆関数を考...
-
これで最後、スタックの問題です…
-
printf / sprintf のスタック消...
-
STEPについて
-
「ByRef引数の型が一致しません...
-
最大スタックサイズを大きくす...
-
VC++6.0 Stack Overflow !!
-
C言語・スタックを使用した逆...
-
VB.netでDLLを読み込んで実行す...
-
命令口調について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ubuntuで デイスク/deb/loopと...
-
磁気ディスクのアクセス時間に...
-
ブロック長について
-
磁気ディスク装置についての計算
-
ブロック化因数(ブロッキング...
-
この二つの問題とける人いませ...
-
6MBのデータをダウンロードする...
-
MOの容量って、どうなってい...
-
磁気ディスクの平均アクセス時...
-
磁気ディスクのアクセス時間の...
-
プログラムの規模を表す単位「k...
-
パソコンでインターネット接続...
-
ステップ数について
-
ライン数とステップ数の違いに...
-
VB.netでDLLを読み込んで実行す...
-
hdmiはパラレル?シリアル?
-
エラー?メッセージ
-
ステップ数??
-
ネットワークアイコンが黄色三...
-
最大スタックサイズを大きくす...
おすすめ情報