Função BIOS INT 0x15 0x88 sempre retorna o mesmo tamanho de memória
Pergunta
Estou usando o BIOS Int 0x15 no meu emulador de Bochs, no entanto, isso sempre retorna o mesmo tamanho de memória (34440), independentemente do que eu configurei:
mov ax, 0x88
int 0x15
Eu sei que existem melhores métodos de detecção de memória, mas eu queria entender por que isso não estava funcionando como esperado (apenas caso haja algo que eu fiz a torção)
Por que é isso? O Bochs BIOS é codificado para retornar esse valor?
Solução
O valor de retorno que você está vendo (ax = 34440) é AH=86H and AL=88H
. Não é um tamanho de memória. Aposto que você também está vendo a bandeira de transporte voltando, indicando um erro. O código de erro 86H (em AH) significa que a função não é suportada. Você pode ter configurado intencionalmente ou involuntariamente Bochs para emular um PC pré-atégio.
Outras dicas
Você pode tentar verificarInt 15h, ax = e820h - mapa de endereço do sistema de consultaComo Bochs INT15/E820 Mapas de RAM física fornecidas pelo BIOS
Obtenha tamanho de memória estendido
mov ah,88h
int 15h