¶i¤J«OÅ@¼Ò¦¡(ENTERING PROTECTED MODE)
 

              §Ú­Ìªº¥Ø¼Ð¬O¶i¤J«OÅ@¼Ò¦¡¡A©MÂ÷¶}«OÅ@¼Ò¦¡¦^¨ìDOS¤U¡C'286¨S¦³Â÷¶}«OÅ@¼Ò¦¡ªº¤º³¡
¾÷¨î¡G ¤@¦ý§A¶i¤J«OÅ@¼Ò¦¡¡A´N·|¤@ª½¯d¦b¨º¸Ì¡C IBM ÁA¸Ñ¨ì³o¤@ÂI¡A¨Ã¹ê¦æ¤@­ÓµwÅ骺¸Ñ¨M¤è
¦¡¡A´N¬OÂǵۭ«³] (reset) CPU¨Ï '286Â÷¶}«OÅ@¼Ò¦¡¡C¬JµM'286ªºpower-onª¬ºA¬O¯u¹ê¼Ò¦¡¡A¥u­n
­«³]CPU´N·|¦^¨ì¯u¹ê¼Ò¦¡¤U¡C¦ý¬O³o²£¥Í¤F¤@­Ó¤p°ÝÃD¡ACPU¦b¥¦Â÷¶}ªº¦a¤è¤£·|Ä~Äò°µ°õ¦æ¡C
¦b­«³]®É¡ACPU¶}©l¦bBIOS ªº°O¾ÐÅ骺³Ì¤W¼h°õ¦æ¡C¨S¦³¤@­Ó¨ó©w§i¶D BIOS¡A§Ú­Ì¬O¬°¤FÂ÷¶}
«OÅ@¼Ò¦¡¦Ó°µ­«³]¡ABIOS ¨S¦³¿ìªk±N±±¨îÅv¥æ¦^¨Ï¥ÎªÌªºµ{¦¡¡C

               IBMÂǵۼg¤@­Óµ{¦¡½Xµ¹CMOS RAM¨Ó¹ê¦æ¤@­Ó«Ü²³æªº¨ó©w¡A³o¼Ë¤lBIOS´N¥i¥HÀˬd
³o­Óµ{¦¡½X¦Ó«á¨M©w­n°µ¤°»ò¡C¦b BIOS±q­«³]¶}©l°õ¦æ«á¡A¥¦¥ß¨è¥hÀˬd¦bCMOS¸Ìªº½X¡A¥h½T
©wCPU¬O§_¬°¤FÂ÷¶}«OÅ@¼Ò¦¡ªº¥Øªº¦Ó³Q°õ¦æ­«³]¡C¨Ì¾ÚCMOS¸Ìªºµ{¦¡½X¡ABIOS¥i¥H±N±±¨îÅv
¥æ¦^¨Ï¥ÎªÌªºµ{¦¡µM«áÄ~Äò°õ¦æ¡C

               ­«³] CPU¤]¥]¬A¤F¥¦ªº¤ÀªK¡A©Ò¦³ªºCPU¼È¦s¾¹³£³Q¯}Ãa¡A¥H¤Î¦bProgrammable  Interrupt  Controller (PIC) ¸Ìªº¤¤Â_mask¦³®É­Ô¤]³Q BIOS­«·s³]­p (µøshutdown type¦Ó©w) ¡C¦]¦¹¡A¦b¶i¤J
«OÅ@¼Ò¦¡ ¤§«e¡AÀx¦sPIC  mask¡B°ïÅ|ªº«ü¼Ð¡Bªð¦^¦ì§}¡A¬Oµ{¦¡ªº³d¥ô¡C PIC  mask ©M°ïÅ|ªº«ü
¼Ð¥²¶·³Q¦s¤J¨Ï¥ÎªÌªº¸ê®Æ¸`°Ï¡A¦ý¬Oªð¦^¦ì§}¥²¶·³Q¦s¤J¤@­Ó©T©wªº¦a¤è¡A³Q©w¸q¦b BIOSªº¸ê
®Æ¸`°Ï  --- 40:67h¡C
 
               ±µ¤U¨Ó¡A§Ú­Ì±Nµ{¦¡½X©ñ¦b CMOS¸Ì¡A§i¶D BIOS§Ú­Ì­nÂ÷¶}«OÅ@¼Ò¦¡¡A¦^¨ì¨Ï¥ÎªÌµ{¦¡
¤U ¡C ³o¥u­n¦bCMOSªº¨â­Ó I/O°ð¡A±N¤@­Ó¼Æ­È¼g¶i´N¥i¥H»´©ö¹F¦¨¡C¦bCPU­«³]«á¡ABIOS·|ÀË
¬d CMOS ªºµ{¦¡½X¡ABIOS ±N·|²M°£ CMOS ªºµ{¦¡½X¡A¦]¦¹¤§«áªº­«³]±N¤£·|³y¦¨¤£¥i¹w´úªºµ²
ªG¡C¦b±Nµ{¦¡½X©ñ¶iCMOS«á¡A³oµ{¦¡¥²¶·«Ø¥ßGDT(See the appropriate Intel programmer's reference manual  for a  description of the GDT. )¡C¤@¨Ç­­¨î©M¨Ï¥ÎÅv±N·|³Qcompiler¶ñ¤J¡A³o¨Ç¼Æ­È³£¬OÀR
ºAªº(static) ¡C¦ý¬O¨C­Ó¸`°Ïªº°ò§}¤£·|³Qª¾¹D¡Aª½¨ìµ{¦¡³Q°õ¦æ (run-time)ªº®É­Ô¡C¦]¦¹µ{¦¡¥²¶·
±N¥L­Ì¶ñ¶i GDT ¡C§Ú­Ìªºµ{¦¡±N·|«Ø¥ß¤@­Ó¥]§tµ{¦¡½X¡B¸ê®Æ¥H¤Î³Q§Ú­Ìµ{¦¡©w§}ªº°ïÅ|¸`°Ïªº GDT¡C¤@­Ó¦bGDT³Ì«áªº±ø¥Ø±N·|«ü¦V1Mªº»¡©ú¡C
 
              ¦b¨Ï¥Î1M ªº°O¾ÐÅé¨Ã¤£¹³«Ø¥ß©M¨Ï¥Î¤@­ÓGDT entry¤@¼ËªºÂ²³æ¡C8086¦³¼ç¤O¥h©w§}64K
¡A¥L©Ò¤í¯Êªº¬O²Ä 21±ø¦ì§}½u( address line)¡C8086 ¥u¦³20±ø¦ì§}½u(A00..A19)¡A¦]¬°¯Ê¤Ö¤FA20
¡A¥ô¦ó¥ø¹Ï¶W ¹L1Mªº©w§}±N·|°jÂà(wrap)¨ì 0¡C'286¦³24bitsªº©w§}¯à¤O(A00..A23)¡A¦b³o¤è­±ªí
²{ªº¸ò8086¤£ ¤@¼Ë¡C¥ô¦ó¥ø¹Ï¶W¥X1M(FFFF:0010 -FFFF:FFFF) ªº©w§}±N·|¥Î¨ì A20¡A¨Ã¤£·|¦^
¨ì 0¡C

               ¥ô¦ó¨Ì¿à 8086·|¦^¨ì0ªº°O¾ÐÅ骺µ{¦¡¡A¤£·|°õ¦æªº«Ü¾A·í¡CÃö©ó³o­Ó¬Û®e¯à¤O°ÝÃDªº¸Ñ
¨M¡AIBM ¨M©w¦b¹q¸£¸Ìªº¬Y¤@­Ó´¹¤ù¡A¥Î¤@­Ó¥i³]­pªº¿é¥X±µ¸} AND CPUªºA20ªº¿é¥X¡C³o­ÓAND
¹hªº¿é¥X»P¦ì§}¶×¬y±Æ(address  bus) ³s±µ¡C®Ú¾Ú±qCPU¤¤¤w¸ò¤@­Ó¥~¦b¥i³]­pªº­ì©l½X°µANDªº
A20ªº¿é¤J¡A¦ì§}¶×¬y±Æ A20³Q«Å§i¡CÁä½L±±¨î¾¹³Q¿ï¬°³o­Ó¥i³Q³]­pªº­ì©l½X¡A¦]¬°¥¦¥]§t¬Y¨Ç
¥iÀò±oªº±µ¸}(pin)¡A¦bµ{¦¡ªº±±¨î¤U¡A¥i¥H³Q´x´¤¬°°ª¹qÀ£ (high)©Î§C¹qÀ£(low)©Î±µÄ²¡C·í³o±µ¸}
ªº¿é¥X³Q³]­p¦¨°ª¹qÀ£¡ACPU«Å§iA20®É¡AAND¹hªº¿é¥X¤]¬O°ª¹qÀ£¡C·í¿é¥X¬O§C¹qÀ£¡AA20¦b¦ì
§}¶×¬y±Æ¸Ì¤]¤@©w¬O§C¹qÀ£¡A¤£ºÞCPU A20ªºª¬ºA¦p¦ó ¡C¦]¦¹¡AÂǵ۸T¤î A20 ±q¦ì§}¶×¬y±Æ³Q«Å
§i¡A'286¯Åªº¾÷¾¹¥i¥H¼ÒÀÀ¥¦­Ì8086ªº°O¾ÐÅé°jÂàÄݩʡC

              ª`·N¡A¥u¦³A20±µ¹h¨ì¶×¬y±Æ¡C¦]¦¹¨S¦³¥ô¦ó¿é¤J¥i¶iA20¹h¡ACPU¥i¥H©w§}¥ô¦ó°¸¼Æmegabyte
ªº°O¾ÐÅé¡A¦p¤U¡G0-1M, 2-3M, 4-5Mµ¥¡C¨Æ¹ê¤W¡A³o¨Ç°O¾ÐÅé°Ï¶ôªº°Æ¥»¥X²{¬°1-2M,3-4M,5-6Mµ¥
¡A´N¬O¦]¬°¦b¦ì§}¶×¬y±Æ¤W¡A§âA20´x´¤¦¨§C¹qÀ£¡C¬°¤F¨Ï24-bits ªº§¹¥þ©w§}¯à¤O¦¨¬°¥i¯à¡A¤@­Ó
©R¥O¥²¶·³Q°e¥hÁä½L±±¨î¾¹(KBC)¡CKBC±N·|¨Ï¥¦ªºpinªº¿é¥XÅܦ¨°ª¹qÀ£¡A·í¦¨ A20¹hªº¿é¤J¡C¤@
¥¹ ³o¼Ë°µ¡A°O¾ÐÅé«K¤£¦A°jÂà¡A§Ú­Ì¥i¥H¦b'286¤W§¹¥þ©w§}16Mªº°O¾ÐÅé¡A©Î¾ã­Ó4G¦b80386¯Åªº
¾÷¾¹¤W¡C

              ¨ä¥L¬°¤F¶i¤J«OÅ@¼Ò¦¡©Ò°µªº¦³¡A§ïÅÜ CPU ªºª¬ºA¦¨¬°«OÅ@¼Ò¦¡¡A¥H¤Î¸õ¨ìªÅªº¹w¥ý¨ú±o
¦î¦C(prefetch queue)¡C

               ±µ¤U¨Óªºªí¬O¦b'286¶i¤J«OÅ@¼Ò¦¡¨BÆJ(with the intention of leaving) ªººK­n¡G
 

  1. ±N¦bµ{¦¡¸ê®Æ¸`°Ïªº8259 PIC maskÀx¦s¡C
  2. ±Nµ{¦¡¸ê®Æ¸`°ÏªºSS:SPÀx¦s¡C
  3. ±N¦b40:67¸Ì¡A±q«OÅ@¼Ò¦¡ªð¦^ªºªð¦^¦ì§}Àx¦s¡C
  4. ¦bCMOS©ñ¤JÃö¾÷ªºµ{¦¡½X¡A§i¶DBIOS§Ú­Ì±N·|ªð¦^§Ú­Ìªºµ{¦¡ª½¨ì­«³]¡C
  5. «Ø¥ßGDT¡C
  6. ¨ÏA20¦b¦ì§}¶×¬y±Æ¡C
  7. ¨Ï«OÅ@¼Ò¦¡¦bCPU machine status word (MSW)¸Ì¡C
  8. ¸õ¨ì°®²bªºprefetch queue¡C
              ¨BÆJ1¨ì6¥i¤£¨Ì¶¶§Ç¦Ó¦æ¡C
 
              ¶i¤J'386©M'486ªº«OÅ@¼Ò¦¡©Ò»Ýªº³Ì¤Ö¨BÆJ¥i¤Ö¦h¤F¡A¦b'386¸Ì¥i¥H¤£¥²­«³]CPU´NÂ÷¶}«O
Å@¼Ò¦¡¡C¬°¤F¬Û®eªº¥Øªº¡A©Ò¦³'386ªºBIOS·|¿ëÃѦb'286µ¥¯Å¾÷¾¹¤WCPUªºÃö¾÷¨ó©w¡A¦ý¬O¡A¸òÀH
µÛ³o¶µ³]©w¨Ã¤£¬O¥²¶·ªº¡CÂ÷¶} '386ªº«OÅ@¼Ò¦¡¡Aµ{¦¡¥u­n²M°£¦bCPU±±¨î¼È¦s¾¹ªº¤@­Óbit´N¦æ¤F
¡C³o¨Ã¤£»Ý­n±NPIC mask¡BSS:SP©Mªð¦^¦ì§}Àx¦s°_¨Ó¡A©Î©ñ¤J¤@­ÓCMOSªºµ{¦¡½X¡C
 
              ¶i¤J'386ªº«OÅ@¼Ò¦¡ªº¥²­n¨BÆJÅܬ°¡G
 
  1. «Ø¥ßGDT¡C
  2. ¨ÏA20¦b¦ì§}¶×¬y±Æ¡C
  3. ¨Ï«OÅ@¼Ò¦¡¦bCPU±±¨î¼È¦s¾¹¸Ì¡C(CR0, or MSW)
  4. ¸õ¨ì°®²bªºprefetch queue¡C
 
              ¦b³o¨Ç¥²­n¨BÆJ¸Ì¡A«Ø¥ßGDT¬O°ß¤@·|¦³¤£¦Pªº¨BÆJ¡C¦b'386¸Ì¡A°ò§}³QÂX®i¦¨32 bits¡A¸`
°Ï¤j¤p­­¨î³QÂX®i¦¨ 20 bits¡A ¥H¤Î¶W¹L¨â­Ó±±¨îÄݩʦ줸³Q´£¥X¡C Listing 1¦C¥X©Ò¦³ªº»²§U°Æµ{¦¡
¥H¶i¤J«OÅ@¼Ò¦¡¡C
 

¦Wµü¸ÑÄÀ¡G
 
address line¡G¨M©wCPU©Ò¯à¦s¨ú¨ìªº°O¾ÐÅé®e¶q¤W­­¡A¦ì§}½u¶V¦h¡ACPU©w§}¯à¤O¶V¤j¡C
AND¡GÅÞ¿è¹Bºâ«ü¥O¡A¨âªÌ¬Ò¬°¯u( 1)®É¡A¤~¬°¯u( 1) ¡C
address bus¡G¶Ç°e¦ì¸m¥Îªºbus¡A¨ä¼e«×¥Ñaddress line¨M©w¡C
bus¡G¶×¬y±Æ¡A¥Ñ¼Æ¤Q±ø¥­¦æªº¹q½uºc¦¨¡A ¥i³s±µ¦Ü¦U´¹¤ù¡A ¥HÅý¦U´¹¤ù¤¬¬Û¶Ç»¼¸ê®Æ¡A ¨ä¬°¤½¥Îªº¡Aµ¥ 
          ¨ì±±¨îÅvªº¤H´N¥i¥H¨Ï¥Î¡C
wrap¡G±q°ª¼È¦s¾¹¦Ü§C¼È¦s¾¹¤§¶¡©Ò»Ý¤§«ùÄò¼È¦s¾¹¦ì§}¡C