📄 booting-memory_check_6.htm
字号:
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
face="Times New Roman TUR" size=5><STRONG>1.6.2 INT 15h, AX=E820h - Query System
Address Map</STRONG></FONT></SPAN></SPAN></SPAN></P><FONT size=+0><FONT
size=+0><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
size=+0><FONT face="Times New Roman TUR"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3><FONT face="Times New Roman TUR" size=4></FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR><FONT
face="Times New Roman TUR">E820h只能在Real Mode下使用。</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR><FONT
face="Times New Roman TUR">这个中断调用返回所有被安装在主机上的RAM,以及被BIOS所保留的物理内存范围的内存映象。<BR><BR>输入:</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD><STRONG><FONT face="Times New Roman TUR">Register</FONT></STRONG></TD>
<TD><STRONG><FONT face="Times New Roman TUR">Meaning</FONT></STRONG></TD>
<TD><STRONG><FONT
face="Times New Roman TUR">Description</FONT></STRONG></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">EAX</FONT></TD>
<TD><FONT face="Times New Roman TUR">功能码</FONT></TD>
<TD><FONT face="Times New Roman TUR">E820h</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">EBX</FONT></TD>
<TD><FONT face="Times New Roman TUR">后续值</FONT></TD>
<TD><FONT
face="Times New Roman TUR">放置着"后续值",这个值是为了得到下一块物理内存段,它应该指定上一次调用此程序所返回的值,如果这是第一次调用,EBX必须被指定为0。</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">ES:DI</FONT></TD>
<TD><FONT face="Times New Roman TUR">缓冲指针</FONT></TD>
<TD><FONT
face="Times New Roman TUR">指向一个地址范围描述符结构,BIOS将会填充此结构。<BR></FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">ECX</FONT></TD>
<TD><FONT face="Times New Roman TUR">缓冲大小</FONT></TD>
<TD><FONT
face="Times New Roman TUR">缓冲指针所指向的地址范围描述符结构的大小,以Byte为单位,无论ES:DI所指向的结构如何设置,BIOS最多将会填充ECX个字节,必需被BIOS以及调用者所支持的最小尺寸是20个字节,未来的实现将会扩展此限制。</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">EDX</FONT></TD>
<TD><FONT face="Times New Roman TUR">标志</FONT></TD>
<TD><FONT face="Times New Roman TUR">'SMAP' -
BIOS将会使用此标志,对调用者将要请求的系统映象信息进行校验,这些信息会被BIOS放置到ES:DI所指向的结构中。<BR></FONT></TD></TR></TBODY></TABLE></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR><BR><FONT
face="Times New Roman TUR">输出:</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD><STRONG><FONT face="Times New Roman TUR">Register</FONT></STRONG></TD>
<TD><STRONG><FONT face="Times New Roman TUR">Meaning</FONT></STRONG></TD>
<TD><STRONG><FONT
face="Times New Roman TUR">Description</FONT></STRONG></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">CF</FONT></TD>
<TD><FONT face="Times New Roman TUR">进位标志</FONT></TD>
<TD><FONT face="Times New Roman TUR">不进位表示没有错误,否则则存在错误。</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">EAX</FONT></TD>
<TD><FONT face="Times New Roman TUR">标志</FONT></TD>
<TD><FONT face="Times New Roman TUR">'SMAP'</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">ES:DI</FONT></TD>
<TD><FONT face="Times New Roman TUR">缓冲指针</FONT></TD>
<TD><FONT face="Times New Roman TUR">返回的地址范围描述符结构指针,和输入值相同。</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">ECX</FONT></TD>
<TD><FONT face="Times New Roman TUR">缓冲大小</FONT></TD>
<TD><FONT
face="Times New Roman TUR">BIOS所填充在地址范围描述符中的字节数量,被BIOS所返回的最小值是20个字节。</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">EBX</FONT></TD>
<TD><FONT face="Times New Roman TUR">后续</FONT></TD>
<TD>
<P><FONT
face="Times New Roman TUR">这里放置着为了等到下一个地址描述符所需要的"后续值",这个值的实际形势倚赖于具体的BIOS的实现,调用者不必要关心它的具体形式,只需要在下次迭代的时候,将其原封不动的放置到EBX中,就可以通过它获取下一个地址范围描述符。如果它的值为0,则表示它是最后一个地址范围描述符。</FONT></P>
<P><FONT
face="Times New Roman TUR">一定注意,只有这个后续值为零,并且CF没有进位的时候,才表示这是最后一个地址范围描述符。</FONT></P></TD></TR></TBODY></TABLE></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><BR><STRONG><FONT
face="Times New Roman TUR"> </FONT></P><FONT face="Times New Roman TUR">
<HR width="100%" SIZE=1>
</FONT>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt"></STRONG><STRONG></STRONG> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><STRONG><FONT
face="Times New Roman TUR" size=4>Address Range Descriptor
Structure</FONT></STRONG></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT
face="Times New Roman TUR"></FONT> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"></FONT><FONT
face="Times New Roman TUR">地址范围描述符结构</FONT></SPAN></SPAN></FONT></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<TABLE cellSpacing=0 cellPadding=0 rules=all width="100%" border=1 frame=border
VALIGN="BASELINE" NOWRAP="1">
<TBODY>
<TR>
<TD><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><STRONG><FONT
face="Times New Roman TUR">Offset</FONT></STRONG></SPAN></SPAN></SPAN></TD>
<TD><STRONG><FONT face="Times New Roman TUR">Name</FONT></STRONG></TD>
<TD><STRONG><FONT
face="Times New Roman TUR">Description</FONT></STRONG></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">0</FONT></TD>
<TD><FONT face="Times New Roman TUR">BaseAddrLow</FONT></TD>
<TD><FONT face="Times New Roman TUR">基地址的低32位</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">4</FONT></TD>
<TD><FONT face="Times New Roman TUR">BaseAddrHigh</FONT></TD>
<TD><FONT face="Times New Roman TUR">基地址的高32位</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">8</FONT></TD>
<TD><FONT face="Times New Roman TUR">LengthLow</FONT></TD>
<TD><FONT face="Times New Roman TUR">长度(字节)的低32位</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">12</FONT></TD>
<TD><FONT face="Times New Roman TUR">LengthHigh</FONT></TD>
<TD><FONT face="Times New Roman TUR">长度(字节)的高32位</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">16</FONT></TD>
<TD><FONT face="Times New Roman TUR">Type</FONT></TD>
<TD><FONT
face="Times New Roman TUR">这个地址范围的地址类型</FONT></TD></TR></TBODY></TABLE></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
face="Times New Roman TUR" size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN></SPAN></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
face="Times New Roman TUR" size=3>其中Type的取值及其意义如下:<BR></FONT>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD><STRONG><FONT face="Times New Roman TUR">Value</FONT></STRONG></TD>
<TD><STRONG><FONT face="Times New Roman TUR">Name</FONT></STRONG></TD>
<TD><STRONG><FONT
face="Times New Roman TUR">Description</FONT></STRONG></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">1</FONT></TD>
<TD><FONT face="Times New Roman TUR">AddressRangeMemory</FONT></TD>
<TD><FONT face="Times New Roman TUR">这个内存段是一段可以被OS使用的RAM</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">2</FONT></TD>
<TD><FONT face="Times New Roman TUR">AddressRangeReserved</FONT></TD>
<TD><FONT
face="Times New Roman TUR">这个地址段正在被使用,或者被系统保留,所以一定不要被OS使用</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR">Other</FONT></TD>
<TD><FONT face="Times New Roman TUR">Undefined</FONT></TD>
<TD><FONT
face="Times New Roman TUR">保留为未来使用,任何其它值都必需被OS认为是AddressRangeReserved</FONT></TD></TR></TBODY></TABLE></SPAN></SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN></SPAN></SPAN></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -