BochsエミュレーターでBIOSint0x15を使用していますが、これは、構成内容に関係なく、常に同じメモリサイズ(34440)を返します。
mov ax, 0x88
int 0x15
メモリ検出のより良い方法があることは知っていますが、なぜこれが期待どおりに機能しなかったのかを理解したかったのです(私が何かを絞った場合に備えて)
どうしてこれなの?bochs biosは、この値を返すようにハードコーディングされていますか?
INT 15h、AX=E820hを確認してみてください - システム アドレス マップのクエリを実行して、 INT15/E820 BIOS が提供する物理 RAM マップをどのように使用するかを確認してください。
拡張メモリ サイズを取得する
mov ah,88h
int 15h
表示されている戻り値 (AX=34440) はAH=86H and AL=88H
. メモリサイズではありません。また、エラーを示すキャリー フラグが設定されていることもわかります。エラー コード 86H (AH) は、機能がサポートされていないことを意味します。AT 以前の PC をエミュレートするために、意図的または意図せずに Bochs をセットアップした可能性があります。