

BIOSのプログラムでINT 0x13などでフロッピーディスクなどを操作できますが、USBのデータを読み書きするものは無いのですか？


CC BY-SA 4.0
2019-11-01T15:50:15.037
60189
2019-11-03T09:22:19.797
36447
question
assembly
BIOSのプログラムでINT 0x13などでフロッピーディスクなどを操作できますが、USBのデータを読み書きするものは無いのですか？


ここみたいに技術者の集まる場所で 「 USB のデータ」などと書くと HID だの CDC
だのとツッコミが入ります（っていうかオイラが入れます）もっと正確に MSC (Mass Storage Class) と書くべきでしょう。

<https://teratail.com/questions/220939>  
でも質疑応答されていますが `INT 13H` は 8086 CPU の 16bit
世代におけるディスク装置のアクセスインターフェイスです。次にあげるような理由によりサポートされていない、ないしは、サポートされていてもそもそも発行する手段がないです。

  * x64 アプリから `INT 13H` を使うような ABI は規定されていない
  * 今のディスク装置は当時のものよりはるかに容量が増えていて `INT 13H` で使われていた CHS/LBA ではアクセスできない
  * リセット直後処理が `BIOS` でなくて `UEFI` になっていて、そもそも 16bit で動作するように (CPU/マザボが) 作られていない
  * その `INT 13H` を発行するであろう 16bit アプリ (= MS-DOS / Win3.1 アプリ) は x64 Windows ではサポートされていない
  * 独自 OS を自分で作るためのブートストラップであるなら一見必要そうに見えるが、上記のような理由により 16bit OS は今のマシンでは動かないし `INT 13H` を使うことはありえない

なぜ `INT 13H` が必要なのかまで立ち返ると、これは XY
問題と呼ぶべきでしょう。単なる技術的興味であるなら「無い」で終了、そうでないならこの質問をするに至った元の要望に立ち返るとよいでしょう。


CC BY-SA 4.0
2019-11-03T09:22:19.797
60217
2019-11-03T09:22:19.797
8589
60189
answer