Files
oldlinux-website/Book-Lite/code-list/html/P6-2.html
2024-02-19 01:11:57 -05:00

5877 lines
255 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=Generator content="Microsoft Word 14 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Courier;
panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
{font-family:"Tms Rmn";
panose-1:2 2 6 3 4 5 5 2 3 4;}
@font-face
{font-family:Helv;
panose-1:2 11 6 4 2 2 2 3 2 4;}
@font-face
{font-family:"New York";
panose-1:2 4 5 3 6 5 6 2 3 4;}
@font-face
{font-family:System;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
{font-family:Batang;
panose-1:2 3 6 0 0 1 1 1 1 1;}
@font-face
{font-family:ËÎÌå;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:PMingLiU;
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"MS Gothic";
panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
{font-family:Dotum;
panose-1:2 11 6 0 0 1 1 1 1 1;}
@font-face
{font-family:ºÚÌå;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
{font-family:MingLiU;
panose-1:2 2 5 9 0 0 0 0 0 0;}
@font-face
{font-family:Mincho;
panose-1:2 2 6 9 4 3 5 8 3 5;}
@font-face
{font-family:Gulim;
panose-1:2 11 6 0 0 1 1 1 1 1;}
@font-face
{font-family:Century;
panose-1:2 4 6 4 5 5 5 2 3 4;}
@font-face
{font-family:"Angsana New";
panose-1:2 2 6 3 5 4 5 2 3 4;}
@font-face
{font-family:"Cordia New";
panose-1:2 11 3 4 2 2 2 2 2 4;}
@font-face
{font-family:Mangal;
panose-1:2 4 5 3 5 2 3 3 2 2;}
@font-face
{font-family:Latha;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Sylfaen;
panose-1:1 10 5 2 5 3 6 3 3 3;}
@font-face
{font-family:Vrinda;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Raavi;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Shruti;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Sendnya;
panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
{font-family:Gautami;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Tunga;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Estrangelo Edessa";
panose-1:3 8 6 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:"Arial Unicode MS";
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:·½ÕýС±êËμòÌå;}
@font-face
{font-family:"\@ºÚÌå";
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
{font-family:"\@ËÎÌå";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"\@·½ÕýС±êËμòÌå";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
h1
{mso-style-link:"±êÌâ 1 Char";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:7.2pt;
text-align:center;
text-indent:-7.2pt;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
h2
{mso-style-link:"±êÌâ 2 Char";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
text-indent:0cm;
page-break-after:avoid;
font-size:16.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
h3
{mso-style-link:"±êÌâ 3 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:0cm;
page-break-after:avoid;
font-size:14.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
h4
{mso-style-link:"±êÌâ 4 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:28.8pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-28.8pt;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
h5
{mso-style-link:"±êÌâ 5 Char";
margin-top:14.0pt;
margin-right:0cm;
margin-bottom:14.5pt;
margin-left:36.0pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-36.0pt;
line-height:156%;
page-break-after:avoid;
font-size:14.0pt;
font-family:ËÎÌå;
font-weight:bold;}
h6
{mso-style-link:"±êÌâ 6 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:43.2pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-43.2pt;
line-height:133%;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
{mso-style-link:"±êÌâ 7 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:50.4pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-50.4pt;
line-height:133%;
page-break-after:avoid;
font-size:12.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
{mso-style-link:"±êÌâ 8 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:57.6pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-72.0pt;
line-height:133%;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial","sans-serif";}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
{mso-style-link:"±êÌâ 9 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:64.8pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-79.2pt;
line-height:133%;
page-break-after:avoid;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:10.5pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:31.5pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex5, li.MsoIndex5, div.MsoIndex5
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:52.5pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex6, li.MsoIndex6, div.MsoIndex6
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:63.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex7, li.MsoIndex7, div.MsoIndex7
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:73.5pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex8, li.MsoIndex8, div.MsoIndex8
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:84.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoIndex9, li.MsoIndex9, div.MsoIndex9
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:94.5pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-10.5pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoToc1, li.MsoToc1, div.MsoToc1
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;
font-weight:bold;}
p.MsoToc2, li.MsoToc2, div.MsoToc2
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoToc3, li.MsoToc3, div.MsoToc3
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoToc4, li.MsoToc4, div.MsoToc4
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:31.5pt;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoToc5, li.MsoToc5, div.MsoToc5
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.0pt;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoToc6, li.MsoToc6, div.MsoToc6
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:52.5pt;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoToc7, li.MsoToc7, div.MsoToc7
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:63.0pt;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoToc8, li.MsoToc8, div.MsoToc8
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:73.5pt;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoToc9, li.MsoToc9, div.MsoToc9
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:84.0pt;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
{mso-style-link:"½Å×¢Îı¾ Char";
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
{mso-style-link:"Åú×¢ÎÄ×Ö Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{mso-style-link:"ҳü Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
layout-grid-mode:char;
border:none;
padding:0cm;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{mso-style-link:"Ò³½Å Char";
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:9.0pt;
font-family:ËÎÌå;}
p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading
{mso-style-name:"Ë÷Òý±êÌâ\,Ë÷ÒýÀàÄ¿\,Ë÷ÒýÀàÄ¿1\,Ë÷ÒýÀàÄ¿2";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoCaption, li.MsoCaption, div.MsoCaption
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.MsoTof, li.MsoTof, div.MsoTof
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
span.MsoFootnoteReference
{vertical-align:super;}
p.MsoList, li.MsoList, div.MsoList
{margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoList2, li.MsoList2, div.MsoList2
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoList4, li.MsoList4, div.MsoList4
{margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.MsoDate, li.MsoDate, div.MsoDate
{mso-style-link:"ÈÕÆÚ Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:5.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
a:link, span.MsoHyperlink
{mso-style-name:"³¬Á´½Ó\,³¬¼¶Á´½Ó";
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;}
p
{mso-style-name:"ÆÕͨ\(ÍøÕ¾\)\,ÆÕͨ \(Web\)\,ÆÕͨ \(Web\)1\,ÆÕͨ \(Web\)2\,ÆÕͨ \(Web\)3";
margin-right:0cm;
margin-left:0cm;
font-size:12.0pt;
font-family:ËÎÌå;}
pre
{mso-style-name:"HTML Ô¤Éè¸ñʽ\,HTML Ô¤Ïȸñʽ»¯\,HTML Ô¤Ïȸñʽ»¯1\,HTML Ô¤Ïȸñʽ»¯2\,HTML Ô¤Ïȸñʽ»¯3";
mso-style-link:"HTML Ô¤Éè¸ñʽ Char\,HTML Ô¤Ïȸñʽ»¯ Char\,HTML Ô¤Ïȸñʽ»¯1 Char\,HTML Ô¤Ïȸñʽ»¯2 Char\,HTML Ô¤Ïȸñʽ»¯3 Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:ËÎÌå;}
tt
{font-family:ºÚÌå;}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
{mso-style-link:"Åú×¢Ö÷Ìâ Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.5pt;
font-family:ËÎÌå;
font-weight:bold;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-link:"Åú×¢¿òÎı¾ Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:9.0pt;
font-family:ËÎÌå;}
p.1, li.1, div.1
{mso-style-name:Ñùʽ1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.a, li.a, div.a
{mso-style-name:´úÂë³ÌÐò;
mso-style-link:"´úÂë³ÌÐò Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:ËÎÌå;}
span.Char
{mso-style-name:"´úÂë³ÌÐò Char";
mso-style-link:´úÂë³ÌÐò;
font-family:ËÎÌå;}
p.a0, li.a0, div.a0
{mso-style-name:ͼ˵Ã÷;
mso-style-link:"ͼ˵Ã÷ Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char0
{mso-style-name:"ͼ˵Ã÷ Char";
mso-style-link:ͼ˵Ã÷;
font-family:ËÎÌå;}
p.0, li.0, div.0
{mso-style-name:·âÃæ0;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:36.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.10, li.10, div.10
{mso-style-name:·âÃæ1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:18.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.11, li.11, div.11
{mso-style-name:·Ç±êÌâ1;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
margin-left:0cm;
text-align:center;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.a1, li.a1, div.a1
{mso-style-name:Îı¾¾ÓÖÐ;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.3CharChar, li.3CharChar, div.3CharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char";
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
span.3CharCharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char";
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char";
font-family:ËÎÌå;}
p.post, li.post, div.post
{mso-style-name:Óʼþpost;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
line-height:11.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.3, li.3, div.3
{mso-style-name:ͼÖÐ×ÖÌå3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.3CharChar1CharCharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char1 Char Char Char";
font-family:ËÎÌå;}
span.3CharChar1CharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char1 Char Char";
font-family:ËÎÌå;}
p.5Char, li.5Char, div.5Char
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char";
mso-style-link:"ͼÖÐÎÄ×Ö5ºÅ Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
span.5CharChar
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char Char";
mso-style-link:"ͼÖÐÎÄ×Ö5ºÅ Char";
font-family:ËÎÌå;}
p.5CharChar0, li.5CharChar0, div.5CharChar0
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char";
mso-style-link:"ͼÖÐÎÄ×ÖС5ºÅ Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
span.5CharCharChar
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char Char";
mso-style-link:"ͼÖÐÎÄ×ÖС5ºÅ Char Char";
font-family:ËÎÌå;}
p.5Char0, li.5Char0, div.5Char0
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.5, li.5, div.5
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
layout-grid-mode:char;
font-size:9.0pt;
font-family:ËÎÌå;}
p.2, li.2, div.2
{mso-style-name:´úÂë³ÌÐò2;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:ËÎÌå;}
p.20, li.20, div.20
{mso-style-name:ͼ˵Ã÷2;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.21, li.21, div.21
{mso-style-name:Îı¾¾ÓÖÐ2;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.3CharCharCharCharChar, li.3CharCharCharCharChar, div.3CharCharCharCharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char";
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
span.3CharCharCharCharCharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char Char";
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char";
font-family:ËÎÌå;}
p.a2, li.a2, div.a2
{mso-style-name:ͼ¾ÓÖÐ;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.110, li.110, div.110
{mso-style-name:"Ñùʽ ±êÌâ 1 + ¾ÓÖÐ1";
margin-right:0cm;
margin-left:0cm;
text-align:center;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
span.1Char
{mso-style-name:"±êÌâ 1 Char";
mso-style-link:"±êÌâ 1";
font-weight:bold;}
p.22, li.22, div.22
{mso-style-name:"Ñùʽ Áбí 2 + ¾ÓÖÐ";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.23, li.23, div.23
{mso-style-name:Áбí2;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.50, li.50, div.50
{mso-style-name:ͼÖÐÎÄ×Ö5ºÅ;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.111, li.111, div.111
{mso-style-name:Ñùʽ11;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.12, li.12, div.12
{mso-style-name:´úÂë³ÌÐò1;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:ËÎÌå;}
p.13, li.13, div.13
{mso-style-name:ͼ˵Ã÷1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.01, li.01, div.01
{mso-style-name:·âÃæ01;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:36.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.112, li.112, div.112
{mso-style-name:·âÃæ11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:18.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.113, li.113, div.113
{mso-style-name:·Ç±êÌâ11;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
margin-left:0cm;
text-align:center;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.14, li.14, div.14
{mso-style-name:Îı¾¾ÓÖÐ1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.3Char1, li.3Char1, div.3Char1
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
p.post1, li.post1, div.post1
{mso-style-name:Óʼþpost1;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
line-height:11.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.31, li.31, div.31
{mso-style-name:ͼÖÐ×ÖÌå31;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.5Char1, li.5Char1, div.5Char1
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.5CharChar1, li.5CharChar1, div.5CharChar1
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.5Char10, li.5Char10, div.5Char10
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.51, li.51, div.51
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.120, li.120, div.120
{mso-style-name:Ñùʽ12;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.02, li.02, div.02
{mso-style-name:·âÃæ02;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:36.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.121, li.121, div.121
{mso-style-name:·âÃæ12;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:18.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.122, li.122, div.122
{mso-style-name:·Ç±êÌâ12;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
margin-left:0cm;
text-align:center;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.3Char2, li.3Char2, div.3Char2
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
p.post2, li.post2, div.post2
{mso-style-name:Óʼþpost2;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
line-height:11.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.32, li.32, div.32
{mso-style-name:ͼÖÐ×ÖÌå32;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.5Char2, li.5Char2, div.5Char2
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.52, li.52, div.52
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ2;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
p.130, li.130, div.130
{mso-style-name:Ñùʽ13;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.30, li.30, div.30
{mso-style-name:´úÂë³ÌÐò3;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:ËÎÌå;}
p.03, li.03, div.03
{mso-style-name:·âÃæ03;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:36.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.131, li.131, div.131
{mso-style-name:·âÃæ13;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:18.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.132, li.132, div.132
{mso-style-name:·Ç±êÌâ13;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
margin-left:0cm;
text-align:center;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.33, li.33, div.33
{mso-style-name:Îı¾¾ÓÖÐ3;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.3Char3, li.3Char3, div.3Char3
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char3";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
p.post3, li.post3, div.post3
{mso-style-name:Óʼþpost3;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
line-height:11.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.330, li.330, div.330
{mso-style-name:ͼÖÐ×ÖÌå33;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.5Char20, li.5Char20, div.5Char20
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.5CharChar2, li.5CharChar2, div.5CharChar2
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.5Char3, li.5Char3, div.5Char3
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char3";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.53, li.53, div.53
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ3;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:9.0pt;
font-family:ËÎÌå;}
p.3Char, li.3Char, div.3Char
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char";
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char5";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:9.0pt;
font-size:8.0pt;
font-family:ËÎÌå;}
span.3CharChar5
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char5";
mso-style-link:"ͼÖÐÎÄ×Ö3 Char";
font-family:ËÎÌå;}
p.54, li.54, div.54
{mso-style-name:ͼÖÐÎÄ×ÖС5½ôÃÜ;
margin:0cm;
margin-bottom:.0001pt;
line-height:9.0pt;
text-autospace:ideograph-numeric;
font-size:9.0pt;
font-family:ËÎÌå;}
p.24, li.24, div.24
{mso-style-name:¾ÓÖÐ2ºÅ´ÖËÎÌå;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.15, li.15, div.15
{mso-style-name:"Ñùʽ ±êÌâ 1 + ¾ÓÖÐ";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
text-align:center;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.25, li.25, div.25
{mso-style-name:"Ñùʽ ±êÌâ 2 + Ðоà\: µ¥±¶Ðоà";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:28.9pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-28.9pt;
page-break-after:avoid;
font-size:16.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
span.2Char
{mso-style-name:"±êÌâ 2 Char";
mso-style-link:"±êÌâ 2";
font-family:"Arial","sans-serif";
font-weight:bold;}
p.34, li.34, div.34
{mso-style-name:Áбí3;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.35, li.35, div.35
{mso-style-name:±í3;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.4, li.4, div.4
{mso-style-name:ͼ˵Ã÷4;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.40, li.40, div.40
{mso-style-name:Áбí4;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.0pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.41, li.41, div.41
{mso-style-name:±í4;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.55, li.55, div.55
{mso-style-name:ͼ˵Ã÷5;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.56, li.56, div.56
{mso-style-name:Áбí5;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.57, li.57, div.57
{mso-style-name:±í5;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.6, li.6, div.6
{mso-style-name:Áбí6;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.60, li.60, div.60
{mso-style-name:±í6;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.61, li.61, div.61
{mso-style-name:ͼ˵Ã÷6;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.7, li.7, div.7
{mso-style-name:Áбí7;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.70, li.70, div.70
{mso-style-name:ͼ˵Ã÷7;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.71, li.71, div.71
{mso-style-name:±í7;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.8, li.8, div.8
{mso-style-name:Áбí8;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.9, li.9, div.9
{mso-style-name:Áбí9;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.90, li.90, div.90
{mso-style-name:ͼ˵Ã÷9;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.100, li.100, div.100
{mso-style-name:Áбí10;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.101, li.101, div.101
{mso-style-name:ͼ˵Ã÷10;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.114, li.114, div.114
{mso-style-name:Áбí11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.115, li.115, div.115
{mso-style-name:ͼ˵Ã÷11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.116, li.116, div.116
{mso-style-name:±í11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.123, li.123, div.123
{mso-style-name:Áбí12;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.124, li.124, div.124
{mso-style-name:ͼ˵Ã÷12;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.133, li.133, div.133
{mso-style-name:ͼ˵Ã÷13;
mso-style-link:"ͼ˵Ã÷13 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
span.13Char
{mso-style-name:"ͼ˵Ã÷13 Char";
mso-style-link:ͼ˵Ã÷13;
font-family:ËÎÌå;}
p.134, li.134, div.134
{mso-style-name:Áбí13;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.26, li.26, div.26
{mso-style-name:¸½Â¼2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:16.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
p.36, li.36, div.36
{mso-style-name:¸½Â¼3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:14.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
span.3Char0
{mso-style-name:"±êÌâ 3 Char";
mso-style-link:"±êÌâ 3";
font-family:"Arial","sans-serif";
font-weight:bold;}
p.16, li.16, div.16
{mso-style-name:¸½Â¼1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
text-align:center;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.17, li.17, div.17
{mso-style-name:¸½Â¼±í1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.42, li.42, div.42
{mso-style-name:¸½Â¼4;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
span.4Char
{mso-style-name:"±êÌâ 4 Char";
mso-style-link:"±êÌâ 4";
font-family:"Arial","sans-serif";
font-weight:bold;}
p.a3, li.a3, div.a3
{mso-style-name:¸½Â¼Í¼ËµÃ÷;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.27, li.27, div.27
{mso-style-name:Ðò±êÌâ2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:28.8pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-28.8pt;
page-break-after:avoid;
font-size:16.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
p.a4, li.a4, div.a4
{mso-style-name:²Î¿¼±êÌâ;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
margin-left:0cm;
text-align:center;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.18, li.18, div.18
{mso-style-name:Ë÷Òý±êÌâ1;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
margin-left:0cm;
text-align:center;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.19, li.19, div.19
{mso-style-name:Áбí1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.25pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.25pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.1a, li.1a, div.1a
{mso-style-name:±í1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.25pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.25pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.37, li.37, div.37
{mso-style-name:ͼ˵Ã÷3;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.62, li.62, div.62
{mso-style-name:±íÖÐ×ÖÌå6ºÅ;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
layout-grid-mode:char;
font-size:7.5pt;
font-family:ËÎÌå;}
p.a5, li.a5, div.a5
{mso-style-name:ÕýÎÄ´úÂë;
mso-style-link:"ÕýÎÄ´úÂë Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char1
{mso-style-name:"ÕýÎÄ´úÂë Char";
mso-style-link:ÕýÎÄ´úÂë;
font-family:ËÎÌå;}
p.43, li.43, div.43
{mso-style-name:"Ñùʽ ±êÌâ 4 +";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial","sans-serif";
font-weight:bold;}
p.140, li.140, div.140
{mso-style-name:±í14;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.25pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.25pt;
font-size:10.5pt;
font-family:ËÎÌå;}
p.141, li.141, div.141
{mso-style-name:ͼ˵Ã÷14;
mso-style-link:"ͼ˵Ã÷14 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.25pt;
margin-bottom:.0001pt;
text-align:center;
text-indent:-21.25pt;
font-size:10.5pt;
font-family:ËÎÌå;}
span.14Char
{mso-style-name:"ͼ˵Ã÷14 Char";
mso-style-link:ͼ˵Ã÷14;
font-family:ËÎÌå;}
p.a6, li.a6, div.a6
{mso-style-name:ÎļþĿ¼±í;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.a7, li.a7, div.a7
{mso-style-name:"Ñùʽ ÕýÎÄ +";
mso-style-link:"Ñùʽ ÕýÎÄ + Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char2
{mso-style-name:"Ñùʽ ÕýÎÄ + Char";
mso-style-link:"Ñùʽ ÕýÎÄ +";
font-family:"Times New Roman","serif";}
p.a8, li.a8, div.a8
{mso-style-name:±í¸ñÌâ×¢;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.a9, li.a9, div.a9
{mso-style-name:ÁбíÌâ×¢;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.aa, li.aa, div.aa
{mso-style-name:ͼÌâ×¢;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.ab, li.ab, div.ab
{mso-style-name:³ÌÐòÌâ×¢;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.ac, li.ac, div.ac
{mso-style-name:¿òÖÐÎÄ×Ö;
margin-top:0cm;
margin-right:21.0pt;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
border:none;
padding:0cm;
font-size:9.0pt;
font-family:ËÎÌå;}
p.125, li.125, div.125
{mso-style-name:"Ñùʽ ±êÌâ 1 + ¾ÓÖÐ2";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
text-align:center;
page-break-after:avoid;
font-size:22.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.ad, li.ad, div.ad
{mso-style-name:"Ñùʽ Ìâ×¢ + ËÎÌå ÎåºÅ ¾ÓÖÐ";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ºÚÌå;}
p.1b, li.1b, div.1b
{mso-style-name:Ðò±êÌâ1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
line-height:240%;
page-break-after:avoid;
font-size:16.0pt;
font-family:ËÎÌå;
font-weight:bold;}
p.38, li.38, div.38
{mso-style-name:Ðò±êÌâ3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:12.0pt;
font-family:·½ÕýС±êËμòÌå;}
p.63, li.63, div.63
{mso-style-name:±íÖÐÎÄ×Ö6ºÅ;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:7.5pt;
font-family:ËÎÌå;}
p.64, li.64, div.64
{mso-style-name:ͼÖÐÎÄ×Ö6ºÅ×óÔÆë;
margin:0cm;
margin-bottom:.0001pt;
line-height:10.0pt;
layout-grid-mode:char;
font-size:7.5pt;
font-family:ËÎÌå;}
p.65, li.65, div.65
{mso-style-name:ͼÖÐÎÄ×Ö6ºÅ;
mso-style-link:"ͼÖÐÎÄ×Ö6ºÅ Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
line-height:10.0pt;
layout-grid-mode:char;
font-size:7.5pt;
font-family:ËÎÌå;}
span.6Char
{mso-style-name:"ͼÖÐÎÄ×Ö6ºÅ Char";
mso-style-link:ͼÖÐÎÄ×Ö6ºÅ;
font-family:ËÎÌå;}
p.ae, li.ae, div.ae
{mso-style-name:ͼ±ê;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.28, li.28, div.28
{mso-style-name:ͼ±ê2;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
p.af, li.af, div.af
{mso-style-name:ϰÌâ±êÌâ;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:14.0pt;
font-family:ºÚÌå;}
p.1c, li.1c, div.1c
{mso-style-name:²¿·Ö±àºÅ1;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:16.0pt;
font-family:ËÎÌå;}
p.af0, li.af0, div.af0
{mso-style-name:±í±êÌâ;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.af1, li.af1, div.af1
{mso-style-name:"Ñùʽ Ìâ×¢ + ¾ÓÖÐ";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:ËÎÌå;}
p.ListTitle, li.ListTitle, div.ListTitle
{mso-style-name:ListTitle;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.FigureTitle, li.FigureTitle, div.FigureTitle
{mso-style-name:FigureTitle;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.TableTitle, li.TableTitle, div.TableTitle
{mso-style-name:TableTitle;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.ProgramTitle, li.ProgramTitle, div.ProgramTitle
{mso-style-name:ProgramTitle;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
font-family:"Arial","sans-serif";}
p.RightText, li.RightText, div.RightText
{mso-style-name:RightText;
margin-top:0cm;
margin-right:21.0pt;
margin-bottom:0cm;
margin-left:42.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
border:none;
padding:0cm;
font-size:9.0pt;
font-family:ËÎÌå;}
p.af2, li.af2, div.af2
{mso-style-name:±íÖÐÎÄ×ÖСÎå;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:9.0pt;
font-family:ËÎÌå;}
p.af3, li.af3, div.af3
{mso-style-name:¹Ø¼ü´Ê;
mso-style-link:"¹Ø¼ü´Ê Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char3
{mso-style-name:"¹Ø¼ü´Ê Char";
mso-style-link:¹Ø¼ü´Ê;
font-family:ËÎÌå;}
p.af4, li.af4, div.af4
{mso-style-name:ÎļþÃû;
mso-style-link:"ÎļþÃû Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char4
{mso-style-name:"ÎļþÃû Char";
mso-style-link:ÎļþÃû;
font-family:ËÎÌå;}
p.af5, li.af5, div.af5
{mso-style-name:Ñ¡Ïî;
mso-style-link:"Ñ¡Ïî Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char5
{mso-style-name:"Ñ¡Ïî Char";
mso-style-link:Ñ¡Ïî;
font-family:ËÎÌå;}
p.af6, li.af6, div.af6
{mso-style-name:ÃüÁîÐÐ;
mso-style-link:"ÃüÁîÐÐ Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char6
{mso-style-name:"ÃüÁîÐÐ Char";
mso-style-link:ÃüÁîÐÐ;
font-family:ËÎÌå;}
p.af7, li.af7, div.af7
{mso-style-name:º¯ÊýÃû;
mso-style-link:"º¯ÊýÃû Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char7
{mso-style-name:"º¯ÊýÃû Char";
mso-style-link:º¯ÊýÃû;
font-family:ËÎÌå;}
p.af8, li.af8, div.af8
{mso-style-name:¼Ä´æÆ÷Ãû;
mso-style-link:"¼Ä´æÆ÷Ãû Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char8
{mso-style-name:"¼Ä´æÆ÷Ãû Char";
mso-style-link:¼Ä´æÆ÷Ãû;
font-family:"Times New Roman","serif";}
p.af9, li.af9, div.af9
{mso-style-name:±äÁ¿Ãû;
mso-style-link:"±äÁ¿Ãû Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:ËÎÌå;}
span.Char9
{mso-style-name:"±äÁ¿Ãû Char";
mso-style-link:±äÁ¿Ãû;
font-family:ËÎÌå;}
p.58, li.58, div.58
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ×ó;
margin:0cm;
margin-bottom:.0001pt;
font-size:9.0pt;
font-family:ËÎÌå;}
p.59, li.59, div.59
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ¿¿×ó;
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:9.0pt;
font-family:ËÎÌå;}
p.926, li.926, div.926
{mso-style-name:"Ñùʽ ´úÂë³ÌÐò + ×ó²à\: 9\.26 ÀåÃ×";
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:10.0pt;
font-family:ËÎÌå;}
span.5Char4
{mso-style-name:"±êÌâ 5 Char";
mso-style-link:"±êÌâ 5";
font-weight:bold;}
span.6Char0
{mso-style-name:"±êÌâ 6 Char";
mso-style-link:"±êÌâ 6";
font-family:"Arial","sans-serif";
font-weight:bold;}
span.7Char
{mso-style-name:"±êÌâ 7 Char";
mso-style-link:"±êÌâ 7";
font-weight:bold;}
span.8Char
{mso-style-name:"±êÌâ 8 Char";
mso-style-link:"±êÌâ 8";
font-family:"Arial","sans-serif";}
span.9Char
{mso-style-name:"±êÌâ 9 Char";
mso-style-link:"±êÌâ 9";
font-family:"Arial","sans-serif";}
span.Chara
{mso-style-name:"½Å×¢Îı¾ Char";
mso-style-link:½Å×¢Îı¾;
font-family:ËÎÌå;}
span.Charb
{mso-style-name:"Åú×¢ÎÄ×Ö Char";
mso-style-link:Åú×¢ÎÄ×Ö;
font-family:ËÎÌå;}
span.Charc
{mso-style-name:"ҳü Char";
mso-style-link:ҳü;
font-family:ËÎÌå;}
span.Chard
{mso-style-name:"Ò³½Å Char";
mso-style-link:Ò³½Å;
font-family:ËÎÌå;}
span.Chare
{mso-style-name:"ÈÕÆÚ Char";
mso-style-link:ÈÕÆÚ;
font-family:ËÎÌå;}
span.HTMLChar
{mso-style-name:"HTML Ô¤Éè¸ñʽ Char\,HTML Ô¤Ïȸñʽ»¯ Char\,HTML Ô¤Ïȸñʽ»¯1 Char\,HTML Ô¤Ïȸñʽ»¯2 Char\,HTML Ô¤Ïȸñʽ»¯3 Char";
mso-style-link:"HTML Ô¤Éè¸ñʽ\,HTML Ô¤Ïȸñʽ»¯\,HTML Ô¤Ïȸñʽ»¯1\,HTML Ô¤Ïȸñʽ»¯2\,HTML Ô¤Ïȸñʽ»¯3";
font-family:ËÎÌå;}
span.Charf
{mso-style-name:"Åú×¢Ö÷Ìâ Char";
mso-style-link:Åú×¢Ö÷Ìâ;
font-family:ËÎÌå;
font-weight:bold;}
span.Charf0
{mso-style-name:"Åú×¢¿òÎı¾ Char";
mso-style-link:Åú×¢¿òÎı¾;
font-family:ËÎÌå;}
span.5CharCharChar0
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char Char Char";
font-family:ËÎÌå;}
span.5CharCharCharChar
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char Char Char";
font-family:ËÎÌå;}
span.msoIns
{mso-style-name:"";
text-decoration:underline;
color:teal;}
span.msoDel
{mso-style-name:"";
text-decoration:line-through;
color:red;}
.MsoChpDefault
{font-size:10.0pt;}
/* Page Definitions */
@page WordSection1
{size:595.3pt 841.9pt;
margin:72.0pt 54.0pt 72.0pt 54.0pt;
layout-grid:15.6pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
</head>
<body lang=ZH-CN link=blue vlink=purple style='text-justify-trim:punctuation'>
<div class=WordSection1 style='layout-grid:15.6pt'>
<p class=ab><a name="_Toc53320598"><span style='font-family:ºÚÌå'>³ÌÐò</span><span
lang=EN-US> 6&#8209;2 linux/boot/setup.S</span></a></p>
<div class=a align=center style='text-align:center'><span lang=EN-US>
<hr size=4 width="100%" align=center>
</span></div>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L1">1</a> !</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L2">2</a>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
setup.s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (C) 1991 Linus Torvalds</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L3">3</a> !</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L4">4</a> ! setup.s
is responsible for getting the system data from the BIOS,</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L5">5</a> ! and
putting them into the appropriate places in system memory.</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L6">6</a> ! both
setup.s and system has been loaded by the bootblock.</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L7">7</a> !</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L8">8</a> ! This
code asks the bios for memory/disk/other parameters, and</span></p>
<p class=a><span lang=EN-US>&nbsp; <a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L9">9</a> ! puts
them in a &quot;safe&quot; place: 0x90000-0x901FF, ie where the</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L10">10</a> !
boot-block used to be. It is then up to the protected mode</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L11">11</a> !
system to read them from there before the area is overwritten</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L12">12</a> ! for
buffer-blocks.</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L13">13</a> !</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! setup.s</span>¸ºÔð´Ó<span
lang=EN-US>BIOS</span>ÖлñȡϵͳÊý¾Ý£¬²¢½«ÕâЩÊý¾Ý·Åµ½ÏµÍ³ÄÚ´æµÄÊʵ±</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µØ·½¡£´Ëʱ<span lang=EN-US>setup.s</span>ºÍ<span
lang=EN-US>system</span>ÒѾ­ÓÉ<span lang=EN-US>bootsect</span>Òýµ¼¿é¼ÓÔØµ½ÄÚ´æÖС£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Õâ¶Î´úÂëѯÎÊ<span lang=EN-US>bios</span>ÓйØÄÚ´æ<span
lang=EN-US>/</span>´ÅÅÌ<span lang=EN-US>/</span>ÆäËû²ÎÊý£¬²¢½«ÕâЩ²ÎÊý·Åµ½Ò»¸ö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¡°°²È«µÄ¡±µØ·½£º<span
lang=EN-US>0x90000-0x901FF</span>£¬Ò²¼´Ô­À´<span lang=EN-US>bootsect</span>´úÂë¿éÔø¾­ÔÚ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄµØ·½£¬È»ºóÔÚ±»»º³å¿é¸²¸Çµô֮ǰÓɱ£»¤Ä£Ê½µÄ<span
lang=EN-US>system</span>¶ÁÈ¡¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L14">14</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L15">15</a> ! NOTE!
These had better be the same as in bootsect.s!</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÒÔÏÂÕâЩ²ÎÊý×îºÃºÍ<span
lang=EN-US>bootsect.s</span>ÖеÄÏàͬ£¡</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L16">16</a>
#include &lt;linux/config.h&gt;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! config.h</span>Öж¨ÒåÁË<span
lang=EN-US>DEF_INITSEG = 0x9000</span>£»<span lang=EN-US>DEF_SYSSEG = 0x1000</span>£»<span
lang=EN-US>DEF_SETUPSEG = 0x9020</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L17">17</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L18">18</a>
INITSEG&nbsp; = DEF_INITSEG&nbsp; ! we move boot here - out of the way ! </span>Ô­À´<span
lang=EN-US>bootsect</span>Ëù´¦µÄ¶Î¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L19">19</a>
SYSSEG&nbsp;&nbsp; = DEF_SYSSEG&nbsp;&nbsp; ! system loaded at 0x10000 (65536).&nbsp;
! system</span>ÔÚ<span lang=EN-US>0x10000</span>´¦¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L20">20</a>
SETUPSEG = DEF_SETUPSEG ! this is the current segment&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>±¾³ÌÐòËùÔڵĶεØÖ·¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L21">21</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L22">22</a> .globl
begtext, begdata, begbss, endtext, enddata, endbss</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L23">23</a> .text</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L24">24</a>
begtext:</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L25">25</a> .data</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L26">26</a>
begdata:</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L27">27</a> .bss</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L28">28</a> begbss:</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L29">29</a> .text</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L30">30</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L31">31</a> entry
start</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L32">32</a> start:</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L33">33</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L34">34</a> ! ok,
the read went well so we get current cursor position and save it for</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L35">35</a> !
posterity.</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! ok</span>£¬Õû¸ö¶Á´ÅÅ̹ý³Ì¶¼Õý³££¬ÏÖÔÚ½«¹â±êλÖñ£´æÒÔ±¸½ñºóʹÓã¨Ïà¹Ø´úÂëÔÚ<span
lang=EN-US>59--62</span>ÐУ©¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L36">36</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp; &nbsp;! </span>Ͼ佫<span lang=EN-US>ds</span>ÖóÉ<span
lang=EN-US>INITSEG(0x9000)</span>¡£ÕâÒѾ­ÔÚ<span lang=EN-US>bootsect</span>³ÌÐòÖÐÉèÖùý£¬µ«ÊÇÏÖÔÚÊÇ<span
lang=EN-US>setup</span>³ÌÐò£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp; &nbsp;! Linus</span>¾õµÃÐèÒªÔÙÖØÐÂÉèÖÃһϡ£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L37">37</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#INITSEG </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L38">38</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ds,ax</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L39">39</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L40">40</a> ! Get
memory size (extended mem, kB)</span></p>
<p class=a><span lang=EN-US>&nbsp; &nbsp;&nbsp;! </span>È¡À©Õ¹ÄÚ´æµÄ´óСֵ£¨<span
lang=EN-US>KB</span>£©¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÀûÓÃ<span lang=EN-US>BIOS</span>ÖжÏ<span
lang=EN-US>0x15 </span>¹¦ÄܺÅ<span lang=EN-US>ah = 0x88 </span>ȡϵͳËùº¬À©Õ¹ÄÚ´æ´óС²¢±£´æÔÚÄÚ´æ<span
lang=EN-US>0x90002</span>´¦¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>·µ»Ø£º<span lang=EN-US>ax
= </span>´Ó<span lang=EN-US>0x100000</span>£¨<span
lang=EN-US>1M</span>£©´¦¿ªÊ¼µÄÀ©Õ¹ÄÚ´æ´óС<span lang=EN-US>(KB)</span>¡£Èô³ö´íÔò<span
lang=EN-US>CF</span>ÖÃ룬<span lang=EN-US>ax = </span>³ö´íÂë¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L41">41</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L42">42</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x88</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L43">43</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x15</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L44">44</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; [2],ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>½«À©Õ¹ÄÚ´æÊýÖµ´æÔÚ<span lang=EN-US>0x90002</span>´¦£¨<span lang=EN-US>1</span>¸ö×Ö£©¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L45">45</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L46">46</a> ! check
for EGA/VGA and some config parameters</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¼ì²éÏÔʾ·½Ê½£¨<span
lang=EN-US>EGA/VGA</span>£©²¢È¡²ÎÊý¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µ÷ÓÃ<span lang=EN-US>BIOS</span>ÖжÏ<span
lang=EN-US>0x10</span>£¬¸½¼Ó¹¦ÄÜÑ¡Ôñ·½Ê½ÐÅÏ¢¡£¹¦Äܺţº<span lang=EN-US>ah = 0x12</span>£¬<span
lang=EN-US>bl = 0x10</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>·µ»Ø£º<span lang=EN-US>bh
=</span>ÏÔʾ״̬¡£<span lang=EN-US>0x00 -</span>²Êɫģʽ£¬<span lang=EN-US>I/O</span>¶Ë¿Ú<span
lang=EN-US>=0x3dX</span>£»<span lang=EN-US>0x01 -</span>µ¥É«Ä£Ê½£¬<span lang=EN-US>I/O</span>¶Ë¿Ú<span
lang=EN-US>=0x3bX</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! bl = </span>°²×°µÄÏÔʾÄÚ´æ¡£<span
lang=EN-US>0x00 - 64k</span>£»<span lang=EN-US>0x01 - 128k</span>£»<span
lang=EN-US>0x02 - 192k</span>£»<span lang=EN-US>0x03 = 256k</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! cx = </span>ÏÔʾ¿¨ÌØÐÔ²ÎÊý<span
lang=EN-US>(</span>²Î¼û³ÌÐòºó¶Ô<span lang=EN-US>BIOS</span>ÊÓÆµÖжÏ<span lang=EN-US>0x10</span>µÄ˵Ã÷<span
lang=EN-US>)</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L47">47</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L48">48</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x12</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L49">49</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bl,#0x10</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L50">50</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L51">51</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; [8],ax&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
0x90008 = ??</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L52">52</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; [10],bx&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
0x9000A =</span>°²×°µÄÏÔʾÄڴ棻<span
lang=EN-US>0x9000B=</span>ÏÔʾ״̬<span lang=EN-US>(</span>²Ê<span lang=EN-US>/</span>µ¥É«<span
lang=EN-US>)</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L53">53</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; [12],cx&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
0x9000C =</span>ÏÔʾ¿¨ÌØÐÔ²ÎÊý¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¼ì²âÆÁÄ»µ±Ç°ÐÐÁÐÖµ¡£ÈôÏÔʾ¿¨ÊÇ<span
lang=EN-US>VGA</span>¿¨Ê±ÔòÇëÇóÓû§Ñ¡ÔñÏÔʾÐÐÁÐÖµ£¬²¢±£´æµ½<span lang=EN-US>0x9000E</span>´¦¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L54">54</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x5019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÔÚ<span
lang=EN-US>ax</span>ÖÐÔ¤ÖÃÆÁĻĬÈÏÐÐÁÐÖµ£¨<span lang=EN-US>ah = 80</span>ÁУ»<span
lang=EN-US>al=25</span>ÐУ©¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L55">55</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; bl,#0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÈôÖжϷµ»Ø<span lang=EN-US>bl</span>ֵΪ<span lang=EN-US>0x10</span>£¬Ôò±íʾ²»ÊÇ<span
lang=EN-US>VGA</span>ÏÔʾ¿¨£¬Ìø×ª¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L56">56</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; novga</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L57">57</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; chsvga&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¼ì²âÏÔʾ¿¨³§¼ÒºÍÀàÐÍ£¬ÐÞ¸ÄÏÔʾÐÐÁÐÖµ£¨µÚ<span lang=EN-US>215</span>ÐУ©¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L58">58</a>
novga:&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; [14],ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>±£´æÆÁÄ»µ±Ç°ÐÐÁÐÖµ£¨<span lang=EN-US>0x9000E</span>£¬<span lang=EN-US>0x9000F</span>£©¡£</p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Õâ¶Î´úÂëʹÓÃ<span lang=EN-US>BIOS</span>ÖжÏÈ¡ÆÁÄ»µ±Ç°¹â±êλÖã¨ÁС¢ÐУ©£¬²¢±£´æÔÚÄÚ´æ<span
lang=EN-US>0x90000</span>´¦£¨<span lang=EN-US>2</span>×Ö½Ú£©¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¿ØÖÆÌ¨³õʼ»¯³ÌÐò»áµ½´Ë´¦¶ÁÈ¡¸ÃÖµ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! BIOS</span>ÖжÏ<span lang=EN-US>0x10</span>¹¦ÄܺÅ<span
lang=EN-US> ah = 0x03</span>£¬¶Á¹â±êλÖá£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÊäÈ룺<span lang=EN-US>bh
= </span>Ò³ºÅ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>·µ»Ø£º<span lang=EN-US>ch
= </span>ɨÃ迪ʼÏߣ»<span lang=EN-US>cl = </span>ɨÃè½áÊøÏߣ»<span lang=EN-US>dh = </span>ÐкÅ<span
lang=EN-US>(0x00</span>¶¥¶Ë<span lang=EN-US>)</span>£»<span lang=EN-US>dl = </span>ÁкÅ<span
lang=EN-US>(0x00</span>×î×ó±ß<span lang=EN-US>)</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L59">59</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!
read cursor pos</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L60">60</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; bh,bh</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L61">61</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp;
0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;!
save it in known place, con_init fetches</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L62">62</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; [0],dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;!
it from 0x90000.</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L63">63</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L64">64</a> ! Get
video-card data:</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÕâ¶ÎÓÃÓÚÈ¡ÏÔʾ¿¨µ±Ç°ÏÔʾģʽ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µ÷ÓÃ<span lang=EN-US>BIOS</span>ÖжÏ<span
lang=EN-US>0x10</span>£¬¹¦ÄܺÅ<span lang=EN-US> ah = 0x0f</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>·µ»Ø£º<span lang=EN-US>ah
= </span>×Ö·ûÁÐÊý£»<span lang=EN-US>al = </span>ÏÔʾģʽ£»<span lang=EN-US>bh = </span>µ±Ç°ÏÔʾҳ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 0x90004(1</span>×Ö<span
lang=EN-US>)</span>´æ·Åµ±Ç°Ò³£»<span lang=EN-US>0x90006</span>´æ·ÅÏÔʾģʽ£»<span
lang=EN-US>0x90007</span>´æ·Å×Ö·ûÁÐÊý¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L65">65</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L66">66</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x0f</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L67">67</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L68">68</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
[4],bx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! bh = display
page</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L69">69</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
[6],ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! al = video mode,
ah = window width</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L70">70</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L71">71</a> ! Get
hd0 data</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>È¡µÚÒ»¸öÓ²Å̵ÄÐÅÏ¢£¨¸´ÖÆÓ²Å̲ÎÊý±í£©¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÚ<span lang=EN-US>1</span>¸öÓ²Å̲ÎÊý±íµÄÊ×µØÖ·¾¹È»ÊÇÖжÏÏòÁ¿<span
lang=EN-US>0x41</span>µÄÏòÁ¿Öµ£¡¶øµÚ<span lang=EN-US>2</span>¸öÓ²Å̲ÎÊý±í½ô½ÓÔÚµÚ<span
lang=EN-US>1</span>¸ö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>±íµÄºóÃæ£¬ÖжÏÏòÁ¿<span
lang=EN-US>0x46</span>µÄÏòÁ¿ÖµÒ²Ö¸ÏòµÚ<span lang=EN-US>2</span>¸öÓ²Å̵IJÎÊý±íÊ×Ö·¡£±íµÄ³¤¶ÈÊÇ<span
lang=EN-US>16</span>¸ö×Ö½Ú¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÁ½¶Î³ÌÐò·Ö±ð¸´ÖÆ<span
lang=EN-US>ROM BIOS</span>ÖÐÓйØÁ½¸öÓ²Å̵IJÎÊý±í£¬<span lang=EN-US>0x90080</span>´¦´æ·ÅµÚ<span
lang=EN-US>1</span>¸öÓ²ÅÌµÄ±í£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 0x90090</span>´¦´æ·ÅµÚ<span
lang=EN-US>2</span>¸öÓ²ÅÌµÄ±í¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L72">72</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÚ<span lang=EN-US>75</span>ÐÐÓï¾ä´ÓÄÚ´æÖ¸¶¨Î»Öô¦¶Áȡһ¸ö³¤Ö¸ÕëÖµ²¢·ÅÈë<span
lang=EN-US>ds</span>ºÍ<span lang=EN-US>si</span>¼Ä´æÆ÷ÖС£<span lang=EN-US>ds</span>ÖзŶεØÖ·£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! si</span>ÊǶÎÄÚÆ«ÒƵØÖ·¡£ÕâÀïÊǰÑÄÚ´æµØÖ·<span
lang=EN-US>4 * 0x41</span>£¨<span lang=EN-US>= 0x104</span>£©´¦±£´æµÄ<span
lang=EN-US>4</span>¸ö×Ö½Ú¶Á³ö¡£Õâ<span lang=EN-US>4</span>×Ö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>½Ú¼´ÊÇÓ²Å̲ÎÊý±íËù´¦Î»ÖÃµÄ¶ÎºÍÆ«ÒÆÖµ¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L73">73</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x0000</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L74">74</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ds,ax</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L75">75</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lds&nbsp;&nbsp;&nbsp;&nbsp; si,[4*0x41]&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>È¡ÖжÏÏòÁ¿<span lang=EN-US>0x41</span>µÄÖµ£¬¼´<span lang=EN-US>hd0</span>²ÎÊý±íµÄµØÖ·<span
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>ds:si</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L76">76</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#INITSEG</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L77">77</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; es,ax</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L78">78</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; di,#0x0080&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>´«ÊäµÄÄ¿µÄµØÖ·<span lang=EN-US>: 0x9000:0x0080 </span><span lang=EN-US
style='font-family:Wingdings'>¨¨</span><span lang=EN-US> es:di</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L79">79</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x10&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>¹²´«Êä<span lang=EN-US>16</span>×Ö½Ú¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L80">80</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rep</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L81">81</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
movsb</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L82">82</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L83">83</a> ! Get
hd1 data</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L84">84</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L85">85</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x0000</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L86">86</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ds,ax</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L87">87</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lds&nbsp;&nbsp;&nbsp;&nbsp; si,[4*0x46]&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>È¡ÖжÏÏòÁ¿<span lang=EN-US>0x46</span>µÄÖµ£¬¼´<span lang=EN-US>hd1</span>²ÎÊý±íµÄµØÖ·<span
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>ds:si</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L88">88</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#INITSEG</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L89">89</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; es,ax</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L90">90</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; di,#0x0090&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>´«ÊäµÄÄ¿µÄµØÖ·<span lang=EN-US>: 0x9000:0x0090 </span><span lang=EN-US
style='font-family:Wingdings'>¨¨</span><span lang=EN-US> es:di</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L91">91</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x10</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L92">92</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rep</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L93">93</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
movsb</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L94">94</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L95">95</a> ! Check
that there IS a hd1 :-)</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¼ì²éϵͳÊÇ·ñÓеÚ<span
lang=EN-US>2</span>¸öÓ²ÅÌ¡£Èç¹ûûÓÐÔò°ÑµÚ<span lang=EN-US>2</span>¸ö±íÇåÁã¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÀûÓÃ<span lang=EN-US>BIOS</span>Öжϵ÷ÓÃ<span
lang=EN-US>0x13</span>µÄÈ¡ÅÌÀàÐ͹¦ÄÜ£¬¹¦ÄܺÅ<span lang=EN-US> ah = 0x15</span>£»</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÊäÈ룺<span lang=EN-US>dl
= </span>Çý¶¯Æ÷ºÅ£¨<span lang=EN-US>0x8X</span>ÊÇÓ²ÅÌ£º<span lang=EN-US>0x80</span>Ö¸µÚ<span
lang=EN-US>1</span>¸öÓ²ÅÌ£¬<span lang=EN-US>0x81</span>µÚ<span lang=EN-US>2</span>¸öÓ²ÅÌ£©</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Êä³ö£º<span lang=EN-US>ah
= </span>ÀàÐÍÂ룻<span lang=EN-US>00 - </span>ûÓÐÕâ¸öÅÌ£¬<span lang=EN-US>CF</span>ÖÃλ£»<span
lang=EN-US>01 - </span>ÊÇÈíÇý£¬Ã»ÓÐ<span lang=EN-US>change-line</span>Ö§³Ö£»</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp;
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
02 - </span>ÊÇÈíÇý<span lang=EN-US>(</span>»òÆäËû¿ÉÒÆ¶¯É豸<span lang=EN-US>)</span>£¬ÓÐ<span
lang=EN-US>change-line</span>Ö§³Ö£»<span lang=EN-US> 03 - </span>ÊÇÓ²ÅÌ¡£</p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L96">96</a> </span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L97">97</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x01500</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L98">98</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dl,#0x81</span></p>
<p class=a><span lang=EN-US>&nbsp;<a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L99">99</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x13</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L100">100</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no_disk1</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L101">101</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; ah,#3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÊÇÓ²ÅÌÂð£¿<span lang=EN-US>(</span>ÀàÐÍ<span lang=EN-US> = 3 </span>£¿<span
lang=EN-US>)</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L102">102</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is_disk1</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L103">103</a>
no_disk1:</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L104">104</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#INITSEG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>µÚ<span lang=EN-US>2</span>¸öÓ²Å̲»´æÔÚ£¬Ôò¶ÔµÚ<span lang=EN-US>2</span>¸öÓ²Å̱íÇåÁã¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L105">105</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; es,ax</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L106">106</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; di,#0x0090</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L107">107</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x10</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L108">108</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x00</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L109">109</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rep</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L110">110</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
stosb</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L111">111</a>
is_disk1:</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L112">112</a> </span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L113">113</a> ! now
we want to move to protected mode ...</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚÎÒÃÇÒª½øÈë±£»¤Ä£Ê½ÖÐÁË<span
lang=EN-US>...</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L114">114</a> </span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L115">115</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! no interrupts allowed !&nbsp;&nbsp;&nbsp;&nbsp; ! </span>´Ó´Ë¿ªÊ¼²»ÔÊÐíÖжϡ£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L116">116</a> </span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L117">117</a> !
first we move the system to it's rightful place</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ê×ÏÈÎÒÃǽ«<span lang=EN-US>system</span>Ä£¿éÒÆµ½ÕýÈ·µÄλÖá£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! bootsect</span>Òýµ¼³ÌÐò»á°Ñ<span
lang=EN-US> system </span>Ä£¿é¶ÁÈëµ½ÄÚ´æ<span lang=EN-US> 0x10000</span>£¨<span
lang=EN-US>64KB</span>£©¿ªÊ¼µÄλÖá£ÓÉÓÚµ±Ê±¼ÙÉè</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! system</span>Ä£¿é×î´ó³¤¶È²»»á³¬¹ý<span
lang=EN-US>0x80000</span>£¨<span lang=EN-US>512KB</span>£©£¬¼´ÆäÄ©¶Ë²»»á³¬¹ýÄÚ´æµØÖ·<span
lang=EN-US>0x90000</span>£¬ËùÒÔ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! bootsect</span>»á°Ñ×Ô¼ºÒƶ¯µ½<span
lang=EN-US>0x90000</span>¿ªÊ¼µÄµØ·½£¬²¢°Ñ<span lang=EN-US>setup</span>¼ÓÔØµ½ËüµÄºóÃæ¡£ÏÂÃæÕâ¶Î³ÌÐòµÄ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÓÃ;ÊÇÔÙ°ÑÕû¸ö<span
lang=EN-US>system</span>Ä£¿éÒÆ¶¯µ½<span lang=EN-US> 0x00000</span>λÖ㬼´°Ñ´Ó<span
lang=EN-US> 0x10000</span>µ½<span lang=EN-US>0x8ffff </span>µÄÄÚ´æÊý¾Ý¿é</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>£¨<span lang=EN-US>512KB</span>£©Õû¿éµØÏòÄÚ´æµÍ¶ËÒÆ¶¯ÁË<span
lang=EN-US>0x10000</span>£¨<span lang=EN-US>64KB</span>£©µÄλÖá£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L118">118</a> </span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L119">119</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x0000</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L120">120</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 'direction'=0, movs moves forward</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L121">121</a>
do_move:</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L122">122</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
es,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! destination
segment ! es:di</span>ÊÇÄ¿µÄµØÖ·<span lang=EN-US>(</span>³õʼΪ<span lang=EN-US>0x0:0x0)</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L123">123</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x1000</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L124">124</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x9000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÒѾ­°Ñ×îºóÒ»¶Î£¨´Ó<span
lang=EN-US>0x8000</span>¶Î¿ªÊ¼µÄ<span lang=EN-US>64KB</span>£©´úÂëÒÆ¶¯Íꣿ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L125">125</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end_move&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÊÇ£¬ÔòÌø×ª¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L126">126</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
ds,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! source
segment&nbsp; ! ds:si</span>ÊÇÔ´µØÖ·<span lang=EN-US>(</span>³õʼΪ<span lang=EN-US>0x1000:0x0)</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L127">127</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sub&nbsp; &nbsp;&nbsp;&nbsp;di,di</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L128">128</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sub&nbsp;&nbsp;&nbsp;&nbsp; si,si</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L129">129</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x8000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÒÆ¶¯<span
lang=EN-US>0x8000</span>×Ö£¨<span lang=EN-US>64KB</span>×Ö½Ú£©¡£</p>
<p class=a><a name=L130></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L130"><span
lang=EN-US>130</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rep</span></p>
<p class=a><a name=L131></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L131"><span
lang=EN-US>131</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
movsw</span></p>
<p class=a><a name=L132></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L132"><span
lang=EN-US>132</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; do_move</span></p>
<p class=a><a name=L133></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L133"><span
lang=EN-US>133</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L134></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L134"><span
lang=EN-US>134</span></a><span lang=EN-US> ! then we load the segment
descriptors</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>´Ëºó£¬ÎÒÃǼÓÔØ¶ÎÃèÊö·û¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>´ÓÕâÀ↑ʼ»áÓöµ½<span
lang=EN-US>32</span>λ±£»¤Ä£Ê½µÄ²Ù×÷£¬Òò´ËÐèÒª<span lang=EN-US>Intel 32</span>λ±£»¤Ä£Ê½±à³Ì·½ÃæµÄ֪ʶÁË£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÓйØÕâ·½ÃæµÄÐÅÏ¢Çë²éÔÄÁбíºóµÄ¼òµ¥½éÉÜ»ò¸½Â¼ÖеÄÏêϸ˵Ã÷¡£ÕâÀï½ö×÷¸ÅҪ˵Ã÷¡£ÔÚ½øÈë</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>±£»¤Ä£Ê½ÖÐÔËÐÐ֮ǰ£¬ÎÒÃÇÐèÒªÊ×ÏÈÉèÖúÃÐèҪʹÓõĶÎÃèÊö·û±í¡£ÕâÀïÐèÒªÉèÖÃÈ«¾ÖÃèÊö·û</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>±íºÍÖжÏÃèÊö·û±í¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; !</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÖ¸Áî<span lang=EN-US>lidt</span>ÓÃÓÚ¼ÓÔØÖжÏÃèÊö·û±í£¨<span
lang=EN-US>IDT</span>£©¼Ä´æÆ÷¡£ËüµÄ²Ù×÷Êý£¨<span lang=EN-US>idt_48</span>£©ÓÐ<span
lang=EN-US>6</span>×Ö½Ú¡£Ç°<span lang=EN-US>2</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>×Ö½Ú£¨×Ö½Ú<span lang=EN-US>0-1</span>£©ÊÇÃèÊö·û±íµÄ×Ö½Ú³¤¶ÈÖµ£»ºó<span
lang=EN-US>4</span>×Ö½Ú£¨×Ö½Ú<span lang=EN-US>2-5</span>£©ÊÇÃèÊö·û±íµÄ<span lang=EN-US>32</span>λÏßÐÔ»ù</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µØÖ·£¬ÆäÐÎʽ²Î¼ûÏÂÃæ<span
lang=EN-US>218--220</span>ÐкÍ<span lang=EN-US>222--224</span>ÐÐ˵Ã÷¡£ÖжÏÃèÊö·û±íÖеÄÿһ¸ö<span
lang=EN-US>8</span>×Ö½Ú±íÏî</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ö¸³ö·¢ÉúÖжÏʱÐèÒªµ÷ÓõĴúÂëÐÅÏ¢¡£ÓëÖжÏÏòÁ¿ÓÐЩÏàËÆ£¬µ«Òª°üº¬¸ü¶àµÄÐÅÏ¢¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; !</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! lgdt</span>Ö¸ÁîÓÃÓÚ¼ÓÔØÈ«¾ÖÃèÊö·û±í£¨<span
lang=EN-US>GDT</span>£©¼Ä´æÆ÷£¬Æä²Ù×÷Êý¸ñʽÓë<span lang=EN-US>lidt</span>Ö¸ÁîµÄÏàͬ¡£È«¾ÖÃèÊö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>·û±íÖеÄÿ¸öÃèÊö·ûÏ<span
lang=EN-US>8</span>×Ö½Ú£©ÃèÊöÁ˱£»¤Ä£Ê½ÏÂÊý¾Ý¶ÎºÍ´úÂë¶Î£¨¿é£©µÄÐÅÏ¢¡£ ÆäÖаüÀ¨</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¶ÎµÄ×î´ó³¤¶ÈÏÞÖÆ£¨<span
lang=EN-US>16</span>룩¡¢¶ÎµÄÏßÐÔµØÖ·»ùÖ·£¨<span lang=EN-US>32</span>룩¡¢¶ÎµÄÌØÈ¨¼¶¡¢¶ÎÊÇ·ñÔÚÄÚ´æ¡¢¶Áд</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ðí¿ÉȨÒÔ¼°ÆäËûһЩ±£»¤Ä£Ê½ÔËÐеıêÖ¾¡£²Î¼ûºóÃæ<span
lang=EN-US>205--216</span>ÐС£</p>
<p class=a><a name=L135></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L135"><span
lang=EN-US>135</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L136></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L136"><span
lang=EN-US>136</span></a><span lang=EN-US> end_move:</span></p>
<p class=a><a name=L137></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L137"><span
lang=EN-US>137</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#SETUPSEG&nbsp;&nbsp;&nbsp; ! right, forgot this
at first. didn't work :-)</span></p>
<p class=a><a name=L138></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L138"><span
lang=EN-US>138</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ds,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! ds</span>Ö¸Ïò±¾³ÌÐò<span lang=EN-US>(setup)</span>¶Î¡£</p>
<p class=a><a name=L139></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L139"><span
lang=EN-US>139</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lidt&nbsp;&nbsp;&nbsp;
idt_48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! load idt with
0,0&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>¼ÓÔØ<span lang=EN-US>IDT</span>¼Ä´æÆ÷¡£</p>
<p class=a><a name=L140></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L140"><span
lang=EN-US>140</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lgdt&nbsp;&nbsp;&nbsp;
gdt_48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! load gdt with
whatever appropriate ! </span>¼ÓÔØ<span lang=EN-US>GDT</span>¼Ä´æÆ÷¡£</p>
<p class=a><a name=L141></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L141"><span
lang=EN-US>141</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L142></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L142"><span
lang=EN-US>142</span></a><span lang=EN-US> ! that was painless, now we enable
A20</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÒÔÉϵIJÙ×÷ºÜ¼òµ¥£¬ÏÖÔÚÎÒÃÇ¿ªÆô<span
lang=EN-US>A20</span>µØÖ·Ïß¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ΪÁËÄܹ»·ÃÎʺÍʹÓÃ<span
lang=EN-US>1MB</span>ÒÔÉϵÄÎïÀíÄڴ棬ÎÒÃÇÐèÒªÊ×ÏÈ¿ªÆô<span lang=EN-US>A20</span>µØÖ·Ïß¡£²Î¼û±¾³ÌÐòÁбíºó</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÓйØ<span lang=EN-US>A20</span>ÐźÅÏßµÄ˵Ã÷¡£¹ØÓÚËùÉæ¼°µÄһЩ¶Ë¿ÚºÍÃüÁ¿É²Î¿¼<span
lang=EN-US>kernel/chr_drv/keyboard.S</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>³ÌÐòºó¶Ô¼üÅ̽ӿڵÄ˵Ã÷¡£ÖÁÓÚ»úÆ÷ÊÇ·ñÕæÕý¿ªÆôÁË<span
lang=EN-US>A20</span>µØÖ·Ïߣ¬ÎÒÃÇ»¹ÐèÒªÔÚ½øÈë±£»¤Ä£Ê½</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ö®ºó£¨ÄÜ·ÃÎÊ<span lang=EN-US>1MB</span>ÒÔÉÏÄÚ´æÖ®ºó£©ÔÚ²âÊÔһϡ£Õâ¸ö¹¤×÷·ÅÔÚÁË<span
lang=EN-US>head.S</span>³ÌÐòÖУ¨<span lang=EN-US>32--36</span>ÐУ©¡£</p>
<p class=a><a name=L143></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L143"><span
lang=EN-US>143</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L144></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L144"><span
lang=EN-US>144</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; empty_8042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>²âÊÔ<span lang=EN-US>8042</span>״̬¼Ä´æÆ÷£¬µÈ´ýÊäÈ뻺³åÆ÷¿Õ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Ö»Óе±ÊäÈ뻺³åÆ÷Ϊ¿Õʱ²Å¿ÉÒÔ¶ÔÆäÖ´ÐÐдÃüÁî¡£</p>
<p class=a><a name=L145></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L145"><span
lang=EN-US>145</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0xD1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! command write ! 0xD1</span>ÃüÁîÂë<span lang=EN-US>-</span>±íʾҪдÊý¾Ýµ½</p>
<p class=a><a name=L146></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L146"><span
lang=EN-US>146</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0x64,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 8042</span>µÄ<span lang=EN-US>P2</span>¶Ë¿Ú¡£<span lang=EN-US>P2</span>¶Ë¿Úλ<span
lang=EN-US>1</span>ÓÃÓÚ<span lang=EN-US>A20</span>ÏßµÄѡͨ¡£</p>
<p class=a><a name=L147></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L147"><span
lang=EN-US>147</span></a><span lang=EN-US> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;
empty_8042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>µÈ´ýÊäÈ뻺³åÆ÷¿Õ£¬¿´ÃüÁîÊÇ·ñ±»½ÓÊÜ¡£</p>
<p class=a><a name=L148></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L148"><span
lang=EN-US>148</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0xDF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! A20 on &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;! </span>ѡͨ<span lang=EN-US>A20</span>µØÖ·ÏߵIJÎÊý¡£</p>
<p class=a><a name=L149></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L149"><span
lang=EN-US>149</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0x60,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Êý¾ÝҪдµ½<span lang=EN-US>0x60</span>¿Ú¡£</p>
<p class=a><a name=L150></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L150"><span
lang=EN-US>150</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; empty_8042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èô´ËʱÊäÈ뻺³åÆ÷Ϊ¿Õ£¬Ôò±íʾ<span lang=EN-US>A20</span>ÏßÒѾ­Ñ¡Í¨¡£</p>
<p class=a><a name=L151></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L151"><span
lang=EN-US>151</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L152></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L152"><span
lang=EN-US>152</span></a><span lang=EN-US> ! well, that went ok, I hope. Now we
have to reprogram the interrupts :-(</span></p>
<p class=a><a name=L153></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L153"><span
lang=EN-US>153</span></a><span lang=EN-US> ! we put them right after the
intel-reserved hardware interrupts, at</span></p>
<p class=a><a name=L154></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L154"><span
lang=EN-US>154</span></a><span lang=EN-US> ! int 0x20-0x2F. There they won't mess up anything. Sadly IBM really</span></p>
<p class=a><a name=L155></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L155"><span
lang=EN-US>155</span></a><span lang=EN-US> ! messed this up with the original
PC, and they haven't been able to</span></p>
<p class=a><a name=L156></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L156"><span
lang=EN-US>156</span></a><span lang=EN-US> ! rectify it afterwards. Thus the
bios puts interrupts at 0x08-0x0f,</span></p>
<p class=a><a name=L157></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L157"><span
lang=EN-US>157</span></a><span lang=EN-US> ! which is used for the internal
hardware interrupts as well. We just</span></p>
<p class=a><a name=L158></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L158"><span
lang=EN-US>158</span></a><span lang=EN-US> ! have to reprogram the 8259's, and
it isn't fun.</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ï£ÍûÒÔÉÏÒ»ÇÐÕý³£¡£ÏÖÔÚÎÒÃDZØÐëÖØÐ¶ÔÖжϽøÐбà³Ì<span
lang=EN-US> :-( </span>ÎÒÃǽ«ËüÃÇ·ÅÔÚÕýºÃ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>´¦ÓÚ<span lang=EN-US>Intel</span>±£ÁôµÄÓ²¼þÖжϺóÃæ£¬¼´<span
lang=EN-US>int 0x20--0x2F</span>¡£ÔÚÄÇÀïËüÃDz»»áÒýÆð³åÍ»¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>²»ÐÒµÄÊÇ<span lang=EN-US>IBM</span>ÔÚÔ­<span
lang=EN-US>PC</span>»úÖиãÔãÁË£¬ÒÔºóҲûÓоÀÕý¹ýÀ´¡£ËùÒÔ<span lang=EN-US>PC</span>»ú<span
lang=EN-US>BIOS</span>°ÑÖжÏ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>·ÅÔÚÁË<span lang=EN-US>0x08--0x0f</span>£¬ÕâЩÖжÏÒ²±»ÓÃÓÚÄÚ²¿Ó²¼þÖжϡ£ËùÒÔÎÒÃǾͱØÐëÖØÐ¶Ô<span
lang=EN-US>8259</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÖжϿØÖÆÆ÷½øÐбà³Ì£¬ÕâÒ»µã¶¼Ã»Òâ˼¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; !</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! PC</span>»úʹÓÃ<span lang=EN-US>2</span>¸ö<span
lang=EN-US>8259A</span>оƬ£¬¹ØÓڶԿɱà³Ì¿ØÖÆÆ÷<span
lang=EN-US>8259A</span>оƬµÄ±à³Ì·½·¨Çë²Î¼û±¾³ÌÐòºóµÄ½éÉÜ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÚ<span lang=EN-US>162</span>ÐÐÉ϶¨ÒåµÄÁ½¸ö×Ö£¨<span
lang=EN-US>0x00eb</span>£©ÊÇÖ±½ÓʹÓûúÆ÷Âë±íʾµÄÁ½ÌõÏà¶ÔÌø×ªÖ¸ÁÆðÑÓʱ×÷Óá£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 0xeb</span>ÊÇÖ±½Ó½üÌø×ªÖ¸ÁîµÄ²Ù×÷Â룬´ø<span
lang=EN-US>1</span>¸ö×Ö½ÚµÄÏà¶ÔÎ»ÒÆÖµ¡£Òò´ËÌø×ª·¶Î§ÊÇ<span lang=EN-US>-127</span>µ½<span
lang=EN-US>127</span>¡£<span lang=EN-US>CPU</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ͨ¹ý°ÑÕâ¸öÏà¶ÔÎ»ÒÆÖµ¼Óµ½<span
lang=EN-US>EIP</span>¼Ä´æÆ÷ÖоÍÐγÉÒ»¸öеÄÓÐЧµØÖ·¡£´Ëʱ<span lang=EN-US>EIP</span>Ö¸ÏòÏÂÒ»Ìõ±»Ö´ÐÐ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄÖ¸Áî¡£Ö´ÐÐʱËù»¨·ÑµÄ<span
lang=EN-US>CPU</span>ʱÖÓÖÜÆÚÊýÊÇ<span lang=EN-US>7</span>ÖÁ<span lang=EN-US>10</span>¸ö¡£<span
lang=EN-US>0x00eb </span>±íÊ¾Ìø×ªÖµÊÇ<span lang=EN-US>0</span>µÄÒ»ÌõÖ¸ÁÒò</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>´Ë»¹ÊÇÖ±½ÓÖ´ÐÐÏÂÒ»ÌõÖ¸Áî¡£ÕâÁ½ÌõÖ¸Áî¹²¿ÉÌṩ<span
lang=EN-US>14--20</span>¸ö<span lang=EN-US>CPU</span>ʱÖÓÖÜÆÚµÄÑÓ³Ùʱ¼ä¡£ÔÚ<span
lang=EN-US>as86</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÖÐûÓбíʾÏàÓ¦Ö¸ÁîµÄÖú¼Ç·û£¬Òò´Ë<span
lang=EN-US>Linus</span>ÔÚ<span lang=EN-US>setup.s</span>µÈһЩ»ã±à³ÌÐòÖоÍÖ±½ÓʹÓûúÆ÷ÂëÀ´±í</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ʾÕâÖÖÖ¸Áî¡£ÁíÍ⣬ÿ¸ö¿Õ²Ù×÷Ö¸Áî<span
lang=EN-US>NOP</span>µÄʱÖÓÖÜÆÚÊýÊÇ<span lang=EN-US>3</span>¸ö£¬Òò´ËÈôÒª´ïµ½ÏàͬµÄÑÓ³ÙЧ¹û¾Í</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÐèÒª<span lang=EN-US>6</span>ÖÁ<span
lang=EN-US>7</span>¸ö<span lang=EN-US>NOP</span>Ö¸Áî¡£</p>
<p class=a><a name=L159></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L159"><span
lang=EN-US>159</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 8259</span>оƬÖ÷Ƭ¶Ë¿ÚÊÇ<span
lang=EN-US>0x20-0x21</span>£¬´ÓƬ¶Ë¿ÚÊÇ<span lang=EN-US>0xA0-0xA1</span>¡£Êä³öÖµ<span
lang=EN-US>0x11</span>±íʾ³õʼ»¯ÃüÁʼ£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ËüÊÇ<span lang=EN-US>ICW1</span>ÃüÁî×Ö£¬±íʾ±ßÑØ´¥·¢¡¢¶àƬ<span
lang=EN-US>8259</span>¼¶Á¬¡¢×îºóÒª·¢ËÍ<span lang=EN-US>ICW4</span>ÃüÁî×Ö¡£</p>
<p class=a><a name=L160></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L160"><span
lang=EN-US>160</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! initialization sequence</span></p>
<p class=a><a name=L161></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L161"><span
lang=EN-US>161</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp;
#0x20,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! send it to 8259A-1 &nbsp;! </span>·¢Ë͵½<span
lang=EN-US>8259A</span>Ö÷оƬ¡£</p>
<p class=a><a name=L162></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L162"><span
lang=EN-US>162</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp;
0x00eb,0x00eb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! jmp
$+2, jmp $+2&nbsp;&nbsp;&nbsp; ! '$'</span>±íʾµ±Ç°Ö¸ÁîµÄµØÖ·£¬</p>
<p class=a><a name=L163></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L163"><span
lang=EN-US>163</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp;
#0xA0,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! and to 8259A-2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÔÙ·¢Ë͵½<span
lang=EN-US>8259A</span>´ÓоƬ¡£</p>
<p class=a><a name=L164></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L164"><span
lang=EN-US>164</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! Linux</span>ϵͳӲ¼þÖжϺű»ÉèÖóɴÓ<span
lang=EN-US>0x20</span>¿ªÊ¼¡£²Î¼û±í<span lang=EN-US>3-2</span>£ºÓ²¼þÖжÏÇëÇóÐźÅÓëÖжϺŶÔÓ¦±í¡£</p>
<p class=a><a name=L165></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L165"><span
lang=EN-US>165</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! start of hardware int's (0x20)</span></p>
<p class=a><a name=L166></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L166"><span
lang=EN-US>166</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp; &nbsp;#0x21,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ËÍÖ÷оƬ<span lang=EN-US>ICW2</span>ÃüÁî×Ö£¬ÉèÖÃÆðʼÖжϺţ¬ÒªËÍÆæ¶Ë¿Ú¡£</p>
<p class=a><a name=L167></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L167"><span
lang=EN-US>167</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L168></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L168"><span
lang=EN-US>168</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! start of hardware int's 2 (0x28)</span></p>
<p class=a><a name=L169></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L169"><span
lang=EN-US>169</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0xA1,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ËÍ´ÓоƬ<span lang=EN-US>ICW2</span>ÃüÁî×Ö£¬´ÓоƬµÄÆðʼÖжϺš£</p>
<p class=a><a name=L170></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L170"><span
lang=EN-US>170</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L171></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L171"><span
lang=EN-US>171</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 8259-1 is master</span></p>
<p class=a><a name=L172></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L172"><span
lang=EN-US>172</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0x21,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ËÍÖ÷оƬ<span lang=EN-US>ICW3</span>ÃüÁî×Ö£¬Ö÷оƬµÄ<span lang=EN-US>IR2</span>Á¬´ÓоƬ<span
lang=EN-US>INT</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>£¡²Î¼û´úÂëÁбíºóµÄ˵Ã÷¡£</p>
<p class=a><a name=L173></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L173"><span
lang=EN-US>173</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L174></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L174"><span
lang=EN-US>174</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 8259-2 is slave</span></p>
<p class=a><a name=L175></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L175"><span
lang=EN-US>175</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0xA1,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ËÍ´ÓоƬ<span lang=EN-US>ICW3</span>ÃüÁî×Ö£¬±íʾ´ÓоƬµÄ<span lang=EN-US>INT</span>Á¬µ½Ö÷о</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;! </span>ƬµÄ<span
lang=EN-US>IR2</span>Òý½ÅÉÏ¡£</p>
<p class=a><a name=L176></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L176"><span
lang=EN-US>176</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L177></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L177"><span
lang=EN-US>177</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 8086 mode for both</span></p>
<p class=a><a name=L178></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L178"><span
lang=EN-US>178</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0x21,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ËÍÖ÷оƬ<span lang=EN-US>ICW4</span>ÃüÁî×Ö¡£<span lang=EN-US>8086</span>ģʽ£»ÆÕͨ<span
lang=EN-US>EOI</span>¡¢·Ç»º³å</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>·½Ê½£¬Ðè·¢ËÍÖ¸ÁîÀ´¸´Î»¡£³õʼ»¯½áÊø£¬Ð¾Æ¬¾ÍÐ÷¡£</p>
<p class=a><a name=L179></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L179"><span
lang=EN-US>179</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L180></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L180"><span
lang=EN-US>180</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0xA1,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>£¡ËÍ´ÓоƬ<span lang=EN-US>ICW4</span>ÃüÁî×Ö£¬ÄÚÈÝͬÉÏ¡£</p>
<p class=a><a name=L181></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L181"><span
lang=EN-US>181</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L182></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L182"><span
lang=EN-US>182</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! mask off all interrupts for now</span></p>
<p class=a><a name=L183></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L183"><span
lang=EN-US>183</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp; &nbsp;&nbsp;#0x21,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÆÁ±ÎÖ÷оƬËùÓÐÖжÏÇëÇó¡£</p>
<p class=a><a name=L184></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L184"><span
lang=EN-US>184</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L185></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L185"><span
lang=EN-US>185</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; #0xA1,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>£¡ÆÁ±Î´ÓоƬËùÓÐÖжÏÇëÇó¡£</p>
<p class=a><a name=L186></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L186"><span
lang=EN-US>186</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L187></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L187"><span
lang=EN-US>187</span></a><span lang=EN-US> ! well, that certainly wasn't fun
:-(. Hopefully it works, and we don't</span></p>
<p class=a><a name=L188></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L188"><span
lang=EN-US>188</span></a><span lang=EN-US> ! need no steenking BIOS anyway
(except for the initial loading :-).</span></p>
<p class=a><a name=L189></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L189"><span
lang=EN-US>189</span></a><span lang=EN-US> ! The BIOS-routine wants lots of
unnecessary data, and it's less</span></p>
<p class=a><a name=L190></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L190"><span
lang=EN-US>190</span></a><span lang=EN-US> ! &quot;interesting&quot; anyway.
This is how REAL programmers do it.</span></p>
<p class=a><a name=L191></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L191"><span
lang=EN-US>191</span></a><span lang=EN-US> !</span></p>
<p class=a><a name=L192></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L192"><span
lang=EN-US>192</span></a><span lang=EN-US> ! Well, now's the time to actually
move into protected mode. To make</span></p>
<p class=a><a name=L193></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L193"><span
lang=EN-US>193</span></a><span lang=EN-US> ! things as simple as possible, we
do no register set-up or anything,</span></p>
<p class=a><a name=L194></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L194"><span
lang=EN-US>194</span></a><span lang=EN-US> ! we let the gnu-compiled 32-bit
programs do that. We just jump to</span></p>
<p class=a><a name=L195></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L195"><span
lang=EN-US>195</span></a><span lang=EN-US> ! absolute address 0x00000, in
32-bit protected mode.</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ºß£¬ÉÏÃæÕâ¶Î±à³Ìµ±È»Ã»¾¢<span
lang=EN-US>:-(</span>£¬µ«Ï£ÍûÕâÑùÄܹ¤×÷£¬¶øÇÒÎÒÃÇÒ²²»ÔÙÐèÒª·¦Î¶µÄ<span lang=EN-US>BIOS </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÁË£¨³ýÁ˳õʼ¼ÓÔØ<span
lang=EN-US>:-)</span>¡£<span lang=EN-US>BIOS</span>×Ó³ÌÐòÒªÇóºÜ¶à²»±ØÒªµÄÊý¾Ý£¬¶øÇÒËüÒ»µã¶¼Ã»È¤¡£ÄÇÊÇ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¡°ÕæÕý¡±µÄ³ÌÐòÔ±Ëù×öµÄÊ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ºÃÁË£¬ÏÖÔÚÊÇÕæÕý¿ªÊ¼½øÈë±£»¤Ä£Ê½µÄʱºòÁË¡£ÎªÁ˰ÑÊÂÇé×öµÃ¾¡Á¿¼òµ¥£¬ÎÒÃDz¢²»¶Ô</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¼Ä´æÆ÷ÄÚÈݽøÐÐÈκÎÉèÖá£ÎÒÃÇÈÃ<span
lang=EN-US>gnu</span>±àÒëµÄ<span lang=EN-US>32</span>λ³ÌÐòÈ¥´¦ÀíÕâЩÊ¡£ÔÚ½øÈë<span
lang=EN-US>32</span>λ±£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>»¤Ä£Ê½Ê±ÎÒÃǽöÊǼòµ¥µØÌø×ªµ½¾ø¶ÔµØÖ·<span
lang=EN-US>0x00000</span>´¦¡£</p>
<p class=a><a name=L196></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L196"><span
lang=EN-US>196</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÉèÖò¢½øÈë<span
lang=EN-US>32</span>λ±£»¤Ä£Ê½ÔËÐС£Ê×ÏȼÓÔØ»úÆ÷״̬×Ö<span lang=EN-US>(lmsw-Load Machine Status
Word)</span>£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ò²³Æ¿ØÖƼĴæÆ÷<span
lang=EN-US>CR0</span>£¬Æä±ÈÌØÎ»<span lang=EN-US>0</span>ÖÃ<span lang=EN-US>1</span>½«µ¼ÖÂ<span
lang=EN-US>CPU</span>Çл»µ½±£»¤Ä£Ê½£¬²¢ÇÒÔËÐÐÔÚÌØÈ¨¼¶<span lang=EN-US>0</span>ÖУ¬¼´</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µ±Ç°ÌØÈ¨¼¶<span lang=EN-US>CPL=0</span>¡£´Ëʱ¶Î¼Ä´æÆ÷ÈÔȻָÏòÓëʵµØÖ·Ä£Ê½ÖÐÏàͬµÄÏßÐÔµØÖ·´¦£¨ÔÚʵµØÖ·Ä£Ê½ÏÂ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏßÐÔµØÖ·ÓëÎïÀíÄÚ´æµØÖ·Ïàͬ£©¡£ÔÚÉèÖøñÈÌØÎ»ºó£¬ËæºóÒ»ÌõÖ¸Áî±ØÐëÊÇÒ»Ìõ¶Î¼äÌø×ªÖ¸ÁîÒÔ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÓÃÓÚË¢ÐÂ<span lang=EN-US>CPU</span>µ±Ç°Ö¸Áî¶ÓÁС£ÒòΪ<span
lang=EN-US>CPU</span>ÊÇÔÚÖ´ÐÐÒ»ÌõÖ¸Áî֮ǰ¾ÍÒÑ´ÓÄÚ´æ¶ÁÈ¡¸ÃÖ¸Áî²¢¶ÔÆä½øÐÐ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>½âÂ롣Ȼ¶øÔÚ½øÈë±£»¤Ä£Ê½ÒÔºóÄÇЩÊôÓÚʵģʽµÄÔ¤ÏÈÈ¡µÃµÄÖ¸ÁîÐÅÏ¢¾Í±äµÃ²»ÔÙÓÐЧ¡£¶øÒ»Ìõ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¶Î¼äÌø×ªÖ¸Áî¾Í»áË¢ÐÂ<span
lang=EN-US>CPU</span>µÄµ±Ç°Ö¸Áî¶ÓÁУ¬¼´¶ªÆúÕâЩÎÞЧÐÅÏ¢¡£ÁíÍ⣬ÔÚ<span lang=EN-US>Intel</span>¹«Ë¾µÄÊÖ²á</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÉϽ¨Òé<span lang=EN-US>80386</span>»òÒÔÉÏ<span
lang=EN-US>CPU</span>Ó¦¸ÃʹÓÃÖ¸Áî<span lang=EN-US>¡°mov cr0,ax</span>¡±Çл»µ½±£»¤Ä£Ê½¡£<span
lang=EN-US>lmsw</span>Ö¸Áî½öÓÃÓÚ¼æÈÝÒÔ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ǰµÄ<span lang=EN-US>286 CPU</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><a name=L197></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L197"><span
lang=EN-US>197</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x0001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !
protected mode (PE) bit &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;! </span>±£»¤Ä£Ê½±ÈÌØÎ»<span
lang=EN-US>(PE)</span>¡£</p>
<p class=a><a name=L198></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L198"><span
lang=EN-US>198</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lmsw&nbsp;&nbsp;&nbsp;
ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! This is it!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¾ÍÕâÑù¼ÓÔØ»úÆ÷״̬×Ö<span lang=EN-US>!</span></p>
<p class=a><a name=L199></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L199"><span
lang=EN-US>199</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmpi&nbsp;&nbsp;&nbsp;
0,8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !
jmp offset 0 of segment 8 (cs) ! </span>Ìø×ªÖÁ<span lang=EN-US>cs</span>¶ÎÆ«ÒÆ<span
lang=EN-US>0</span>´¦¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÎÒÃÇÒѾ­½«<span lang=EN-US>system</span>Ä£¿éÒÆ¶¯µ½<span
lang=EN-US>0x00000</span>¿ªÊ¼µÄµØ·½£¬ËùÒÔÉϾäÖÐµÄÆ«ÒƵØÖ·ÊÇ<span lang=EN-US>0</span>¡£¶ø¶ÎÖµ<span
lang=EN-US>8</span>ÒѾ­</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÊDZ£»¤Ä£Ê½ÏµĶÎÑ¡Ôñ·ûÁË£¬ÓÃÓÚÑ¡ÔñÃèÊö·û±íºÍÃèÊö·û±íÏîÒÔ¼°ËùÒªÇóµÄÌØÈ¨¼¶¡£¶ÎÑ¡Ôñ·û³¤</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¶ÈΪ<span lang=EN-US>16</span>루<span
lang=EN-US>2</span>×Ö½Ú£©£»Î»<span lang=EN-US>0-1</span>±íʾÇëÇóµÄÌØÈ¨¼¶<span lang=EN-US>0--3</span>£¬µ«<span
lang=EN-US>Linux</span>²Ù×÷ϵͳֻÓõ½Á½¼¶£º<span lang=EN-US>0</span>¼¶£¨ÄÚ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ºË¼¶£©ºÍ<span lang=EN-US>3</span>¼¶£¨Óû§¼¶£©£»Î»<span
lang=EN-US>2</span>ÓÃÓÚÑ¡ÔñÈ«¾ÖÃèÊö·û±í£¨<span lang=EN-US>0</span>£©»¹ÊǾֲ¿ÃèÊö·û±í<span
lang=EN-US>(1)</span>£»Î»<span lang=EN-US>3-15</span>ÊÇÃè</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Êö·û±íÏîµÄË÷Òý£¬Ö¸³öÑ¡ÔñµÚ¼¸ÏîÃèÊö·û¡£ËùÒÔ¶ÎÑ¡Ôñ·û<span
lang=EN-US>8</span>£¨<span lang=EN-US>0b0000,0000,0000,1000</span>£©±íʾÇëÇó</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÌØÈ¨¼¶<span lang=EN-US>0</span>¡¢Ê¹ÓÃÈ«¾ÖÃèÊö·û±í<span
lang=EN-US>GDT</span>ÖеÚ<span lang=EN-US>2</span>¸ö¶ÎÃèÊö·ûÏ¸ÃÏîÖ¸³ö´úÂëµÄ»ùµØÖ·ÊÇ<span
lang=EN-US>0</span>£¨²Î¼û<span lang=EN-US>571</span>ÐУ©£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Òò´ËÕâÀïµÄÌø×ªÖ¸Áî¾Í»áÈ¥Ö´ÐÐ<span
lang=EN-US>system</span>ÖеĴúÂë¡£ÁíÍ⣬</p>
<p class=a><a name=L200></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L200"><span
lang=EN-US>200</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L201></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L201"><span
lang=EN-US>201</span></a><span lang=EN-US> ! This routine checks that the
keyboard command queue is empty</span></p>
<p class=a><a name=L202></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L202"><span
lang=EN-US>202</span></a><span lang=EN-US> ! No timeout is used - if this hangs
there is something wrong with</span></p>
<p class=a><a name=L203></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L203"><span
lang=EN-US>203</span></a><span lang=EN-US> ! the machine, and we probably
couldn't proceed anyway.</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÕâ¸ö×Ó³ÌÐò¼ì²é¼üÅÌÃüÁî¶ÓÁÐÊÇ·ñΪ¿Õ¡£ÕâÀﲻʹÓó¬Ê±·½·¨<span
lang=EN-US> - </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Èç¹ûÕâÀïËÀ»ú£¬Ôò˵Ã÷<span
lang=EN-US>PC</span>»úÓÐÎÊÌ⣬ÎÒÃǾÍûÓа취ÔÙ´¦ÀíÏÂÈ¥ÁË¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ö»Óе±ÊäÈ뻺³åÆ÷Ϊ¿Õʱ£¨¼üÅÌ¿ØÖÆÆ÷״̬¼Ä´æÆ÷λ<span
lang=EN-US>1 = 0</span>£©²Å¿ÉÒÔ¶ÔÆäÖ´ÐÐдÃüÁî¡£</p>
<p class=a><a name=L204></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L204"><span
lang=EN-US>204</span></a><span lang=EN-US> empty_8042:</span></p>
<p class=a><a name=L205></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L205"><span
lang=EN-US>205</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00eb,0x00eb</span></p>
<p class=a><a name=L206></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L206"><span
lang=EN-US>206</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! 8042 status port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¶Á<span lang=EN-US>AT</span>¼üÅÌ¿ØÖÆÆ÷״̬¼Ä´æÆ÷¡£</p>
<p class=a><a name=L207></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L207"><span
lang=EN-US>207</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
test&nbsp;&nbsp;&nbsp;
al,#2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! is input
buffer full?&nbsp;&nbsp;&nbsp; ! </span>²âÊÔλ<span lang=EN-US>1</span>£¬ÊäÈ뻺³åÆ÷Âú£¿</p>
<p class=a><a name=L208></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L208"><span
lang=EN-US>208</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jnz&nbsp;&nbsp;&nbsp;&nbsp; empty_8042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! yes -
loop</span></p>
<p class=a><a name=L209></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L209"><span
lang=EN-US>209</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</span></p>
<p class=a><a name=L210></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L210"><span
lang=EN-US>210</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L211></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L211"><span
lang=EN-US>211</span></a><span lang=EN-US> ! Routine trying to recognize type
of SVGA-board present (if any)</span></p>
<p class=a><a name=L212></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L212"><span
lang=EN-US>212</span></a><span lang=EN-US> ! and if it recognize one gives the
choices of resolution it offers.</span></p>
<p class=a><a name=L213></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L213"><span
lang=EN-US>213</span></a><span lang=EN-US> ! If one is found the resolution
chosen is given by al,ah (rows,cols).</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÊÇÓÃÓÚʶ±ð<span
lang=EN-US>SVGA</span>ÏÔʾ¿¨£¨ÈôÓеϰ£©µÄ×Ó³ÌÐò¡£Èôʶ±ð³öÒ»¿é¾ÍÏòÓû§</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÌṩѡÔñ·Ö±æÂʵĻú»á£¬²¢°Ñ·Ö±æÂÊ·ÅÈë¼Ä´æÆ÷<span
lang=EN-US>al</span>¡¢<span lang=EN-US>ah</span>£¨ÐС¢ÁУ©Öзµ»Ø¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>×¢ÒâÏÂÃæ<span lang=EN-US>215--566</span>ÐдúÂëÇ£Éæµ½ÖÚ¶àÏÔʾ¿¨¶Ë¿ÚÐÅÏ¢£¬Òò´Ë±È½Ï¸´ÔÓ¡£µ«ÓÉÓÚÕâ¶Î´úÂëÓëÄÚºË</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÔËÐйØÏµ²»´ó£¬Òò´Ë¿ÉÒÔÌø¹ý²»¿´¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÊ×ÏÈÏÔʾ<span lang=EN-US>588</span>ÐÐÉϵÄ<span
lang=EN-US>msg1</span>×Ö·û´®£¨<span lang=EN-US>&quot;</span>°´<span lang=EN-US>&lt;</span>»Ø³µ¼ü<span
lang=EN-US>&gt;</span>²é¿´´æÔÚµÄ<span lang=EN-US>SVGA</span>ģʽ£¬»ò°´ÈÎÒâ¼ü¼ÌÐø<span
lang=EN-US>&quot;</span>£©£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>È»ºóÑ­»·¶ÁÈ¡¼üÅÌ¿ØÖÆÆ÷Êä³ö»º³åÆ÷£¬µÈ´ýÓû§°´¼ü¡£Èç¹ûÓû§°´Ï»سµ¼ü¾ÍÈ¥¼ì²éϵͳ¾ßÓÐ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄ<span lang=EN-US>SVGA</span>ģʽ£¬²¢ÔÚ<span
lang=EN-US>AL</span>ºÍ<span lang=EN-US>AH</span>Öзµ»Ø×î´óÐÐÁÐÖµ£¬·ñÔòÉèÖÃĬÈÏÖµ<span
lang=EN-US>AL=25</span>ÐС¢<span lang=EN-US>AH=80</span>Áв¢·µ»Ø¡£</p>
<p class=a><a name=L214></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L214"><span
lang=EN-US>214</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L215></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L215"><span
lang=EN-US>215</span></a><span lang=EN-US> chsvga: cld</span></p>
<p class=a><a name=L216></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L216"><span
lang=EN-US>216</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; ds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>±£´æ<span lang=EN-US>ds</span>Öµ¡£½«ÔÚ<span lang=EN-US>231</span>ÐУ¨»ò<span
lang=EN-US>490</span>»ò<span lang=EN-US>492</span>ÐУ©µ¯³ö¡£</p>
<p class=a><a name=L217></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L217"><span
lang=EN-US>217</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;
cs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>°ÑĬÈÏÊý¾Ý¶ÎÉèÖóɺʹúÂë¶Îͬһ¸ö¶Î¡£</p>
<p class=a><a name=L218></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L218"><span
lang=EN-US>218</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ds</span></p>
<p class=a><a name=L219></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L219"><span
lang=EN-US>219</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0xc000</span></p>
<p class=a><a name=L220></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L220"><span
lang=EN-US>220</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; es,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! es </span>Ö¸Ïò<span lang=EN-US>0xc000</span>¶Î¡£´Ë´¦ÊÇ<span lang=EN-US>VGA</span>¿¨ÉϵÄ<span
lang=EN-US>ROM BIOS</span>Çø¡£</p>
<p class=a><a name=L221></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L221"><span
lang=EN-US>221</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea &nbsp;&nbsp;&nbsp;&nbsp;si,msg1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! ds:si</span>Ö¸Ïò<span lang=EN-US>msg1</span>×Ö·û´®¡£</p>
<p class=a><a name=L222></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L222"><span
lang=EN-US>222</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prtstr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾÒÔ<span lang=EN-US>NULL</span>½áβµÄ<span lang=EN-US>msg1</span>×Ö·û´®¡£</p>
<p class=a><a name=L223></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L223"><span
lang=EN-US>223</span></a><span lang=EN-US> nokey:&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,#0x60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¶ÁÈ¡¼üÅÌ¿ØÖÆÆ÷Êä³ö»º³åÆ÷£¨À´×Ô¼üÅ̵ÄɨÃèÂë»òÃüÁ¡£</p>
<p class=a><a name=L224></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L224"><span
lang=EN-US>224</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹ûÊÕµ½±È<span lang=EN-US>0x82</span>СµÄɨÃèÂëÔòÊǽÓͨɨÃèÂ룬ÒòΪ<span lang=EN-US>0x82</span>ÊÇ</p>
<p class=a><a name=L225></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L225"><span
lang=EN-US>225</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nokey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>×îС¶Ï¿ªÉ¨ÃèÂëÖµ¡£Ð¡ÓÚ<span lang=EN-US>0x82</span>±íʾ»¹Ã»Óа´¼üËÉ¿ª¡£</p>
<p class=a><a name=L226></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L226"><span
lang=EN-US>226</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0xe0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹ûɨÃèÂë´óÓÚ<span lang=EN-US>0xe0</span>£¬±íʾÊÕµ½µÄÊÇÀ©Õ¹É¨ÃèÂëǰ׺¡£</p>
<p class=a><a name=L227></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L227"><span
lang=EN-US>227</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ja&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nokey</span></p>
<p class=a><a name=L228></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L228"><span
lang=EN-US>228</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x9c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>Èç¹û¶Ï¿ªÉ¨ÃèÂëÊÇ<span lang=EN-US>0x9c</span>£¬±íʾÓû§°´ÏÂ<span
lang=EN-US>/</span>ËÉ¿ªÁ˻سµ¼ü£¬</p>
<p class=a><a name=L229></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L229"><span
lang=EN-US>229</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; svga&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÓÚÊdzÌÐòÌø×ªÈ¥¼ì²éϵͳÊÇ·ñ¾ßÓÐ<span lang=EN-US>SVGA</span>ģʽ¡£</p>
<p class=a><a name=L230></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L230"><span
lang=EN-US>230</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x5019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>·ñÔò°Ñ<span
lang=EN-US>AX</span>Öзµ»ØÐÐÁÐֵĬÈÏÉèÖÃΪ<span lang=EN-US>AL=25</span>ÐС¢<span lang=EN-US>AH=80</span>ÁС£</p>
<p class=a><a name=L231></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L231"><span
lang=EN-US>231</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ds</span></p>
<p class=a><a name=L232></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L232"><span
lang=EN-US>232</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæ¸ù¾Ý<span lang=EN-US>VGA</span>ÏÔʾ¿¨ÉϵÄ<span
lang=EN-US>ROM BIOS</span>Ö¸¶¨Î»Öô¦µÄÌØÕ÷Êý¾Ý´®»òÕßÖ§³ÖµÄÌØ±ð¹¦ÄÜÀ´ÅжϻúÆ÷ÉÏ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>°²×°µÄÊÇÊ²Ã´ÅÆ×ÓµÄÏÔʾ¿¨¡£±¾³ÌÐò¹²Ö§³Ö<span
lang=EN-US>10</span>ÖÖÏÔʾ¿¨µÄÀ©Õ¹¹¦ÄÜ¡£×¢Ò⣬´Ëʱ³ÌÐòÒѾ­ÔÚµÚ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 220</span>ÐаÑ<span lang=EN-US>es</span>Ö¸Ïò<span
lang=EN-US>VGA</span>¿¨ÉÏ<span lang=EN-US>ROM BIOS</span>ËùÔڵĶÎ<span lang=EN-US>0xc000</span>£¨²Î¼ûµÚ<span
lang=EN-US>2</span>Õ£©¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ê×ÏÈÅжÏÊDz»ÊÇ<span
lang=EN-US>ATI</span>ÏÔʾ¿¨¡£ÎÒÃÇ°Ñ <span lang=EN-US>ds:si</span>Ö¸Ïò<span lang=EN-US>595</span>ÐÐÉÏ<span
lang=EN-US>ATI</span>ÏÔʾ¿¨ÌØÕ÷Êý¾Ý´®£¬²¢°Ñ<span lang=EN-US>es:si</span>Ö¸</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ïò<span lang=EN-US>VGA
BIOS</span>ÖÐÖ¸¶¨Î»Öã¨Æ«ÒÆ<span lang=EN-US>0x31</span>£©´¦¡£ÒòΪ¸ÃÌØÕ÷´®¹²ÓÐ<span lang=EN-US>9</span>¸ö×Ö·û£¨<span
lang=EN-US>&quot;761295520&quot;</span>£©£¬Òò´ËÎÒ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÃÇÑ­»·±È½ÏÕâ¸öÌØÕ÷´®¡£Èç¹ûÏàͬÔò±íʾ»úÆ÷ÖеÄ<span
lang=EN-US>VGA</span>¿¨ÊÇ<span lang=EN-US>ATI</span>ÅÆ×ӵģ¬ÓÚÊÇÈÃ<span lang=EN-US>ds:si</span>Ö¸Ïò¸ÃÏÔ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ʾ¿¨¿ÉÒÔÉèÖõÄÐÐÁÐģʽֵ<span
lang=EN-US>dscati</span>£¨µÚ<span lang=EN-US>615</span>ÐУ©£¬ÈÃ<span lang=EN-US>di</span>Ö¸Ïò<span
lang=EN-US>ATI</span>¿¨¿ÉÉèÖõÄÐÐÁиöÊýºÍģʽ£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>²¢Ìø×ªµ½±êºÅ<span lang=EN-US>selmod</span>£¨<span
lang=EN-US>438</span>ÐУ©´¦½øÒ»²½½øÐÐÉèÖá£</p>
<p class=a><a name=L233></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L233"><span
lang=EN-US>233</span></a><span lang=EN-US> svga:&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp;
si,idati&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check ATI 'clues'&nbsp;
! </span>¼ì²éÅжÏ<span lang=EN-US> ATI</span>ÏÔʾ¿¨µÄÊý¾Ý¡£</p>
<p class=a><a name=L234></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L234"><span
lang=EN-US>234</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; di,#0x31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÌØÕ÷´®´Ó<span lang=EN-US>0xc000:0x0031</span>¿ªÊ¼¡£</p>
<p class=a><a name=L235></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L235"><span
lang=EN-US>235</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x09&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÌØÕ÷´®ÓÐ<span lang=EN-US>9</span>¸ö×Ö½Ú¡£</p>
<p class=a><a name=L236></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L236"><span
lang=EN-US>236</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
repe</span></p>
<p class=a><a name=L237></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L237"><span
lang=EN-US>237</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmpsb</span></p>
<p class=a><a name=L238></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L238"><span
lang=EN-US>238</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; noati&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;! </span>ÈôÌØÕ÷´®²»Í¬Ôò±íʾ²»ÊÇ<span lang=EN-US>ATI</span>ÏÔʾ¿¨¡£Ìø×ª¼ÌÐø¼ì²â¿¨¡£</p>
<p class=a><a name=L239></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L239"><span
lang=EN-US>239</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dscati&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹û<span lang=EN-US>9</span>¸ö×Ö½Ú¶¼Ïàͬ£¬±íʾϵͳÖÐÓÐÒ»¿é<span lang=EN-US>ATI</span>ÅÆÏÔʾ¿¨¡£</p>
<p class=a><a name=L240></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L240"><span
lang=EN-US>240</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,moati&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÓÚÊÇ<span lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>ATI</span>¿¨¾ßÓеĿÉÑ¡ÐÐÁÐÖµ£¬<span
lang=EN-US>di</span>Ö¸Ïò¿ÉÑ¡¸öÊý</p>
<p class=a><a name=L241></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L241"><span
lang=EN-US>241</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ºÍģʽÁÐ±í£¬È»ºóÌø×ªµ½<span lang=EN-US>selmod</span>£¨<span lang=EN-US>438</span>ÐУ©´¦¼ÌÐø´¦Àí¡£</p>
<p class=a><a name=L242></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L242"><span
lang=EN-US>242</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚÀ´ÅжÏÊDz»ÊÇ<span
lang=EN-US>Ahead</span>ÅÆ×ÓµÄÏÔʾ¿¨¡£Ê×ÏÈÏò<span lang=EN-US>EGA/VGA </span>ͼÐÎË÷Òý¼Ä´æÆ÷<span
lang=EN-US>0x3ce</span>дÈëÏë·ÃÎʵÄ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ö÷ÔÊÐí¼Ä´æÆ÷Ë÷ÒýºÅ<span
lang=EN-US>0x0f</span>£¬Í¬Ê±Ïò<span
lang=EN-US>0x3cf</span>¶Ë¿Ú£¨´Ëʱ¶ÔÓ¦Ö÷ÔÊÐí¼Ä´æÆ÷£©Ð´È뿪ÆôÀ©Õ¹¼Ä´æÆ÷</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>±êÖ¾Öµ<span lang=EN-US>0x20</span>¡£È»ºóͨ¹ý<span
lang=EN-US>0x3cf</span>¶Ë¿Ú¶ÁÈ¡Ö÷ÔÊÐí¼Ä´æÆ÷Öµ£¬ÒÔ¼ì²éÊÇ·ñ¿ÉÒÔÉèÖÿªÆôÀ©Õ¹¼Ä´æÆ÷</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>±êÖ¾¡£Èç¹û¿ÉÒÔÔò˵Ã÷ÊÇ<span
lang=EN-US>Ahead</span>ÅÆ×ÓµÄÏÔʾ¿¨¡£×¢Òâ<span lang=EN-US>word</span>Êä³öʱ<span
lang=EN-US>al</span><span lang=EN-US style='font-family:Wingdings'>¨¨</span>¶Ë¿Ú<span
lang=EN-US>n</span>£¬<span lang=EN-US>ah</span><span lang=EN-US
style='font-family:Wingdings'>¨¨</span>¶Ë¿Ú<span lang=EN-US>n+1</span>¡£</p>
<p class=a><a name=L243></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L243"><span
lang=EN-US>243</span></a><span lang=EN-US> noati:&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x200f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Ahead 'clues'</span></p>
<p class=a><a name=L244></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L244"><span
lang=EN-US>244</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3ce&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Êý¾Ý¶Ë¿ÚÖ¸ÏòÖ÷ÔÊÐí¼Ä´æÆ÷£¨<span lang=EN-US>0x0f</span><span
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>0x3ce</span>¶Ë¿Ú£©£¬</p>
<p class=a><a name=L245></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L245"><span
lang=EN-US>245</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,ax &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>²¢ÉèÖÿªÆôÀ©Õ¹¼Ä´æÆ÷±êÖ¾£¨<span lang=EN-US>0x20</span><span lang=EN-US
style='font-family:Wingdings'>¨¨</span><span lang=EN-US>0x3cf</span>¶Ë¿Ú£©¡£</p>
<p class=a><a name=L246></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L246"><span
lang=EN-US>246</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóÔÙ¶ÁÈ¡¸Ã¼Ä´æÆ÷£¬¼ì²é¸Ã±êÖ¾ÊÇ·ñ±»ÉèÖÃÉÏ¡£</p>
<p class=a><a name=L247></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L247"><span
lang=EN-US>247</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx</span></p>
<p class=a><a name=L248></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L248"><span
lang=EN-US>248</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹û¶ÁȡֵÊÇ<span lang=EN-US>0x20</span>£¬Ôò±íʾÊÇ<span lang=EN-US>Ahead A</span>ÏÔʾ¿¨¡£</p>
<p class=a><a name=L249></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L249"><span
lang=EN-US>249</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isahed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹û¶ÁȡֵÊÇ<span lang=EN-US>0x21</span>£¬Ôò±íʾÊÇ<span lang=EN-US>Ahead B</span>ÏÔʾ¿¨¡£</p>
<p class=a><a name=L250></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L250"><span
lang=EN-US>250</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>·ñÔò˵Ã÷²»ÊÇ<span lang=EN-US>Ahead</span>ÏÔʾ¿¨£¬ÓÚÊÇÌø×ª¼ÌÐø¼ì²âÆäÓ࿨¡£</p>
<p class=a><a name=L251></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L251"><span
lang=EN-US>251</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; noahed</span></p>
<p class=a><a name=L252></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L252"><span
lang=EN-US>252</span></a><span lang=EN-US> isahed: lea&nbsp;&nbsp;&nbsp;&nbsp;
si,dscahead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! si </span>Ö¸Ïò<span lang=EN-US>Ahead</span>ÏÔʾ¿¨¿ÉÑ¡ÐÐÁÐÖµ±í£¬<span
lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸ö</p>
<p class=a><a name=L253></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L253"><span
lang=EN-US>253</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,moahead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÊýºÍÀ©Õ¹Ä£Ê½ºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
lang=EN-US>selmod</span>£¨<span lang=EN-US>438</span>ÐУ©´¦¼Ì</p>
<p class=a><a name=L254></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L254"><span
lang=EN-US>254</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Ðø´¦Àí¡£</p>
<p class=a><a name=L255></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L255"><span
lang=EN-US>255</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚÀ´¼ì²éÊDz»ÊÇ<span
lang=EN-US>Chips &amp; Tech</span>Éú²úµÄÏÔʾ¿¨¡£Í¨¹ý¶Ë¿Ú<span lang=EN-US>0x3c3</span>£¨<span
lang=EN-US>0x94</span>»ò<span lang=EN-US>0x46e8</span>£©ÉèÖÃ<span lang=EN-US>VGA</span>ÔÊÐí</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¼Ä´æÆ÷µÄ½øÈëÉèÖÃģʽ±êÖ¾£¨Î»<span
lang=EN-US>4</span>£©£¬È»ºó´Ó¶Ë¿Ú<span lang=EN-US>0x104</span>¶ÁÈ¡ÏÔʾ¿¨Ð¾Æ¬¼¯±êʶֵ¡£Èç¹û¸Ã±êʶֵ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÊÇ<span lang=EN-US>0xA5</span>£¬Ôò˵Ã÷ÊÇ<span
lang=EN-US>Chips &amp; Tech</span>Éú²úµÄÏÔʾ¿¨¡£</p>
<p class=a><a name=L256></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L256"><span
lang=EN-US>256</span></a><span lang=EN-US> noahed: mov&nbsp;&nbsp;&nbsp;&nbsp;
dx,#0x3c3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Chips &amp; Tech. 'clues'</span></p>
<p class=a><a name=L257></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L257"><span
lang=EN-US>257</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>´Ó<span lang=EN-US>0x3c3</span>¶Ë¿Ú¶ÁÈ¡<span
lang=EN-US>VGA</span>ÔÊÐí¼Ä´æÆ÷Öµ£¬Ìí¼ÓÉϽøÈëÉèÖÃģʽ</p>
<p class=a><a name=L258></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L258"><span
lang=EN-US>258</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,#0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>±êÖ¾£¨Î»<span lang=EN-US>4</span>£©ºóÔÙд»Ø¡£</p>
<p class=a><a name=L259></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L259"><span
lang=EN-US>259</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><a name=L260></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L260"><span
lang=EN-US>260</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÔÚÉèÖÃģʽʱ´ÓÈ«¾Ö±êʶ¶Ë¿Ú<span lang=EN-US>0x104</span>¶ÁÈ¡ÏÔʾ¿¨Ð¾Æ¬±êʶֵ£¬</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L261">261</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>²¢ÔÝʱ´æ·ÅÔÚ<span lang=EN-US>bl</span>¼Ä´æÆ÷ÖС£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L262">262</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bl,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L263">263</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3c3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>È»ºó°Ñ<span lang=EN-US>0x3c3</span>¶Ë¿ÚÖеĽøÈëÉèÖÃģʽ±êÖ¾¸´Î»¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L264">264</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L265">265</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; al,#0xef</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L266">266</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L267">267</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; bl,[idcandt]&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÔÙ°Ñ<span
lang=EN-US>bl</span>ÖбêʶֵÓëλÓÚ<span lang=EN-US>idcandt</span>´¦£¨µÚ<span lang=EN-US>596</span>ÐУ©µÄ<span
lang=EN-US>Chips &amp;</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L268">268</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; nocant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! Tech</span>µÄ±êʶֵ<span lang=EN-US>0xA5</span>×÷±È½Ï¡£Èç¹û²»Í¬ÔòÌø×ª±È½ÏÏÂÒ»ÖÖÏÔ¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L269">269</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dsccandt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÈÃ<span
lang=EN-US>si</span>Ö¸ÏòÕâÖÖÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬<span lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊý</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L270">270</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,mocandt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ºÍÀ©Õ¹Ä£Ê½ºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
lang=EN-US>selmod</span>£¨<span lang=EN-US>438</span>ÐУ©½øÐÐÉèÖÃ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L271">271</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾģʽµÄ²Ù×÷¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L272">272</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
lang=EN-US>Cirrus</span>ÏÔʾ¿¨¡£·½·¨ÊÇʹÓÃ<span lang=EN-US>CRT</span>¿ØÖÆÆ÷Ë÷ÒýºÅ<span
lang=EN-US>0x1f</span>¼Ä´æÆ÷µÄÄÚÈÝÀ´³¢ÊÔ½ûÖ¹À©Õ¹</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¹¦ÄÜ¡£¸Ã¼Ä´æÆ÷±»³ÆÎªÓ¥±ê£¨<span
lang=EN-US>Eagle ID</span>£©¼Ä´æÆ÷£¬½«ÆäÖµ¸ßµÍ°ë×Ö½Ú½»»»Ò»ÏºóдÈë¶Ë¿Ú<span lang=EN-US>0x3c4</span>Ë÷</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÒýµÄ<span lang=EN-US>6</span>ºÅ£¨¶¨Ðò<span
lang=EN-US>/</span>À©Õ¹£©¼Ä´æÆ÷Ó¦¸Ã»á½ûÖ¹<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨µÄÀ©Õ¹¹¦ÄÜ¡£Èç¹û²»»áÔò˵Ã÷²»ÊÇ<span
lang=EN-US>Cirrus</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÔʾ¿¨¡£ÒòΪ´Ó¶Ë¿Ú<span
lang=EN-US>0x3d4</span>Ë÷ÒýµÄ<span lang=EN-US>0x1f</span>Ó¥±ê¼Ä´æÆ÷ÖжÁÈ¡µÄÄÚÈÝÊÇÓ¥±êÖµÓë<span
lang=EN-US>0x0c</span>Ë÷ÒýºÅ¶ÔÓ¦µÄÏÔ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝÒì»ò²Ù×÷Ö®ºóµÄÖµ£¬Òò´ËÔÚ¶Á<span
lang=EN-US>0x1f</span>ÖÐÄÚÈÝ֮ǰÎÒÃÇÐèÒªÏȰÑÏÔ´æÆðʼ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¸ß×ֽڼĴæÆ÷ÄÚÈݱ£´æºóÇåÁ㣬²¢ÔÚ¼ì²éºó»Ö¸´Ö®¡£ÁíÍ⣬½«Ã»Óн»»»¹ýµÄ<span
lang=EN-US>Eagle ID</span>ֵдµ½<span lang=EN-US>0x3c4</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¶Ë¿ÚË÷ÒýµÄ<span lang=EN-US>6</span>ºÅ¶¨Ðò<span
lang=EN-US>/</span>À©Õ¹¼Ä´æÆ÷»áÖØÐ¿ªÆôÀ©Õ¹¹¦ÄÜ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L273">273</a>
nocant: mov&nbsp;&nbsp;&nbsp;&nbsp;
dx,#0x3d4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Cirrus 'clues'</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L274">274</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>Ê×ÏÈÏò<span lang=EN-US>CRT</span>¿ØÖƼĴæÆ÷µÄË÷Òý¼Ä´æÆ÷¶Ë¿Ú<span lang=EN-US>0x3d4</span>дÈëÒª·ÃÎÊ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L275">275</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>µÄ¼Ä´æÆ÷Ë÷ÒýºÅ<span lang=EN-US>0x0c</span>£¨¶ÔÓ¦ÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷£©£¬</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L276">276</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºó´Ó<span lang=EN-US>0x3d5</span>¶Ë¿Ú¶ÁÈëÏÔ´æÆðʼµØÖ·¸ß×Ö½Ú²¢ÔÝ´æÔÚ<span lang=EN-US>bl</span>ÖУ¬</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L277">277</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÔÙ°ÑÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÇåÁã¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L278">278</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bl,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L279">279</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; al,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L280">280</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L281">281</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dec&nbsp;&nbsp;&nbsp; &nbsp;dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>½Ó×ÅÏò<span lang=EN-US>0x3d4</span>¶Ë¿ÚÊä³öË÷Òý<span lang=EN-US>0x1f</span>£¬Ö¸³öÎÒÃÇÒªÔÚ<span
lang=EN-US>0x3d5</span>¶Ë¿Ú</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L282">282</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x1f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>·ÃÎʶÁÈ¡¡°<span lang=EN-US>Eagle ID</span>¡±¼Ä´æÆ÷ÄÚÈÝ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L283">283</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L284">284</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L285">285</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>´Ó<span lang=EN-US>0x3d5</span>¶Ë¿Ú¶ÁÈ¡¡°<span lang=EN-US>Eagle ID</span>¡±¼Ä´æÆ÷Öµ£¬²¢ÔÝ´æÔÚ<span
lang=EN-US>bh</span>ÖС£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L286">286</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bh,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºó°Ñ¸ÃÖµ¸ßµÍ<span lang=EN-US>4</span>±ÈÌØ»¥»»Î»Öôæ·Åµ½<span lang=EN-US>cl</span>ÖС£ÔÙ×óÒÆ<span
lang=EN-US>8</span>λ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L287">287</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; ah,ah&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ºó·ÅÈë<span lang=EN-US>ch</span>ÖУ¬¶ø<span lang=EN-US>cl</span>ÖзÅÈëÊýÖµ<span
lang=EN-US>6</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L288">288</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shl&nbsp;&nbsp;&nbsp;&nbsp; al,#4</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L289">289</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,ax</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L290">290</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,bh</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L291">291</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shr&nbsp;&nbsp;&nbsp;&nbsp; al,#4</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L292">292</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; cx,ax</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L293">293</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shl&nbsp;&nbsp;&nbsp;&nbsp; cx,#8</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L294">294</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; cx,#6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>×îºó°Ñ<span lang=EN-US>cx</span>Öµ´æ·ÅÈë<span lang=EN-US>ax</span>ÖС£´Ëʱ<span
lang=EN-US>ah</span>ÖÐÊÇ»»Î»ºóµÄ¡°<span lang=EN-US>Eagle</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L295">295</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,cx&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
ID</span>¡±Öµ£¬<span lang=EN-US>al</span>ÖÐÊÇË÷ÒýºÅ<span lang=EN-US>6</span>£¬¶ÔÓ¦¶¨Ðò<span
lang=EN-US>/</span>À©Õ¹¼Ä´æÆ÷¡£°Ñ<span lang=EN-US>ah</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L296">296</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3c4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>дµ½<span lang=EN-US>0x3c4</span>¶Ë¿ÚË÷ÒýµÄ¶¨Ðò<span
lang=EN-US>/</span>À©Õ¹¼Ä´æÆ÷Ó¦¸Ã»áµ¼ÖÂ<span lang=EN-US>Cirrus</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L297">297</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,ax&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>ÏÔʾ¿¨½ûÖ¹À©Õ¹¹¦ÄÜ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L298">298</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L299">299</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹ûÀ©Õ¹¹¦ÄÜÕæµÄ±»½ûÖ¹£¬ÄÇô´Ëʱ¶ÁÈëµÄÖµÓ¦¸ÃΪ<span lang=EN-US>0</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L300">300</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; al,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹û²»Îª<span lang=EN-US>0</span>Ôò±íʾ²»ÊÇ<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨£¬Ìø×ª¼ÌÐø¼ì²éÆäËû¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L301">301</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jnz&nbsp;&nbsp;&nbsp;&nbsp; nocirr</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L302">302</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,bh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÊÇ<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨£¬ÔòÀûÓõÚ<span lang=EN-US>286</span>Ðб£´æÔÚ<span
lang=EN-US>bh</span>Öеġ°<span lang=EN-US>Eagle</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L303">303</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! ID</span>¡±Ô­ÖµÔÙÖØÐ¿ªÆô<span lang=EN-US>Cirrus</span>¿¨À©Õ¹¹¦ÄÜ¡£´Ëʱ¶ÁÈ¡µÄ·µ»Ø</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L304">304</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÖµÓ¦¸ÃΪ<span lang=EN-US>1</span>¡£Èô²»ÊÇ£¬ÔòÈÔȻ˵Ã÷²»ÊÇ<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L305">305</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x01</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L306">306</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; nocirr</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L307">307</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; rst3d4&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>»Ö¸´<span lang=EN-US>CRT</span>¿ØÖÆÆ÷µÄÏÔʾÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L308">308</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dsccirrus&nbsp;&nbsp;&nbsp;&nbsp; ! si</span>Ö¸Ïò<span
lang=EN-US>Cirrus</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ£¬<span lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊý</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L309">309</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,mocirrus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ºÍ¶ÔӦģʽºÅ¡£È»ºóÌø×ªµ½<span
lang=EN-US>selmod</span>´¦È¥Ñ¡ÔñÏÔʾģʽ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L310">310</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L311">311</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¸Ã×Ó³ÌÐòÀûÓñ£´æÔÚ<span
lang=EN-US>bl</span>ÖеÄÖµ£¨µÚ<span lang=EN-US>278</span>ÐУ©»Ö¸´<span lang=EN-US>CRT</span>¿ØÖÆÆ÷µÄÏÔʾÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L312">312</a>
rst3d4: mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3d4</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L313">313</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,bl</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L314">314</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; ah,ah</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L315">315</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shl&nbsp;&nbsp;&nbsp;&nbsp; ax,#8</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L316">316</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x0c</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L317">317</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>×¢Ò⣬ÕâÊÇ<span lang=EN-US>word</span>Êä³ö£¡£¡ <span lang=EN-US>al </span><span
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>0x3d4</span>£¬<span
lang=EN-US>ah </span><span lang=EN-US style='font-family:Wingdings'>¨¨</span><span
lang=EN-US>0x3d5</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L318">318</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚ¼ì²éϵͳÖÐÊDz»ÊÇ<span
lang=EN-US>Everex</span>ÏÔʾ¿¨¡£·½·¨ÊÇÀûÓÃÖжÏ<span lang=EN-US>int 0x10</span>¹¦ÄÜ<span
lang=EN-US>0x70</span>£¨<span lang=EN-US>ax =0x7000</span>£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! bx=0x0000</span>£©µ÷ÓÃ<span
lang=EN-US>Everex</span>µÄÀ©Õ¹ÊÓÆµ<span lang=EN-US>BIOS</span>¹¦ÄÜ¡£¶ÔÓÚ<span lang=EN-US>Everes</span>ÀàÐÍÏÔʾ¿¨£¬¸ÃÖжϵ÷ÓÃÓ¦¸Ã</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>»á·µ»ØÄ£Äâ״̬£¬¼´ÓÐÒÔÏ·µ»ØÐÅÏ¢£º</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! al = 0x70</span>£¬ÈôÊÇ»ùÓÚ<span
lang=EN-US>Trident</span>µÄ<span lang=EN-US>Everex</span>ÏÔʾ¿¨£»</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! cl = </span>ÏÔʾÆ÷ÀàÐÍ£º<span
lang=EN-US>00-</span>µ¥É«£»<span lang=EN-US>01-CGA</span>£»<span lang=EN-US>02-EGA</span>£»<span
lang=EN-US>03-</span>Êý×Ö¶àÆµ£»<span lang=EN-US>04-PS/2</span>£»<span lang=EN-US>05-IBM
8514</span>£»<span lang=EN-US>06-SVGA</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! ch = </span>ÊôÐÔ£ºÎ»<span
lang=EN-US>7-6</span>£º<span lang=EN-US>00-256K</span>£¬<span lang=EN-US>01-512K</span>£¬<span
lang=EN-US>10-1MB</span>£¬<span lang=EN-US>11-2MB</span>£»Î»<span lang=EN-US>4-</span>¿ªÆô<span
lang=EN-US>VGA</span>±£»¤£»Î»<span lang=EN-US>0-6845</span>Ä£Äâ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! dx = </span>°å¿¨ÐͺţºÎ»<span
lang=EN-US>15-4</span>£º°åÀàÐͱêʶºÅ£»Î»<span lang=EN-US>3-0</span>£º°åÐÞÕý±êʶºÅ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0x2360-Ultragraphics II</span>£»<span lang=EN-US>0x6200-Vision VGA</span>£»<span
lang=EN-US>0x6730-EVGA</span>£»<span lang=EN-US>0x6780-Viewpoint</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! di = </span>ÓÃ<span lang=EN-US>BCD</span>Âë±íʾµÄÊÓÆµ<span
lang=EN-US>BIOS</span>°æ±¾ºÅ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L319">319</a>
nocirr: call&nbsp;&nbsp;&nbsp;
rst3d4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check
Everex 'clues'</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L320">320</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x7000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÉèÖÃ<span
lang=EN-US>ax = 0x7000, bx=0x0000</span>£¬µ÷ÓÃ<span lang=EN-US>int 0x10</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L321">321</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; bx,bx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L322">322</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L323">323</a>&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¶ÔÓÚ<span lang=EN-US>Everes</span>ÏÔʾ¿¨£¬<span lang=EN-US>al</span>ÖÐÓ¦¸Ã·µ»ØÖµ<span
lang=EN-US>0x70</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L324">324</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; noevrx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L325">325</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shr&nbsp;&nbsp;&nbsp;&nbsp; dx,#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ºöÂɰåÐÞÕýºÅ£¨Î»<span lang=EN-US>3-0</span>£©¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L326">326</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x678&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>°åÀàÐͺÅÊÇ<span lang=EN-US>0x678</span>±íʾÊÇÒ»¿é<span lang=EN-US>Trident</span>ÏÔʾ¿¨£¬ÔòÌø×ª¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L327">327</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; istrid</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L328">328</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x236&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>°åÀàÐͺÅÊÇ<span lang=EN-US>0x236</span>±íʾÊÇÒ»¿é<span lang=EN-US>Trident</span>ÏÔʾ¿¨£¬ÔòÌø×ª¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L329">329</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; istrid</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L330">330</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dsceverex&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÈÃ<span
lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Everex</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬ÈÃ<span
lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L331">331</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,moeverex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ģʽ¸öÊýºÍģʽºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
lang=EN-US>selmod</span>È¥Ö´ÐÐÑ¡Ôñ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L332">332</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>ÏÔʾģʽµÄ²Ù×÷¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L333">333</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L334">334</a>
istrid: lea&nbsp;&nbsp;&nbsp;&nbsp; cx,ev2tri&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÊÇ<span lang=EN-US>Trident</span>ÀàÐ͵Ä<span lang=EN-US>Everex</span>ÏÔʾ¿¨£¬ÔòÌø×ªµ½<span
lang=EN-US>ev2tri</span>´¦Àí¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L335">335</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
lang=EN-US>Genoa</span>ÏÔʾ¿¨¡£·½Ê½ÊǼì²éÆäÊÓÆµ<span lang=EN-US>BIOS</span>ÖеÄÌØÕ÷Êý×Ö´®£¨<span
lang=EN-US>0x77</span>¡¢<span lang=EN-US>0x00</span>¡¢<span lang=EN-US>0x66</span>¡¢</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 0x99</span>£©¡£×¢Ò⣬´Ëʱ<span
lang=EN-US>es</span>ÒѾ­ÔÚµÚ<span lang=EN-US>220</span>Ðб»ÉèÖóÉÖ¸Ïò<span lang=EN-US>VGA</span>¿¨ÉÏ<span
lang=EN-US>ROM BIOS</span>ËùÔڵĶÎ<span lang=EN-US>0xc000</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L336">336</a>
noevrx: lea&nbsp;&nbsp;&nbsp;&nbsp;
si,idgenoa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Genoa 'clues'</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L337">337</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; ax,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÈÃ<span lang=EN-US>ds:si</span>Ö¸ÏòµÚ<span lang=EN-US>597</span>ÐÐÉϵÄÌØÕ÷Êý×Ö´®¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L338">338</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
seg es</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L339">339</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,[0x37]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È¡<span lang=EN-US>VGA</span>¿¨ÉÏ<span lang=EN-US>BIOS</span>ÖÐ<span
lang=EN-US>0x37</span>´¦µÄÖ¸Õ루ËüÖ¸ÏòÌØÕ÷´®£©¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L340">340</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; di,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Òò´Ë´Ëʱ<span lang=EN-US>es:di</span>Ö¸ÏòÌØÕ÷Êý×Ö´®¿ªÊ¼´¦¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L341">341</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x04</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L342">342</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dec&nbsp;&nbsp;&nbsp;&nbsp; si</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L343">343</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dec&nbsp;&nbsp;&nbsp;&nbsp; di</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L344">344</a>
l1:&nbsp;&nbsp;&nbsp;&nbsp; inc&nbsp;&nbsp;&nbsp;&nbsp; si&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóÑ­»·±È½ÏÕâ<span lang=EN-US>4</span>¸ö×Ö½ÚµÄÌØÕ÷Êý×Ö´®¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L345">345</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; di</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L346">346</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,(si)</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L347">347</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
seg es</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L348">348</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; al,(di)</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L349">349</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,(si)</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L350">350</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
loope&nbsp;&nbsp; l1</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L351">351</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹ûÌØÕ÷Êý×Ö´®ÍêÈ«Ïàͬ£¬Ôò±íʾÊÇ<span lang=EN-US>Genoa</span>ÏÔʾ¿¨£¬</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L352">352</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; nogen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;! </span>·ñÔòÌø×ªÈ¥¼ì²éÆäËûÀàÐ͵ÄÏÔʾ¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L353">353</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dscgenoa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÈÃ<span
lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Genoa</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬ÈÃ<span
lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L354">354</a>&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lea&nbsp;&nbsp;&nbsp;&nbsp; di,mogenoa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ģʽ¸öÊýºÍģʽºÅÁÐ±í¡£È»ºóÌø×ªµ½<span lang=EN-US>selmod</span>È¥Ö´ÐÐÑ¡Ôñ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L355">355</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾģʽµÄ²Ù×÷¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L356">356</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
lang=EN-US>Paradise</span>ÏÔʾ¿¨¡£Í¬ÑùÊDzÉÓñȽÏÏÔʾ¿¨ÉÏ<span lang=EN-US>BIOS</span>ÖÐÌØÕ÷´®£¨¡°<span
lang=EN-US>VGA=</span>¡±£©µÄ·½Ê½¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L357">357</a>
nogen:&nbsp; lea&nbsp; &nbsp;&nbsp;&nbsp;si,idparadise&nbsp;&nbsp;&nbsp; !
Check Paradise 'clues'</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L358">358</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; di,#0x7d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! es:di</span>Ö¸Ïò<span lang=EN-US>VGA ROM BIOS</span>µÄ<span lang=EN-US>0xc000:0x007d</span>´¦£¬¸Ã´¦Ó¦¸ÃÓÐ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L359">359</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 4</span>¸ö×Ö·û¡°<span lang=EN-US>VGA=</span>¡±¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L360">360</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
repe</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L361">361</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmpsb</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L362">362</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; nopara&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÈôÓв»Í¬µÄ×Ö·û£¬±íʾ²»ÊÇ<span lang=EN-US>Paradise</span>ÏÔʾ¿¨£¬ÓÚÊÇÌø×ª¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L363">363</a>&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;lea&nbsp;&nbsp;&nbsp;&nbsp; si,dscparadise&nbsp;&nbsp; !
</span>·ñÔòÈÃ<span lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Paradise</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬ÈÃ<span
lang=EN-US>di</span>Ö¸</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L364">364</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,moparadise&nbsp;&nbsp;&nbsp; ! </span>ÏòÀ©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
lang=EN-US>selmod</span>´¦È¥Ñ¡</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L365">365</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!
</span>ÔñÏëҪʹÓõÄÏÔʾģʽ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L366">366</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
lang=EN-US>Trident</span>£¨<span lang=EN-US>TVGA</span>£©ÏÔʾ¿¨¡£<span lang=EN-US>TVGA</span>ÏÔʾ¿¨À©³äµÄģʽ¿ØÖƼĴæÆ÷<span
lang=EN-US>1</span>£¨<span lang=EN-US>0x3c4</span>¶Ë¿ÚË÷Òý</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄ<span lang=EN-US>0x0e</span>£©µÄλ<span
lang=EN-US>3--0</span>ÊÇ<span lang=EN-US>64K</span>ÄÚ´æÒ³Ãæ¸öÊýÖµ¡£Õâ¸ö×Ö¶ÎÖµÓÐÒ»¸öÌØÐÔ£ºµ±Ð´Èëʱ£¬ÎÒÃÇÐèÒªÊ×ÏȰÑ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÖµÓë<span lang=EN-US>0x02</span>½øÐÐÒì»ò²Ù×÷ºóÔÙдÈ룻µ±¶ÁÈ¡¸ÃֵʱÔò²»ÐèÒªÖ´ÐÐÒì»ò²Ù×÷£¬¼´Òì»òǰµÄÖµÓ¦¸ÃÓëд</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÈëºóÔÙ¶ÁÈ¡µÄÖµÏàͬ¡£ÏÂÃæ´úÂë¾ÍÀûÓÃÕâ¸öÌØÐÔÀ´¼ì²éÊDz»ÊÇ<span
lang=EN-US>Trident</span>ÏÔʾ¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L367">367</a>
nopara: mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3c4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Trident 'clues'</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L368">368</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Ê×ÏÈÔÚ¶Ë¿Ú<span lang=EN-US>0x3c4</span>Êä³öË÷ÒýºÅ<span
lang=EN-US>0x0e</span>£¬Ë÷Òýģʽ¿ØÖƼĴæÆ÷<span lang=EN-US>1</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L369">369</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºó´Ó<span lang=EN-US>0x3c5</span>Êý¾Ý¶Ë¿Ú¶ÁÈë¸Ã¼Ä´æÆ÷Ô­Öµ£¬²¢ÔÝ´æÔÚ<span lang=EN-US>ah</span>ÖС£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L370">370</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L371">371</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L372">372</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xchg&nbsp;&nbsp;&nbsp; ah,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L373">373</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóÎÒÃÇÏò¸Ã¼Ä´æÆ÷дÈë<span lang=EN-US>0x00</span>£¬ÔÙ¶ÁÈ¡ÆäÖµ<span lang=EN-US
style='font-family:Wingdings'>¨¨</span><span lang=EN-US>al</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L374">374</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;!
</span>дÈë<span lang=EN-US>0x00</span>¾ÍÏ൱ÓÚ¡°Ô­Öµ¡±<span lang=EN-US>0x02</span>Òì»ò<span
lang=EN-US>0x02</span>ºóµÄдÈëÖµ£¬</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L375">375</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Òò´ËÈôÊÇ<span lang=EN-US>Trident</span>ÏÔʾ¿¨£¬Ôò´Ëºó¶ÁÈëµÄÖµÓ¦¸ÃÊÇ<span lang=EN-US>0x02</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L376">376</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xchg&nbsp;&nbsp;&nbsp; al,ah&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>½»»»ºó£¬<span lang=EN-US>al=</span>ԭģʽ¿ØÖƼĴæÆ÷<span lang=EN-US>1</span>µÄÖµ£¬<span
lang=EN-US>ah=</span>×îºó¶ÁÈ¡µÄÖµ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÓï¾äÓÒÔòÓ¢ÎÄ×¢ÊÍÊÇ¡°ÕæÆæ¹Ö<span
lang=EN-US>...</span>ÊéÖв¢Ã»ÓÐÒªÇóÕâÑù²Ù×÷£¬µ«ÊÇÕâ¶ÔÎÒµÄ<span lang=EN-US>Trident</span>ÏÔʾ¿¨</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Æð×÷Óá£Èç¹û²»ÕâÑù×ö£¬ÆÁÄ»¾Í»á±äÄ£ºý<span
lang=EN-US>...</span>¡±¡£Õ⼸Ðи½´øÓÐÓ¢ÎÄ×¢Ê͵ÄÓï¾äÖ´ÐÐÈçϲÙ×÷£º</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Èç¹û<span lang=EN-US>bl</span>ÖÐԭģʽ¿ØÖƼĴæÆ÷<span
lang=EN-US>1</span>µÄλ<span lang=EN-US>1</span>ÔÚÖÃλ״̬µÄ»°¾Í½«Æä¸´Î»£¬·ñÔò¾Í½«Î»<span
lang=EN-US>1</span>ÖÃλ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ʵ¼ÊÉÏÕ⼸ÌõÓï¾ä¾ÍÊǶÔԭģʽ¿ØÖƼĴæÆ÷<span
lang=EN-US>1</span>µÄÖµÖ´ÐÐÒì»ò<span lang=EN-US> 0x02</span>µÄ²Ù×÷£¬È»ºóÓýá¹ûֵȥÉèÖÃ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>£¨»Ö¸´£©Ô­¼Ä´æÆ÷Öµ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L377">377</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
bl,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!
Strange thing ... in the book this wasn't</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L378">378</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; bl,#0x02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!
necessary but it worked on my card which</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L379">379</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
setb2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;! is a
trident. Without it the screen goes</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L380">380</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; al,#0xfd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!
blurred ...</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L381">381</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp;
clrb2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L382">382</a>
setb2:&nbsp; or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L383">383</a>
clrb2:&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L384">384</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x0f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>È¡<span lang=EN-US>375</span>ÐÐ×îºó¶ÁÈëÖµµÄÒ³Ãæ¸öÊý×ֶΣ¨Î»<span lang=EN-US>3--0</span>£©£¬Èç¹û</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L385">385</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;!
</span>¸Ã×Ö¶ÎÖµµÈÓÚ<span lang=EN-US>0x02</span>£¬Ôò±íʾÊÇ<span lang=EN-US>Trident</span>ÏÔʾ¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L386">386</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; notrid</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L387">387</a>
ev2tri: lea&nbsp;&nbsp;&nbsp;&nbsp; si,dsctrident&nbsp;&nbsp;&nbsp; ! </span>ÊÇ<span
lang=EN-US>Trident</span>ÏÔʾ¿¨£¬ÓÚÊÇÈÃ<span lang=EN-US>si</span>Ö¸Ïò¸ÃÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐ</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L388">388</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,motrident&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÖµÁÐ±í£¬ÈÃ<span
lang=EN-US>di</span>Ö¸Ïò¶ÔÓ¦À©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í£¬È»</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L389">389</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ºóÌø×ªµ½<span lang=EN-US>selmod</span>È¥Ö´ÐÐģʽѡÔñ²Ù×÷¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L390">390</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
lang=EN-US>Tseng</span>ÏÔʾ¿¨£¨<span lang=EN-US>ET4000AX</span>»ò<span lang=EN-US>ET4000/W32</span>Àࣩ¡£·½·¨ÊǶÔ<span
lang=EN-US>0x3cd</span>¶Ë¿Ú¶ÔÓ¦µÄ¶Î</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ñ¡Ôñ£¨<span lang=EN-US>Segment
Select</span>£©¼Ä´æÆ÷Ö´ÐжÁд²Ù×÷¡£¸Ã¼Ä´æÆ÷¸ß<span lang=EN-US>4</span>λ£¨Î»<span lang=EN-US>7--4</span>£©ÊÇÒª½øÐжÁ²Ù×÷µÄ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 64KB</span>¶ÎºÅ£¨<span
lang=EN-US>Bank number</span>£©£¬µÍ<span lang=EN-US>4</span>λ£¨Î»<span lang=EN-US>3--0</span>£©ÊÇÖ¸¶¨ÒªÐ´µÄ¶ÎºÅ¡£Èç¹ûÖ¸¶¨¶ÎÑ¡Ôñ¼Ä´æÆ÷µÄ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄÖµÊÇ<span lang=EN-US>
0x55</span>£¨±íʾ¶Á¡¢Ð´µÚ<span lang=EN-US>6</span>¸ö<span lang=EN-US>64KB</span>¶Î£©£¬ÄÇô¶ÔÓÚ<span
lang=EN-US>Tseng</span>ÏÔʾ¿¨À´Ëµ£¬°Ñ¸ÃֵдÈë¼Ä´æÆ÷</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ºóÔÙ¶Á³öÓ¦¸Ã»¹ÊÇ<span
lang=EN-US>0x55</span>¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L391">391</a>
notrid: mov&nbsp;&nbsp;&nbsp;&nbsp;
dx,#0x3cd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Tseng 'clues'</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L392">392</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Could
things be this simple ! :-)</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L393">393</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bl,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÈ´Ó<span lang=EN-US>0x3cd</span>¶Ë¿Ú¶ÁÈ¡¶ÎÑ¡Ôñ¼Ä´æÆ÷Ô­Öµ£¬²¢±£´æÔÚ<span lang=EN-US>bl</span>ÖС£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L394">394</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóÎÒÃÇÏò¸Ã¼Ä´æÆ÷ÖÐдÈë<span lang=EN-US>0x55</span>¡£ÔÙ¶ÁÈë²¢·ÅÔÚ<span lang=EN-US>ah</span>ÖС£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L395">395</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L396">396</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L397">397</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L398">398</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>½Óׯָ´¸Ã¼Ä´æÆ÷µÄÔ­Öµ¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L399">399</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L400">400</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èç¹û¶ÁÈ¡µÄ¾ÍÊÇÎÒÃÇдÈëµÄÖµ£¬Ôò±íÃ÷ÊÇ<span lang=EN-US>Tseng</span>ÏÔʾ¿¨¡£</p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L401">401</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; notsen</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L402">402</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dsctseng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÓÚÊÇÈÃ<span
lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Tseng</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµµÄÁÐ±í£¬ÈÃ<span
lang=EN-US>di</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L403">403</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,motseng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>Ö¸Ïò¶ÔÓ¦À©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í£¬È»ºóÌø×ªµ½<span
lang=EN-US>selmod</span></p>
<p class=a><span lang=EN-US><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L404">404</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; cx,selmod &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>È¥Ö´ÐÐģʽѡÔñ²Ù×÷¡£</p>
<p class=a><a name=L405></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L405"><span
lang=EN-US>405</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæ¼ì²éÊDz»ÊÇ<span
lang=EN-US>Video7</span>ÏÔʾ¿¨¡£¶Ë¿Ú<span lang=EN-US>0x3c2</span>ÊÇ»ìºÏÊä³ö¼Ä´æÆ÷д¶Ë¿Ú£¬¶ø<span
lang=EN-US>0x3cc</span>ÊÇ»ìºÏÊä³ö¼Ä´æ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Æ÷¶Á¶Ë¿Ú¡£¸Ã¼Ä´æÆ÷µÄλ<span
lang=EN-US>0</span>Êǵ¥É«<span lang=EN-US>/</span>²ÊÉ«±êÖ¾¡£Èç¹ûΪ<span lang=EN-US>0</span>Ôò±íʾÊǵ¥É«£¬·ñÔòÊDzÊÉ«¡£ÅжÏÊDz»ÊÇ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! Video7</span>ÏÔʾ¿¨µÄ·½Ê½ÊÇÀûÓÃÕâÖÖÏÔʾ¿¨µÄ<span
lang=EN-US>CRT</span>¿ØÖÆÀ©Õ¹±êʶ¼Ä´æÆ÷£¨Ë÷ÒýºÅÊÇ<span lang=EN-US>0x1f</span>£©¡£¸Ã¼Ä´æÆ÷</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄֵʵ¼ÊÉϾÍÊÇÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷£¨Ë÷ÒýºÅ<span
lang=EN-US>0x0c</span>£©µÄÄÚÈݺÍ<span
lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷ºóµÄÖµ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Òò´ËÎÒÃÇÖ»ÒªÏòÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÖÐдÈëÒ»¸öÌØ¶¨Öµ£¬È»ºó´Ó±êʶ¼Ä´æÆ÷ÖжÁÈ¡±êʶֵ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>½øÐÐÅжϼ´¿É¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ͨ¹ý¶ÔÒÔÉÏÏÔʾ¿¨ºÍÕâÀï<span
lang=EN-US>Video7</span>ÏÔʾ¿¨µÄ¼ì²é·ÖÎö£¬ÎÒÃÇ¿ÉÖª¼ì²é¹ý³Ìͨ³£·ÖΪÈý¸ö»ù±¾²½Öè¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ê×ÏȶÁÈ¡²¢±£´æ²âÊÔÐèÒªÓõ½µÄ¼Ä´æÆ÷Ô­Öµ£¬È»ºóʹÓÃÌØ¶¨²âÊÔÖµ½øÐÐдÈëºÍ¶Á³ö²Ù×÷£¬×îºó»Ö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¸´Ô­¼Ä´æÆ÷Öµ²¢¶Ô¼ì²é½á¹û×÷³öÅжϡ£</p>
<p class=a><a name=L406></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L406"><span
lang=EN-US>406</span></a><span lang=EN-US> notsen: mov&nbsp;&nbsp;&nbsp;&nbsp;
dx,#0x3cc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! Check Video7 'clues'</span></p>
<p class=a><a name=L407></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L407"><span
lang=EN-US>407</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx</span></p>
<p class=a><a name=L408></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L408"><span
lang=EN-US>408</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3b4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;!
</span>ÏÈÉèÖÃ<span lang=EN-US>dx</span>Ϊµ¥É«ÏÔʾ<span lang=EN-US>CRT</span>¿ØÖÆË÷Òý¼Ä´æÆ÷¶Ë¿ÚºÅ<span
lang=EN-US>0x3b4</span>¡£</p>
<p class=a><a name=L409></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L409"><span
lang=EN-US>409</span></a><span lang=EN-US> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>Èç¹û»ìºÏÊä³ö¼Ä´æÆ÷µÄλ<span
lang=EN-US>0</span>µÈÓÚ<span lang=EN-US>0</span>£¨µ¥É«£©ÔòÖ±½ÓÌø×ª£¬</p>
<p class=a><a name=L410></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L410"><span
lang=EN-US>410</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; even7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>·ñÔò<span lang=EN-US>dx</span>ÉèÖÃΪ²ÊÉ«ÏÔʾ<span lang=EN-US>CRT</span>¿ØÖÆË÷Òý¼Ä´æÆ÷¶Ë¿ÚºÅ<span
lang=EN-US>0x3d4</span>¡£</p>
<p class=a><a name=L411></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L411"><span
lang=EN-US>411</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; dx,#0x3d4</span></p>
<p class=a><a name=L412></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L412"><span
lang=EN-US>412</span></a><span lang=EN-US> even7:&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÉèÖüĴæÆ÷Ë÷ÒýºÅΪ<span lang=EN-US>0x0c</span>£¬¶ÔÓ¦ÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷¡£</p>
<p class=a><a name=L413></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L413"><span
lang=EN-US>413</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><a name=L414></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L414"><span
lang=EN-US>414</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx</span></p>
<p class=a><a name=L415></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L415"><span
lang=EN-US>415</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>¶ÁÈ¡ÏÔʾÄÚ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝ£¬²¢±£´æÔÚ<span
lang=EN-US>bl</span>ÖС£</p>
<p class=a><a name=L416></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L416"><span
lang=EN-US>416</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bl,al</span></p>
<p class=a><a name=L417></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L417"><span
lang=EN-US>417</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóÔÚÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÖÐдÈëÖµ<span lang=EN-US>0x55</span>£¬ÔÙ¶ÁÈ¡³öÀ´¡£</p>
<p class=a><a name=L418></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L418"><span
lang=EN-US>418</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><a name=L419></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L419"><span
lang=EN-US>419</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx</span></p>
<p class=a><a name=L420></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L420"><span
lang=EN-US>420</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dec&nbsp;&nbsp;&nbsp;&nbsp; dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóͨ¹ý<span lang=EN-US>CRTC</span>Ë÷Òý¼Ä´æÆ÷¶Ë¿Ú<span lang=EN-US>0x3b4</span>»ò<span
lang=EN-US>0x3d4</span>Ñ¡ÔñË÷ÒýºÅÊÇ</p>
<p class=a><a name=L421></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L421"><span
lang=EN-US>421</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x1f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! 0x1f</span>µÄ<span
lang=EN-US>Video7</span>ÏÔʾ¿¨±êʶ¼Ä´æÆ÷¡£¸Ã¼Ä´æÆ÷ÄÚÈÝʵ¼ÊÉϾÍÊÇ</p>
<p class=a><a name=L422></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L422"><span
lang=EN-US>422</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔ´æÆðʼµØÖ·¸ß×Ö½ÚºÍ<span lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷ºóµÄ½á¹ûÖµ¡£</p>
<p class=a><a name=L423></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L423"><span
lang=EN-US>423</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; dx</span></p>
<p class=a><a name=L424></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L424"><span
lang=EN-US>424</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; al,dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¶ÁÈ¡<span lang=EN-US>Video7</span>ÏÔʾ¿¨±êʶ¼Ä´æÆ÷Öµ£¬²¢±£´æÔÚ<span lang=EN-US>bh</span>ÖС£</p>
<p class=a><a name=L425></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L425"><span
lang=EN-US>425</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bh,al</span></p>
<p class=a><a name=L426></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L426"><span
lang=EN-US>426</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dec&nbsp;&nbsp;&nbsp;&nbsp; dx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È»ºóÔÙÑ¡ÔñÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷£¬»Ö¸´ÆäÔ­Öµ¡£</p>
<p class=a><a name=L427></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L427"><span
lang=EN-US>427</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0c</span></p>
<p class=a><a name=L428></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L428"><span
lang=EN-US>428</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><a name=L429></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L429"><span
lang=EN-US>429</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc &nbsp;&nbsp;&nbsp;&nbsp;dx</span></p>
<p class=a><a name=L430></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L430"><span
lang=EN-US>430</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,bl</span></p>
<p class=a><a name=L431></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L431"><span
lang=EN-US>431</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
out&nbsp;&nbsp;&nbsp;&nbsp; dx,al</span></p>
<p class=a><a name=L432></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L432"><span
lang=EN-US>432</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ËæºóÎÒÃÇÀ´ÑéÖ¤¡°<span lang=EN-US>Video7</span>ÏÔʾ¿¨±êʶ¼Ä´æÆ÷Öµ¾ÍÊÇÏÔ´æÆðʼ</p>
<p class=a><a name=L433></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L433"><span
lang=EN-US>433</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; al,#0xea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>µØÖ·¸ß×Ö½ÚºÍ<span lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷ºóµÄ½á¹ûÖµ<span lang=EN-US>¡±</span>¡£Òò´Ë<span
lang=EN-US>0x55</span></p>
<p class=a><a name=L434></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L434"><span
lang=EN-US>434</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,bh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ºÍ<span lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷µÄ½á¹û¾ÍÓ¦¸ÃµÈÓÚ±êʶ¼Ä´æÆ÷µÄ²âÊÔÖµ¡£</p>
<p class=a><a name=L435></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L435"><span
lang=EN-US>435</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne&nbsp;&nbsp;&nbsp;&nbsp; novid7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èô²»ÊÇ<span lang=EN-US>Video7</span>ÏÔʾ¿¨£¬ÔòÉèÖÃĬÈÏÏÔʾÐÐÁÐÖµ£¨<span lang=EN-US>492</span>ÐУ©¡£</p>
<p class=a><a name=L436></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L436"><span
lang=EN-US>436</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,dscvideo7&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÊÇ<span
lang=EN-US>Video7</span>ÏÔʾ¿¨£¬ÓÚÊÇÈÃ<span lang=EN-US>si</span>Ö¸Ïò¸ÃÏÔʾ¿¨ÐÐÁÐÖµ±í£¬ÈÃ<span
lang=EN-US>di</span></p>
<p class=a><a name=L437></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L437"><span
lang=EN-US>437</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; di,movideo7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í¡£</p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæ¸ù¾ÝÉÏÊö´úÂëÅжϳöµÄÏÔʾ¿¨ÀàÐÍÒÔ¼°È¡µÃµÄÏà¹ØÀ©Õ¹Ä£Ê½ÐÅÏ¢£¨<span
lang=EN-US>si</span>Ö¸ÏòµÄÐÐÁÐÖµÁÐ±í£»<span lang=EN-US>di</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í£©£¬ÌáʾÓû§Ñ¡Ôñ¿ÉÓõÄÏÔʾģʽ£¬²¢ÉèÖóÉÏàÓ¦ÏÔʾģʽ¡£×îºó</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>×Ó³ÌÐò·µ»ØÏµÍ³µ±Ç°ÉèÖÃµÄÆÁÄ»ÐÐÁÐÖµ£¨<span
lang=EN-US>ah = </span>ÁÐÊý£»<span lang=EN-US>al=</span>ÐÐÊý£©¡£ÀýÈ磬Èç¹ûϵͳÖÐÊÇ<span
lang=EN-US>ATI</span>ÏÔʾ¿¨£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÄÇôÆÁÄ»ÉÏ»áÏÔʾÒÔÏÂÐÅÏ¢£º</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! Mode:&nbsp; COLSxROWS:</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 0.&nbsp;&nbsp;&nbsp;&nbsp; 132
x 25</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 1.&nbsp;&nbsp;&nbsp;&nbsp; 132
x 44</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! Choose mode by pressing the
corresponding number.</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Õâ¶Î³ÌÐòÊ×ÏÈÔÚÆÁÄ»ÉÏÏÔʾ<span
lang=EN-US>NULL</span>½áβµÄ×Ö·û´®ÐÅÏ¢¡°<span lang=EN-US>Mode:&nbsp; COLSxROWS:</span>¡±¡£</p>
<p class=a><a name=L438></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L438"><span
lang=EN-US>438</span></a><span lang=EN-US> selmod: push&nbsp;&nbsp;&nbsp; si</span></p>
<p class=a><a name=L439></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L439"><span
lang=EN-US>439</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,msg2</span></p>
<p class=a><a name=L440></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L440"><span
lang=EN-US>440</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prtstr</span></p>
<p class=a><a name=L441></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L441"><span
lang=EN-US>441</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; cx,cx</span></p>
<p class=a><a name=L442></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L442"><span
lang=EN-US>442</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cl,(di)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>´Ëʱ<span lang=EN-US>cl</span>ÖÐÊǼì²é³öµÄÏÔʾ¿¨µÄÀ©Õ¹Ä£Ê½¸öÊý¡£</p>
<p class=a><a name=L443></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L443"><span
lang=EN-US>443</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; si</span></p>
<p class=a><a name=L444></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L444"><span
lang=EN-US>444</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; si</span></p>
<p class=a><a name=L445></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L445"><span
lang=EN-US>445</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>È»ºó²¢ÔÚÿһÐÐÉÏÏÔʾ³öµ±Ç°ÏÔʾ¿¨¿ÉÑ¡ÔñµÄÀ©Õ¹Ä£Ê½ÐÐÁÐÖµ£¬¹©Óû§Ñ¡Óá£</p>
<p class=a><a name=L446></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L446"><span
lang=EN-US>446</span></a><span lang=EN-US> tbl:&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; bx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! bx = </span>ÏÔʾ¿¨µÄÀ©Õ¹Ä£Ê½×ܸöÊý¡£</p>
<p class=a><a name=L447></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L447"><span
lang=EN-US>447</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; bx</span></p>
<p class=a><a name=L448></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L448"><span
lang=EN-US>448</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,bl</span></p>
<p class=a><a name=L449></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L449"><span
lang=EN-US>449</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sub&nbsp;&nbsp;&nbsp;&nbsp; al,cl</span></p>
<p class=a><a name=L450></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L450"><span
lang=EN-US>450</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; dprnt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÒÔÊ®½øÖƸñʽÏÔʾ<span lang=EN-US>al</span>ÖеÄÖµ¡£</p>
<p class=a><a name=L451></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L451"><span
lang=EN-US>451</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; spcing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾһ¸öµãÔÙ¿Õ<span lang=EN-US>4</span>¸ö¿Õ¸ñ¡£</p>
<p class=a><a name=L452></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L452"><span
lang=EN-US>452</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lodsw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÔÚ<span lang=EN-US>ax</span>ÖмÓÔØ<span lang=EN-US>si</span>Ö¸ÏòµÄÐÐÁÐÖµ£¬Ëæºó<span
lang=EN-US>si</span>Ö¸ÏòÏÂÒ»¸ö<span lang=EN-US>word</span>Öµ¡£</p>
<p class=a><a name=L453></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L453"><span
lang=EN-US>453</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xchg&nbsp;&nbsp;&nbsp; al,ah&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>½»»»Î»Öúó<span lang=EN-US>al = </span>ÁÐÊý¡£</p>
<p class=a><a name=L454></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L454"><span
lang=EN-US>454</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; dprnt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;! </span>ÏÔʾÁÐÊý£»</p>
<p class=a><a name=L455></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L455"><span
lang=EN-US>455</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xchg&nbsp;&nbsp;&nbsp; ah,al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>´Ëʱ<span lang=EN-US>al</span>ÖÐÊÇÐÐÊýÖµ¡£</p>
<p class=a><a name=L456></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L456"><span
lang=EN-US>456</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L457></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L457"><span
lang=EN-US>457</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾһ¸öС¡°<span lang=EN-US>x¡±</span>£¬¼´³ËºÅ¡£</p>
<p class=a><a name=L458></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L458"><span
lang=EN-US>458</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1</span></p>
<p class=a><a name=L459></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L459"><span
lang=EN-US>459</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;! </span>´Ëʱ<span lang=EN-US>al</span>ÖÐÊÇÐÐÊýÖµ¡£</p>
<p class=a><a name=L460></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L460"><span
lang=EN-US>460</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; dprnt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾÐÐÊý¡£</p>
<p class=a><a name=L461></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L461"><span
lang=EN-US>461</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; docr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>»Ø³µ»»ÐС£</p>
<p class=a><a name=L462></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L462"><span
lang=EN-US>462</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
loop&nbsp;&nbsp;&nbsp; tbl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÔÙÏÔʾÏÂÒ»¸öÐÐÁÐÖµ¡£<span lang=EN-US>cx</span>ÖÐÀ©Õ¹Ä£Ê½¼ÆÊýÖµµÝ¼õ<span lang=EN-US>1</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÔÚÀ©Õ¹Ä£Ê½ÐÐÁÐÖµ¶¼ÏÔʾ֮ºó£¬ÏÔʾ¡°<span
lang=EN-US>Choose mode by pressing the corresponding number.</span>¡±£¬</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>È»ºó´Ó¼üÅ̿ڶÁÈ¡Óû§°´¼üµÄɨÃèÂ룬¸ù¾Ý¸ÃɨÃèÂëÈ·¶¨Óû§Ñ¡ÔñµÄÐÐÁÐֵģʽºÅ£¬²¢ÀûÓÃ<span
lang=EN-US>ROM </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! BIOS</span>µÄÏÔʾÖжÏ<span
lang=EN-US>int 0x10</span>¹¦ÄÜ<span lang=EN-US>0x00</span>À´ÉèÖÃÏàÓ¦µÄÏÔʾģʽ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÚ<span lang=EN-US>468</span>ÐеÄ<span
lang=EN-US>¡°</span>ģʽ¸öÊýÖµ<span lang=EN-US>+0x80¡±</span>ÊÇËù°´Êý×Ö¼ü<span
lang=EN-US>-1</span>µÄËÉ¿ªÉ¨ÃèÂë¡£¶ÔÓÚ<span lang=EN-US>0--9</span>Êý×Ö¼ü£¬ËüÃǵÄËÉ¿ª</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ɨÃèÂë·Ö±ðÊÇ£º<span
lang=EN-US>0 - 0x8B</span>£»<span lang=EN-US>1 - 0x82</span>£»<span lang=EN-US>2
- 0x83</span>£»<span lang=EN-US>3 - 0x84</span>£»<span lang=EN-US>4 - 0x85</span>£»</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
5 - 0x86</span>£»<span lang=EN-US>6 - 0x87</span>£»<span lang=EN-US>7 - 0x88</span>£»<span
lang=EN-US>8 - 0x89</span>£»<span lang=EN-US>9 - 0x8A</span>¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Òò´Ë£¬Èç¹û¶ÁÈ¡µÄ¼üÅÌËÉ¿ªÉ¨ÃèÂëСÓÚ<span
lang=EN-US>0x82</span>¾Í±íʾ²»ÊÇÊý×Ö¼ü£»Èç¹ûɨÃèÂëµÈÓÚ<span lang=EN-US>0x8B</span>Ôò±íʾÓû§</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>°´ÏÂÊý×Ö<span lang=EN-US>0</span>¼ü¡£</p>
<p class=a><a name=L463></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L463"><span
lang=EN-US>463</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; cx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! cl</span>ÖÐÊÇÏÔʾ¿¨À©Õ¹Ä£Ê½×ܸöÊýÖµ¡£</p>
<p class=a><a name=L464></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L464"><span
lang=EN-US>464</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; docr</span></p>
<p class=a><a name=L465></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L465"><span
lang=EN-US>465</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea&nbsp;&nbsp;&nbsp;&nbsp; si,msg3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾ¡°Çë°´ÏàÓ¦Êý×Ö¼üÀ´Ñ¡Ôñģʽ¡£¡±</p>
<p class=a><a name=L466></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L466"><span
lang=EN-US>466</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prtstr</span></p>
<p class=a><a name=L467></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L467"><span
lang=EN-US>467</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; si&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>µ¯³öÔ­ÐÐÁÐÖµÖ¸Õ루ָÏòÏÔʾ¿¨ÐÐÁÐÖµ±í¿ªÊ¼´¦£©¡£</p>
<p class=a><a name=L468></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L468"><span
lang=EN-US>468</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; cl,#0x80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! cl + 0x80 = </span>¶ÔÓ¦¡°Êý×Ö¼ü<span
lang=EN-US>-1</span>¡±µÄËÉ¿ªÉ¨ÃèÂë¡£</p>
<p class=a><a name=L469></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L469"><span
lang=EN-US>469</span></a><span lang=EN-US> nonum:&nbsp;
in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;! Quick and dirty...</span></p>
<p class=a><a name=L470></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L470"><span
lang=EN-US>470</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Èô¼üÅÌËÉ¿ªÉ¨ÃèÂëСÓÚ<span lang=EN-US>0x82</span>Ôò±íʾ²»ÊÇÊý×Ö¼ü£¬ºöÂɸüü¡£</p>
<p class=a><a name=L471></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L471"><span
lang=EN-US>471</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nonum</span></p>
<p class=a><a name=L472></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L472"><span
lang=EN-US>472</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x8b&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>Èô¼üÅÌËÉ¿ªÉ¨ÃèÂëµÈÓÚ<span lang=EN-US>0x8b</span>£¬±íʾ°´ÏÂÁËÊý×Ö¼ü<span lang=EN-US>0</span>¡£</p>
<p class=a><a name=L473></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L473"><span
lang=EN-US>473</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zero</span></p>
<p class=a><a name=L474></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L474"><span
lang=EN-US>474</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,cl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;! </span>ÈôɨÃèÂë´óÓÚÀ©Õ¹Ä£Ê½¸öÊýÖµ¶ÔÓ¦µÄ×î´óɨÃèÂëÖµ£¬±íʾ</p>
<p class=a><a name=L475></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L475"><span
lang=EN-US>475</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ja&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nonum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>¼üÈëµÄÖµ³¬¹ý·¶Î§»ò²»ÊÇÊý×Ö¼üµÄËÉ¿ªÉ¨ÃèÂë¡£·ñÔò±íʾ</p>
<p class=a><a name=L476></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L476"><span
lang=EN-US>476</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; nozero&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Óû§°´Ï²¢ËÉ¿ªÁËÒ»¸ö·Ç<span lang=EN-US>0</span>Êý×Ö°´¼ü¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæ°ÑËÉ¿ªÉ¨ÃèÂëת»»³É¶ÔÓ¦µÄÊý×Ö°´¼üÖµ£¬È»ºóÀûÓøÃÖµ´Óģʽ¸öÊýºÍģʽºÅÁбíÖÐÑ¡Ôñ¶ÔÓ¦µÄ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÄģʽºÅ¡£½Ó×ŵ÷ÓûúÆ÷<span
lang=EN-US>ROM BIOS</span>ÖжÏ<span lang=EN-US>int 0x10</span>¹¦ÄÜ<span lang=EN-US>0</span>°ÑÆÁÄ»ÉèÖóÉģʽºÅÖ¸¶¨µÄģʽ¡£×îºóÔÙ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÀûÓÃģʽºÅ´ÓÏÔʾ¿¨ÐÐÁÐÖµ±íÖÐÑ¡Ôñ²¢ÔÚ<span
lang=EN-US>ax</span>Öзµ»Ø¶ÔÓ¦µÄÐÐÁÐÖµ¡£</p>
<p class=a><a name=L477></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L477"><span
lang=EN-US>477</span></a><span lang=EN-US> zero:&nbsp;&nbsp;
sub&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! al = 0x8b - 0x0a = 0x81</span>¡£</p>
<p class=a><a name=L478></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L478"><span
lang=EN-US>478</span></a><span lang=EN-US> nozero: sub&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÔÙ¼õÈ¥<span
lang=EN-US>0x80</span>¾Í¿ÉÒԵõ½Óû§Ñ¡ÔñÁ˵ڼ¸¸öģʽ¡£</p>
<p class=a><a name=L479></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L479"><span
lang=EN-US>479</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dec&nbsp;&nbsp;&nbsp;&nbsp; al&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>´Ó<span lang=EN-US>0</span>Æð¼ÆÊý¡£</p>
<p class=a><a name=L480></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L480"><span
lang=EN-US>480</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor&nbsp;&nbsp;&nbsp;&nbsp; ah,ah&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! int 0x10</span>ÏÔʾ¹¦ÄܺÅ<span lang=EN-US>=0</span>£¨ÉèÖÃÏÔʾģʽ£©¡£</p>
<p class=a><a name=L481></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L481"><span
lang=EN-US>481</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; di,ax</span></p>
<p class=a><a name=L482></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L482"><span
lang=EN-US>482</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
inc&nbsp;&nbsp;&nbsp;&nbsp; di&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! di</span>Ö¸Ïò¶ÔÓ¦µÄģʽºÅ£¨Ìø¹ýµÚ<span lang=EN-US>1</span>¸öģʽ¸öÊý×Ö½ÚÖµ£©¡£</p>
<p class=a><a name=L483></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L483"><span
lang=EN-US>483</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L484></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L484"><span
lang=EN-US>484</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,(di)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ȡģʽºÅ<span lang=EN-US style='font-family:Wingdings'>¨¨</span><span
lang=EN-US>al</span>ÖУ¬²¢µ÷ÓÃϵͳ<span lang=EN-US>BIOS</span>ÏÔʾÖжϹ¦ÄÜ<span lang=EN-US>0</span>¡£</p>
<p class=a><a name=L485></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L485"><span
lang=EN-US>485</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><a name=L486></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L486"><span
lang=EN-US>486</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L487></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L487"><span
lang=EN-US>487</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shl&nbsp;&nbsp;&nbsp;&nbsp; ax,#1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ģʽºÅ³Ë<span lang=EN-US>2</span>£¬×ª»»³ÉΪÐÐÁÐÖµ±íÖжÔÓ¦ÖµµÄÖ¸Õë¡£</p>
<p class=a><a name=L488></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L488"><span
lang=EN-US>488</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; si,ax</span></p>
<p class=a><a name=L489></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L489"><span
lang=EN-US>489</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lodsw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>È¡¶ÔÓ¦ÐÐÁÐÖµµ½<span lang=EN-US>ax</span>ÖУ¨<span lang=EN-US>ah = </span>ÁÐÊý£¬<span
lang=EN-US>al = </span>ÐÐÊý£©¡£</p>
<p class=a><a name=L490></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L490"><span
lang=EN-US>490</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>»Ö¸´µÚ<span lang=EN-US>216</span>Ðб£´æµÄ<span lang=EN-US>ds</span>Ô­Öµ¡£ÔÚ<span
lang=EN-US>ax</span>Öзµ»Øµ±Ç°ÏÔʾÐÐÁÐÖµ¡£</p>
<p class=a><a name=L491></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L491"><span
lang=EN-US>491</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</span></p>
<p class=a><span lang=EN-US>&nbsp;</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>Èô¶¼²»ÊÇÉÏÃæ¼ì²âµÄÏÔʾ¿¨£¬ÄÇôÎÒÃÇÖ»ºÃ²ÉÓÃĬÈϵÄ<span
lang=EN-US>80 x 25 </span>µÄ±ê×¼ÐÐÁÐÖµ¡£</p>
<p class=a><a name=L492></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L492"><span
lang=EN-US>492</span></a><span lang=EN-US> novid7: pop&nbsp;&nbsp;&nbsp;&nbsp;
ds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
Here could be code to support standard 80x50,80x30</span></p>
<p class=a><a name=L493></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L493"><span
lang=EN-US>493</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ax,#0x5019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=a><a name=L494></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L494"><span
lang=EN-US>494</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</span></p>
<p class=a><a name=L495></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L495"><span
lang=EN-US>495</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L496></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L496"><span
lang=EN-US>496</span></a><span lang=EN-US> ! Routine that 'tabs' to next col.</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¹â±êÒÆ¶¯µ½ÏÂÒ»ÖÆ±íλµÄ×Ó³ÌÐò¡£</p>
<p class=a><a name=L497></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L497"><span
lang=EN-US>497</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÔʾһ¸öµã×Ö·û<span
lang=EN-US>'.'</span>ºÍ<span lang=EN-US>4</span>¸ö¿Õ¸ñ¡£</p>
<p class=a><a name=L498></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L498"><span
lang=EN-US>498</span></a><span lang=EN-US> spcing: mov&nbsp;&nbsp;&nbsp;&nbsp;
al,#0x2e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! </span>ÏÔʾһ¸öµã×Ö·û<span
lang=EN-US>'.'</span>¡£</p>
<p class=a><a name=L499></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L499"><span
lang=EN-US>499</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1</span></p>
<p class=a><a name=L500></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L500"><span
lang=EN-US>500</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x20</span></p>
<p class=a><a name=L501></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L501"><span
lang=EN-US>501</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1&nbsp;&nbsp; </span></p>
<p class=a><a name=L502></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L502"><span
lang=EN-US>502</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x20</span></p>
<p class=a><a name=L503></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L503"><span
lang=EN-US>503</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1&nbsp;&nbsp; </span></p>
<p class=a><a name=L504></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L504"><span
lang=EN-US>504</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x20</span></p>
<p class=a><a name=L505></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L505"><span
lang=EN-US>505</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1&nbsp;&nbsp; </span></p>
<p class=a><a name=L506></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L506"><span
lang=EN-US>506</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x20</span></p>
<p class=a><a name=L507></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L507"><span
lang=EN-US>507</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1</span></p>
<p class=a><a name=L508></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L508"><span
lang=EN-US>508</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=a><a name=L509></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L509"><span
lang=EN-US>509</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L510></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L510"><span
lang=EN-US>510</span></a><span lang=EN-US> ! Routine to print asciiz-string at
DS:SI</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÔʾλÓÚ<span lang=EN-US>DS:SI</span>´¦ÒÔ<span
lang=EN-US>NULL</span>£¨<span lang=EN-US>0x00</span>£©½áβµÄ×Ö·û´®¡£</p>
<p class=a><a name=L511></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L511"><span
lang=EN-US>511</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L512></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L512"><span
lang=EN-US>512</span></a><span lang=EN-US> prtstr: lodsb</span></p>
<p class=a><a name=L513></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L513"><span
lang=EN-US>513</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and&nbsp;&nbsp;&nbsp;&nbsp; al,al</span></p>
<p class=a><a name=L514></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L514"><span
lang=EN-US>514</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin</span></p>
<p class=a><a name=L515></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L515"><span
lang=EN-US>515</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾ<span lang=EN-US>al</span>ÖеÄÒ»¸ö×Ö·û¡£</p>
<p class=a><a name=L516></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L516"><span
lang=EN-US>516</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; prtstr</span></p>
<p class=a><a name=L517></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L517"><span
lang=EN-US>517</span></a><span lang=EN-US> fin:&nbsp;&nbsp;&nbsp; ret</span></p>
<p class=a><a name=L518></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L518"><span
lang=EN-US>518</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L519></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L519"><span
lang=EN-US>519</span></a><span lang=EN-US> ! Routine to print a decimal value
on screen, the value to be</span></p>
<p class=a><a name=L520></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L520"><span
lang=EN-US>520</span></a><span lang=EN-US> ! printed is put in al (i.e 0-255). </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÔʾʮ½øÖÆÊý×ÖµÄ×Ó³ÌÐò¡£ÏÔʾֵ·ÅÔڼĴæÆ÷<span
lang=EN-US>al</span>ÖУ¨<span lang=EN-US>0--255</span>£©¡£</p>
<p class=a><a name=L521></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L521"><span
lang=EN-US>521</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L522></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L522"><span
lang=EN-US>522</span></a><span lang=EN-US> dprnt:&nbsp; push&nbsp;&nbsp;&nbsp;
ax</span></p>
<p class=a><a name=L523></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L523"><span
lang=EN-US>523</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><a name=L524></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L524"><span
lang=EN-US>524</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp;
ah,#0x00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=a><a name=L525></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L525"><span
lang=EN-US>525</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cl,#0x0a</span></p>
<p class=a><a name=L526></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L526"><span
lang=EN-US>526</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
idiv&nbsp;&nbsp;&nbsp; cl</span></p>
<p class=a><a name=L527></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L527"><span
lang=EN-US>527</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp&nbsp;&nbsp;&nbsp;&nbsp; al,#0x09</span></p>
<p class=a><a name=L528></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L528"><span
lang=EN-US>528</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jbe&nbsp;&nbsp;&nbsp;&nbsp; lt100</span></p>
<p class=a><a name=L529></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L529"><span
lang=EN-US>529</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; dprnt</span></p>
<p class=a><a name=L530></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L530"><span
lang=EN-US>530</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp&nbsp;&nbsp;&nbsp;&nbsp; skip10</span></p>
<p class=a><a name=L531></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L531"><span
lang=EN-US>531</span></a><span lang=EN-US> lt100:&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; al,#0x30</span></p>
<p class=a><a name=L532></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L532"><span
lang=EN-US>532</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1</span></p>
<p class=a><a name=L533></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L533"><span
lang=EN-US>533</span></a><span lang=EN-US> skip10: mov&nbsp;&nbsp;&nbsp;&nbsp;
al,ah</span></p>
<p class=a><a name=L534></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L534"><span
lang=EN-US>534</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add&nbsp;&nbsp;&nbsp;&nbsp; al,#0x30</span></p>
<p class=a><a name=L535></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L535"><span
lang=EN-US>535</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call&nbsp;&nbsp;&nbsp; prnt1&nbsp;&nbsp; </span></p>
<p class=a><a name=L536></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L536"><span
lang=EN-US>536</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><a name=L537></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L537"><span
lang=EN-US>537</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L538></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L538"><span
lang=EN-US>538</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret</span></p>
<p class=a><a name=L539></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L539"><span
lang=EN-US>539</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L540></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L540"><span
lang=EN-US>540</span></a><span lang=EN-US> ! Part of above routine, this one
just prints ascii al</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÉÏÃæ×Ó³ÌÐòµÄÒ»²¿·Ö¡£ÏÔʾ<span
lang=EN-US>al</span>ÖеÄÒ»¸ö×Ö·û¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>¸Ã×Ó³ÌÐòʹÓÃÖжÏ<span
lang=EN-US>0x10</span>µÄ<span lang=EN-US>0x0E</span>¹¦ÄÜ£¬ÒԵ紫·½Ê½ÔÚÆÁÄ»ÉÏдһ¸ö×Ö·û¡£¹â±ê»á×Ô¶¯ÒƵ½ÏÂÒ»¸ö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>λÖô¦¡£Èç¹ûдÍêÒ»Ðйâ±ê¾Í»áÒÆ¶¯µ½ÏÂÒ»ÐпªÊ¼´¦¡£Èç¹ûÒѾ­Ð´ÍêÒ»ÆÁ×îºóÒ»ÐУ¬ÔòÕû¸öÆÁÄ»</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>»áÏòÉϹö¶¯Ò»ÐС£×Ö·û<span
lang=EN-US>0x07</span>£¨<span lang=EN-US>BEL</span>£©¡¢<span lang=EN-US>0x08</span>£¨<span
lang=EN-US>BS</span>£©¡¢<span lang=EN-US>0x0A(LF)</span>ºÍ<span
lang=EN-US>0x0D</span>£¨<span lang=EN-US>CR</span>£©±»×÷ΪÃüÁî²»»áÏÔʾ¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÊäÈ룺<span lang=EN-US>AL
-- </span>Óûд×Ö·û£»<span lang=EN-US>BH -- </span>ÏÔʾҳºÅ£»<span lang=EN-US>BL -- </span>ǰ¾°ÏÔʾɫ£¨Í¼Ðη½Ê½Ê±£©¡£</p>
<p class=a><a name=L541></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L541"><span
lang=EN-US>541</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L542></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L542"><span
lang=EN-US>542</span></a><span lang=EN-US> prnt1:&nbsp; push&nbsp;&nbsp;&nbsp;
ax</span></p>
<p class=a><a name=L543></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L543"><span
lang=EN-US>543</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><a name=L544></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L544"><span
lang=EN-US>544</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bh,#0x00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>ÏÔÊ¾Ò³Ãæ¡£</p>
<p class=a><a name=L545></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L545"><span
lang=EN-US>545</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x01</span></p>
<p class=a><a name=L546></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L546"><span
lang=EN-US>546</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x0e</span></p>
<p class=a><a name=L547></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L547"><span
lang=EN-US>547</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><a name=L548></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L548"><span
lang=EN-US>548</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><a name=L549></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L549"><span
lang=EN-US>549</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L550></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L550"><span
lang=EN-US>550</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</span></p>
<p class=a><a name=L551></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L551"><span
lang=EN-US>551</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L552></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L552"><span
lang=EN-US>552</span></a><span lang=EN-US> ! Prints &lt;CR&gt; + &lt;LF&gt;&nbsp;&nbsp;&nbsp;
! </span>ÏÔʾ»Ø³µ<span lang=EN-US>+</span>»»ÐС£</p>
<p class=a><a name=L553></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L553"><span
lang=EN-US>553</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L554></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L554"><span
lang=EN-US>554</span></a><span lang=EN-US> docr:&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L555></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L555"><span
lang=EN-US>555</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><a name=L556></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L556"><span
lang=EN-US>556</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; bh,#0x00</span></p>
<p class=a><a name=L557></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L557"><span
lang=EN-US>557</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; ah,#0x0e</span></p>
<p class=a><a name=L558></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L558"><span
lang=EN-US>558</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0a</span></p>
<p class=a><a name=L559></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L559"><span
lang=EN-US>559</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; cx,#0x01</span></p>
<p class=a><a name=L560></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L560"><span
lang=EN-US>560</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><a name=L561></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L561"><span
lang=EN-US>561</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp;&nbsp;&nbsp; al,#0x0d</span></p>
<p class=a><a name=L562></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L562"><span
lang=EN-US>562</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;&nbsp;&nbsp;&nbsp; 0x10</span></p>
<p class=a><a name=L563></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L563"><span
lang=EN-US>563</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; cx</span></p>
<p class=a><a name=L564></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L564"><span
lang=EN-US>564</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp;&nbsp;&nbsp; ax</span></p>
<p class=a><a name=L565></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L565"><span
lang=EN-US>565</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=a><a name=L566></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L566"><span
lang=EN-US>566</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>È«¾ÖÃèÊö·û±í¿ªÊ¼´¦¡£ÃèÊö·û±íÓɶà¸ö<span
lang=EN-US>8</span>×Ö½Ú³¤µÄÃèÊö·ûÏî×é³É¡£ÕâÀï¸ø³öÁË<span lang=EN-US>3</span>¸öÃèÊö·ûÏî¡£</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>µÚ<span lang=EN-US>1</span>ÏîÎÞÓã¨<span
lang=EN-US>568</span>ÐУ©£¬µ«Ðë´æÔÚ¡£µÚ<span lang=EN-US>2</span>ÏîÊÇϵͳ´úÂë¶ÎÃèÊö·û£¨<span
lang=EN-US>570-573</span>ÐУ©£¬µÚ<span lang=EN-US>3</span>ÏîÊÇϵ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ͳÊý¾Ý¶ÎÃèÊö·û<span
lang=EN-US>(575-578</span>ÐÐ<span lang=EN-US>)</span>¡£</p>
<p class=a><a name=L567></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L567"><span
lang=EN-US>567</span></a><span lang=EN-US> gdt:</span></p>
<p class=a><a name=L568></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L568"><span
lang=EN-US>568</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0,0,0,0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !
dummy&nbsp;&nbsp; ! </span>µÚ<span lang=EN-US>1</span>¸öÃèÊö·û£¬²»Óá£</p>
<p class=a><a name=L569></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L569"><span
lang=EN-US>569</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÔÚ<span lang=EN-US>GDT</span>±íÖÐÕâÀïµÄÆ«ÒÆÁ¿ÊÇ<span
lang=EN-US>0x08</span>¡£ËüÊÇÄں˴úÂë¶ÎÑ¡Ôñ·ûµÄÖµ¡£</p>
<p class=a><a name=L570></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L570"><span
lang=EN-US>570</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x07FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 8Mb - limit=2047 &nbsp;(0--2047</span>£¬Òò´ËÊÇ<span lang=EN-US>2048*4096=8Mb)</span></p>
<p class=a><a name=L571></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L571"><span
lang=EN-US>571</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! base address=0</span></p>
<p class=a><a name=L572></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L572"><span
lang=EN-US>572</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x9A00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! code read/exec &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;! </span>´úÂë¶ÎΪֻ¶Á¡¢¿ÉÖ´ÐС£</p>
<p class=a><a name=L573></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L573"><span
lang=EN-US>573</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! granularity=4096, 386&nbsp; ! </span>¿ÅÁ£¶ÈΪ<span lang=EN-US>4096</span>£¬<span
lang=EN-US>32</span>λģʽ¡£</p>
<p class=a><a name=L574></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L574"><span
lang=EN-US>574</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÔÚ<span lang=EN-US>GDT</span>±íÖÐÕâÀïµÄÆ«ÒÆÁ¿ÊÇ<span
lang=EN-US>0x10</span>¡£ËüÊÇÄÚºËÊý¾Ý¶ÎÑ¡Ôñ·ûµÄÖµ¡£</p>
<p class=a><a name=L575></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L575"><span
lang=EN-US>575</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x07FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;!
8Mb - limit=2047 (2048*4096=8Mb)</span></p>
<p class=a><a name=L576></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L576"><span
lang=EN-US>576</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! base address=0</span></p>
<p class=a><a name=L577></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L577"><span
lang=EN-US>577</span></a><span lang=EN-US> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.word&nbsp;&nbsp;
0x9200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! data read/write &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
</span>Êý¾Ý¶ÎΪ¿É¶Á¿Éд¡£</p>
<p class=a><a name=L578></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L578"><span
lang=EN-US>578</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x00C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! granularity=4096, 386 &nbsp;! </span>¿ÅÁ£¶ÈΪ<span lang=EN-US>4096</span>£¬<span
lang=EN-US>32</span>λģʽ¡£</p>
<p class=a><a name=L579></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L579"><span
lang=EN-US>579</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÊǼÓÔØÖжÏÃèÊö·û±í¼Ä´æÆ÷<span
lang=EN-US>idtr</span>µÄÖ¸Áî<span lang=EN-US>lidt</span>ÒªÇóµÄ<span lang=EN-US>6</span>×Ö½Ú²Ù×÷Êý¡£Ç°<span
lang=EN-US>2</span>×Ö½ÚÊÇ<span lang=EN-US>IDT</span>±íµÄ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÞ³¤£¬ºó<span lang=EN-US>4</span>×Ö½ÚÊÇ<span
lang=EN-US>idt</span>±íÔÚÏßÐÔµØÖ·¿Õ¼äÖеÄ<span lang=EN-US>32</span>λ»ùµØÖ·¡£<span lang=EN-US>CPU</span>ÒªÇóÔÚ½øÈë±£»¤Ä£Ê½Ö®Ç°ÐèÉè</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÖÃ<span lang=EN-US>IDT</span>±í£¬Òò´ËÕâÀïÏÈÉèÖÃÒ»¸ö³¤¶ÈΪ<span
lang=EN-US>0</span>µÄ¿Õ±í¡£</p>
<p class=a><a name=L580></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L580"><span
lang=EN-US>580</span></a><span lang=EN-US> idt_48:</span></p>
<p class=a><a name=L581></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L581"><span
lang=EN-US>581</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp;
0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! idt limit=0</span></p>
<p class=a><a name=L582></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L582"><span
lang=EN-US>582</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp;
0,0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !
idt base=0L</span></p>
<p class=a><a name=L583></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L583"><span
lang=EN-US>583</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÕâÊǼÓÔØÈ«¾ÖÃèÊö·û±í¼Ä´æÆ÷<span
lang=EN-US>gdtr</span>µÄÖ¸Áî<span lang=EN-US>lgdt</span>ÒªÇóµÄ<span lang=EN-US>6</span>×Ö½Ú²Ù×÷Êý¡£Ç°<span
lang=EN-US>2</span>×Ö½ÚÊÇ<span lang=EN-US>gdt</span>±íµÄÏÞ</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>³¤£¬ºó<span lang=EN-US>4</span>×Ö½ÚÊÇ
<span lang=EN-US>gdt</span>±íµÄÏßÐÔ»ùµØÖ·¡£ÕâÀïÈ«¾Ö±í³¤¶ÈÉèÖÃΪ<span lang=EN-US> 2KB</span>£¨<span
lang=EN-US>0x7ff</span>¼´¿É£©£¬ÒòΪÿ<span lang=EN-US>8</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>×Ö½Ú×é³ÉÒ»¸ö¶ÎÃèÊö·ûÏËùÒÔ±íÖй²¿ÉÓÐ<span
lang=EN-US> 256</span>Ïî¡£<span lang=EN-US>4</span>×Ö½ÚµÄÏßÐÔ»ùµØÖ·Îª<span lang=EN-US>
0x0009&lt;&lt;16 +</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! 0x0200 + gdt</span>£¬¼´<span
lang=EN-US>0x90200 + gdt</span>¡£<span lang=EN-US>(</span>·ûºÅ<span lang=EN-US>gdt</span>ÊÇÈ«¾Ö±íÔÚ±¾³ÌÐò¶ÎÖÐµÄÆ«ÒƵØÖ·£¬¼û<span
lang=EN-US>205</span>ÐÐ<span lang=EN-US>)</span></p>
<p class=a><a name=L584></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L584"><span
lang=EN-US>584</span></a><span lang=EN-US> gdt_48:</span></p>
<p class=a><a name=L585></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L585"><span
lang=EN-US>585</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp;
0x800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ! gdt
limit=2048, 256 GDT entries</span></p>
<p class=a><a name=L586></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L586"><span
lang=EN-US>586</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 512+gdt,0x9&nbsp;&nbsp;&nbsp;&nbsp; ! gdt base = 0X9xxxx</span></p>
<p class=a><a name=L587></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L587"><span
lang=EN-US>587</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L588></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L588"><span
lang=EN-US>588</span></a><span lang=EN-US> msg1: &nbsp;&nbsp;.ascii&nbsp;
&quot;Press &lt;RETURN&gt; to see SVGA-modes available or any other key to continue.&quot;</span></p>
<p class=a><a name=L589></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L589"><span
lang=EN-US>589</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0d, 0x0a, 0x0a, 0x00</span></p>
<p class=a><a name=L590></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L590"><span
lang=EN-US>590</span></a><span lang=EN-US>
msg2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ascii&nbsp;
&quot;Mode:&nbsp; COLSxROWS:&quot;</span></p>
<p class=a><a name=L591></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L591"><span
lang=EN-US>591</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0d, 0x0a, 0x0a, 0x00</span></p>
<p class=a><a name=L592></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L592"><span
lang=EN-US>592</span></a><span lang=EN-US>
msg3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ascii&nbsp;
&quot;Choose mode by pressing the corresponding number.&quot;</span></p>
<p class=a><a name=L593></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L593"><span
lang=EN-US>593</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0d, 0x0a, 0x00</span></p>
<p class=a><a name=L594></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L594"><span
lang=EN-US>594</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÊÇ<span lang=EN-US>4</span>¸öÏÔʾ¿¨µÄÌØÕ÷Êý¾Ý´®¡£</p>
<p class=a><a name=L595></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L595"><span
lang=EN-US>595</span></a><span lang=EN-US>
idati:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ascii&nbsp;
&quot;761295520&quot;</span></p>
<p class=a><a name=L596></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L596"><span
lang=EN-US>596</span></a><span lang=EN-US> idcandt:&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.byte&nbsp;&nbsp;
0xa5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>±êºÅ<span lang=EN-US>idcandt</span>Òâ˼ÊÇ<span lang=EN-US>ID of Chip AND
Tech.</span></p>
<p class=a><a name=L597></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L597"><span
lang=EN-US>597</span></a><span lang=EN-US>
idgenoa:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp; 0x77,
0x00, 0x66, 0x99</span></p>
<p class=a><a name=L598></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L598"><span
lang=EN-US>598</span></a><span lang=EN-US> idparadise:&nbsp;&nbsp;&nbsp;&nbsp;
.ascii&nbsp; &quot;VGA=&quot;</span></p>
<p class=a><a name=L599></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L599"><span
lang=EN-US>599</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÊǸ÷ÖÖÏÔʾ¿¨¿ÉʹÓõÄÀ©Õ¹Ä£Ê½¸öÊýºÍ¶ÔÓ¦µÄģʽºÅÁÐ±í¡£ÆäÖÐÿһÐеÚ<span
lang=EN-US>1</span>¸ö×Ö½ÚÊÇģʽ¸ö</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÊýÖµ£¬ËæºóµÄһЩֵÊÇÖжÏ<span
lang=EN-US>0x10</span>¹¦ÄÜ<span lang=EN-US>0</span>£¨<span lang=EN-US>AH=0</span>£©¿ÉʹÓõÄģʽºÅ¡£ÀýÈç´Ó<span
lang=EN-US>602</span>ÐпÉÖª£¬¶ÔÓÚ<span lang=EN-US>ATI</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÅÆ×ÓµÄÏÔʾ¿¨£¬³ýÁ˱ê׼ģʽÒÔÍ⻹¿ÉʹÓÃÁ½ÖÖÀ©Õ¹Ä£Ê½£º<span
lang=EN-US>0x23</span>ºÍ<span lang=EN-US>0x33</span>¡£</p>
<p class=a><a name=L600></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L600"><span
lang=EN-US>600</span></a><span lang=EN-US> ! Manufacturer:&nbsp;&nbsp;
Numofmodes:&nbsp;&nbsp; Mode:</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>³§¼Ò£º<span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;</span>ģʽÊýÁ¿£º<span lang=EN-US>&nbsp;&nbsp;&nbsp; </span>ģʽÁÐ±í£º</p>
<p class=a><a name=L601></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L601"><span
lang=EN-US>601</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L602></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L602"><span
lang=EN-US>602</span></a><span lang=EN-US>
moati:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp;
0x02,&nbsp;&nbsp; 0x23, 0x33 </span></p>
<p class=a><a name=L603></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L603"><span
lang=EN-US>603</span></a><span lang=EN-US>
moahead:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp;
0x05,&nbsp;&nbsp; 0x22, 0x23, 0x24, 0x2f, 0x34</span></p>
<p class=a><a name=L604></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L604"><span
lang=EN-US>604</span></a><span lang=EN-US>
mocandt:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp;
0x02,&nbsp;&nbsp; 0x60, 0x61</span></p>
<p class=a><a name=L605></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L605"><span
lang=EN-US>605</span></a><span lang=EN-US>
mocirrus:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp;
0x04,&nbsp;&nbsp; 0x1f, 0x20, 0x22, 0x31</span></p>
<p class=a><a name=L606></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L606"><span
lang=EN-US>606</span></a><span lang=EN-US>
moeverex:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp; 0x0a,&nbsp;&nbsp; 0x03, 0x04, 0x07, 0x08, 0x0a, 0x0b, 0x16, 0x18, 0x21, 0x40</span></p>
<p class=a><a name=L607></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L607"><span
lang=EN-US>607</span></a><span lang=EN-US>
mogenoa:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp; 0x0a,&nbsp;&nbsp; 0x58, 0x5a, 0x60, 0x61, 0x62, 0x63, 0x64, 0x72, 0x74, 0x78</span></p>
<p class=a><a name=L608></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L608"><span
lang=EN-US>608</span></a><span lang=EN-US> moparadise:&nbsp;&nbsp;&nbsp;&nbsp;
.byte&nbsp;&nbsp; 0x02,&nbsp;&nbsp; 0x55, 0x54</span></p>
<p class=a><a name=L609></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L609"><span
lang=EN-US>609</span></a><span lang=EN-US>
motrident:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp; 0x07,&nbsp;&nbsp;
0x50, 0x51, 0x52, 0x57, 0x58, 0x59, 0x5a</span></p>
<p class=a><a name=L610></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L610"><span
lang=EN-US>610</span></a><span lang=EN-US>
motseng:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp;
0x05,&nbsp;&nbsp; 0x26, 0x2a, 0x23, 0x24, 0x22</span></p>
<p class=a><a name=L611></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L611"><span
lang=EN-US>611</span></a><span lang=EN-US>
movideo7:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .byte&nbsp;&nbsp;
0x06,&nbsp;&nbsp; 0x40, 0x43, 0x44, 0x41, 0x42, 0x45</span></p>
<p class=a><a name=L612></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L612"><span
lang=EN-US>612</span></a><span lang=EN-US> </span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÏÂÃæÊǸ÷ÖÖÅÆ×Ó<span
lang=EN-US>VGA</span>ÏÔʾ¿¨¿ÉʹÓõÄģʽ¶ÔÓ¦µÄÁС¢ÐÐÖµÁÐ±í¡£ÀýÈçµÚ<span lang=EN-US>615</span>Ðбíʾ<span
lang=EN-US>ATI</span>ÏÔʾ¿¨Á½</p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp; ! </span>ÖÖÀ©Õ¹Ä£Ê½µÄÁС¢ÐÐÖµ·Ö±ðÊÇ <span
lang=EN-US>132 x 25</span>¡¢ <span lang=EN-US>132 x 44</span>¡£</p>
<p class=a><a name=L613></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L613"><span
lang=EN-US>613</span></a><span lang=EN-US>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
msb = Cols &nbsp;&nbsp;lsb = Rows:</span></p>
<p class=a><span lang=EN-US>&nbsp;&nbsp;&nbsp;
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>¸ß×Ö½Ú<span lang=EN-US>=</span>ÁÐÊý<span lang=EN-US>&nbsp; </span>µÍ×Ö½Ú<span
lang=EN-US>=</span>ÐÐÊý£º</p>
<p class=a><a name=L614></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L614"><span
lang=EN-US>614</span></a><span lang=EN-US> </span></p>
<p class=a><a name=L615></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L615"><span
lang=EN-US>615</span></a><span lang=EN-US>
dscati:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .word&nbsp;&nbsp;
0x8419, 0x842c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!
ATI</span>¿¨¿ÉÉèÖÃÁС¢ÐÐÖµ¡£</p>
<p class=a><a name=L616></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L616"><span
lang=EN-US>616</span></a><span lang=EN-US> dscahead:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x842c, 0x8419, 0x841c, 0xa032, 0x5042&nbsp;&nbsp; ! Ahead</span>¿¨¿ÉÉèÖÃÖµ¡£</p>
<p class=a><a name=L617></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L617"><span
lang=EN-US>617</span></a><span lang=EN-US>
dsccandt:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .word&nbsp;&nbsp; 0x8419, 0x8432</span></p>
<p class=a><a name=L618></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L618"><span
lang=EN-US>618</span></a><span lang=EN-US>
dsccirrus:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .word&nbsp;&nbsp; 0x8419, 0x842c, 0x841e, 0x6425</span></p>
<p class=a><a name=L619></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L619"><span
lang=EN-US>619</span></a><span lang=EN-US> dsceverex: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.word&nbsp;&nbsp;
0x5022, 0x503c, 0x642b, 0x644b, 0x8419, 0x842c, 0x501e, 0x641b, 0xa040, 0x841e</span></p>
<p class=a><a name=L620></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L620"><span
lang=EN-US>620</span></a><span lang=EN-US>
dscgenoa:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .word&nbsp;&nbsp; 0x5020, 0x642a, 0x8419, 0x841d, 0x8420, 0x842c, 0x843c, 0x503c, 0x5042, 0x644b</span></p>
<p class=a><a name=L621></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L621"><span
lang=EN-US>621</span></a><span lang=EN-US> dscparadise:&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x8419, 0x842b</span></p>
<p class=a><a name=L622></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L622"><span
lang=EN-US>622</span></a><span lang=EN-US> dsctrident:&nbsp;&nbsp;&nbsp;&nbsp;
.word&nbsp;&nbsp; 0x501e, 0x502b, 0x503c, 0x8419, 0x841e, 0x842b, 0x843c</span></p>
<p class=a><a name=L623></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L623"><span
lang=EN-US>623</span></a><span lang=EN-US>
dsctseng:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .word&nbsp;&nbsp; 0x503c, 0x6428, 0x8419, 0x841c, 0x842c</span></p>
<p class=a><a name=L624></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L624"><span
lang=EN-US>624</span></a><span lang=EN-US>
dscvideo7:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .word&nbsp;&nbsp; 0x502b, 0x503c, 0x643c, 0x8419, 0x842c, 0x841c</span></p>
<p class=a><a name=L625></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L625"><span
lang=EN-US>625</span></a><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=a><a name=L626></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L626"><span
lang=EN-US>626</span></a><span lang=EN-US> .text</span></p>
<p class=a><a name=L627></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L627"><span
lang=EN-US>627</span></a><span lang=EN-US> endtext:</span></p>
<p class=a><a name=L628></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L628"><span
lang=EN-US>628</span></a><span lang=EN-US> .data</span></p>
<p class=a><a name=L629></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L629"><span
lang=EN-US>629</span></a><span lang=EN-US> enddata:</span></p>
<p class=a><a name=L630></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L630"><span
lang=EN-US>630</span></a><span lang=EN-US> .bss</span></p>
<p class=a><a name=L631></a><a
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L631"><span
lang=EN-US>631</span></a><span lang=EN-US> endbss:</span></p>
<div class=a align=center style='text-align:center'><span lang=EN-US>
<hr size=4 width="100%" align=center>
</span></div>
<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
</div>
</body>
</html>