<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=PNP_Calls_In_Protected_Mode</id>
	<title>PNP Calls In Protected Mode - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=PNP_Calls_In_Protected_Mode"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=PNP_Calls_In_Protected_Mode&amp;action=history"/>
	<updated>2026-04-05T11:48:29Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=PNP_Calls_In_Protected_Mode&amp;diff=1054&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“{{Stub}}  是的，就像PCI bios32调用一样，你可以在保护模式（pmode）下进行PNP调用。  一旦有了BIOS32服务目录(参见PCI示例例程)，就可以使用PnP自动配置魔术调用它。再次注意寄存器接口的串联组件。  &lt;source lang=&quot;C&quot;&gt;  void bios32_scan_pnp_entry(void)  {     uint32_t cseg_size, offset, base_addr;       /* 调用PCI地址的BIOS32 BSD        BSD调用以RETF而非RET终止*/…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=PNP_Calls_In_Protected_Mode&amp;diff=1054&amp;oldid=prev"/>
		<updated>2022-03-28T06:52:59Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{{Stub}}  是的，就像PCI bios32调用一样，你可以在&lt;a href=&quot;/index.php?title=Protected_Mode&quot; title=&quot;Protected Mode&quot;&gt;保护模式（pmode）&lt;/a&gt;下进行PNP调用。  一旦有了&lt;a href=&quot;/index.php?title=BIOS32&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;BIOS32（页面不存在）&quot;&gt;BIOS32&lt;/a&gt;服务目录(参见PCI示例例程)，就可以使用PnP自动配置魔术调用它。再次注意寄存器接口的串联组件。  &amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;  void bios32_scan_pnp_entry(void)  {     uint32_t cseg_size, offset, base_addr;       &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;调用PCI地址的BIOS32 BSD        BSD调用以RETF而非RET终止：&lt;/span&gt;…”&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
是的，就像PCI bios32调用一样，你可以在[[Protected Mode|保护模式（pmode）]]下进行PNP调用。&lt;br /&gt;
&lt;br /&gt;
一旦有了[[BIOS32]]服务目录(参见PCI示例例程)，就可以使用PnP自动配置魔术调用它。再次注意寄存器接口的串联组件。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 void bios32_scan_pnp_entry(void)&lt;br /&gt;
 {&lt;br /&gt;
    uint32_t cseg_size, offset, base_addr;&lt;br /&gt;
 &lt;br /&gt;
    /* 调用PCI地址的BIOS32 BSD&lt;br /&gt;
       BSD调用以RETF而非RET终止*/&lt;br /&gt;
 &lt;br /&gt;
    /*eax加载了“$ACF”魔法*/&lt;br /&gt;
    asm(&amp;quot;movl	$0x46434124, %%eax\n&amp;quot;&lt;br /&gt;
        &amp;quot;lcall _bios32_call\n&amp;quot;&lt;br /&gt;
        : &amp;quot;=c&amp;quot; (cseg_size),&lt;br /&gt;
          &amp;quot;=d&amp;quot; (offset),&lt;br /&gt;
          &amp;quot;=b&amp;quot; (base_addr)&lt;br /&gt;
        :&lt;br /&gt;
        : &amp;quot;eax&amp;quot;, &amp;quot;ebx&amp;quot;, &amp;quot;ecx&amp;quot;, &amp;quot;edx&amp;quot;, &amp;quot;ebp&amp;quot;, &amp;quot;memory&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
    /* 设置pnp_code32，pnp_data32等的两个新选择器 */&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一旦确定pmode应用程序存在PNP BIOS调用，就可以调用PCI v2.0c+调用（参见中的INT 0x1A，功能0xB400到0xB407[http://www.ctyme.com/intr/int-1a.htm RalfBrown的INT列表]）。&lt;br /&gt;
&lt;br /&gt;
注意，似乎没有多少BIOS支持PnP Bios32调用，因此你可能不得不直接对PnP BIOS使用pmode16调用(需要286个TS)。&lt;br /&gt;
&lt;br /&gt;
[[Category:X86]]&lt;/div&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
</feed>