我在我的Bochs仿真器上使用BIOS int 0x15,但无论我配置什么,它总是会返回相同的内存大小(34440):

mov ax, 0x88
int 0x15

我知道有更好的内存检测方法,但是我想知道为什么这个方法没有按预期工作(以防万一我已经做了一些事情)

这是为什么? bochs bios是否只是硬编码才能返回这个值?

有帮助吗?

解决方案

您看到的返回值(AX = 34440)是 AH = 86H且AL = 88H 。这不是内存大小。我敢打赌你也看到进位标志回来设置,表示错误。错误代码86H(在AH中)表示不支持该功能。您可能有意或无意地设置Bochs来模拟AT-PC前的电脑。

其他提示

你可以尝试检查一下 INT 15h,AX = E820h - 查询系统地址地图 怎样bochs INT15 / E820 BIOS提供的物理RAM映射

获取扩展内存大小

mov ah,88h
int 15h
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top