Â÷¶}«OÅ@¼Ò¦¡ (EXITING PROTECTED MODE)
 

         ¦  ¦p¦P¶i¤J«OÅ@¼Ò¦¡¡AÂ÷¶}«OÅ@¼Ò¦¡¦b'386©M'286 ªº¾÷¾¹¤W¤]¤£¤@¼Ë¡C'386¥u­n²M°£¦bCPU±±
¨î¾¹¼È¦s¾¹CR0 ¸Ìªº¤@­Óbit¡A¦ý¬O'286¥²¶·­«³]CPU¡C­«³]CPU»Ý­n¥I¥X¤@ÂI¥N»ù¡A·í¥¦­«³]CPU
¥H¤Î±N±±¨îÅvÁÙ¦^¨Ï¥ÎªÌµ{¦¡¡A·|¸g¹L¤W¦Ê(¦pªG¨S¦³¤W¤d)­Ó´`Àô¶g´Á¡C

             IBM­ì¨Ó¨Ï¥Îªº¤è¦¡¡A¬O¥ÎÁä½L±±¨î¾¹----±NCPU­«³]½u(RESET line)»P¥t¤@­Ó¿é¥Xpin³s±µ¡C
Âǵ۵o¥X¾A·íªº©R¥O¡AKBC·|±µÄ²  (toggle) CPUªº RESET line¡C³oºØ¤è¦¡¥i¦æ¡A¦ý¬O«D±`ªººC¡C³\
¦h·s¥@¥Nªº '286´¹¤ù¦³¤@­Ó¡§§Ö³t­«³](fast reset)¡¨ªº¯S¼x¡C³o¨Ç´¹¤ùÂǵۼg¤J¤@­Ó I/O°ð¨Ótoggle
­«³]½u¡C¥i¦æ®É¡A§Ö³t­«³]¬O³Q¤H°¾¦nªº¤@ºØ¤è¦¡¡C¦ý¬O³o¸Ì¦³²Ä¤TºØ¡A¸ûÃøÀ´ªº¡A«o¦³®Ä²v­«³]
CPUªº¤èªk¡A¤£¥Î¨ìÁä½L±±¨î¾¹KBC©ÎFSAT  RESET ¡C³o¤èªk¸û KBC§Ö¥BÀu¡A¦Ó¥B¦b '386¤W¤£¥Î
­«³] CPU¡C¥¦ªº½T¬O³ÌÀu¡A³Ì¼sªx¨ÓÂ÷¶}«OÅ@¼Ò¦¡ªº¤èªk¡C¥¦¥i¥H¦b'386©M'286¤W¤u§@ -- ¹ï¨C­ÓCPU
¨Ó»¡¡A³Ì¦³®Ä²vªº ¤è¦¡¤U¡C Listing 2 ´£¨Ñ¹B¥ÎKBC ©M³oÀu¶®ªº¤è¦¡¥²­nªºµ{¦¡½X¡C
 
             ¨Ï¥Î KBC¨Ó­«³] CPU¬O¤@­Óª½±µªº¤è¦¡¡A¦ý¬O¬°¤F­nÁA¸Ñ³o§ó¦nªº§Þ³N¡A¤@¨Ç»¡©ú¬O¥²­n
ªº ¡C¦^¾Ð§Ú­Ì©Ò°Q½×ªº¤¤Â_¡ACPUÀˬd¤¤Â_¼Æ­È[x8]¬O§_¹H¤Ï¤F¦binterrupt  descriptor cache register (IDTR)
¸Ìªº­­¨î½d³ò¡C¦pªG³q¹LÀË´ú¡A¨º»ò±µ¤U¨Óªº¤¤Â_³B²z¶¥¬q´N¶}©l¡C¦ý¦pªGÀË´ú¥¢±Ñ¡ACPU ·|²£¥Í
¤@­ÓDOUBLE FAULT (INT  08)¡CÁ|­Ó¨Ò¤l¡AÅý§Ú­Ì°²³]¦bIDTRªº­­¨î½d³ò=80h¡A§Ú­ÌªºIDT¦³16
­Ó¤¤Â_ªA°È¡A00-15¡C¦pªG¤¤Â_16©Î§ó¤j¼Æ­Èªº¤¤Â_²£¥Í¡ACPU´N·|²£¥ÍDOUBLE FAULT¡A¦]¬°¤@
­Ófault¬O¦b¤¤Â_©I¥ssequence¤§ªì²£¥Íªº¡C²{¦b¡A°²³]¦bIDTRªº­­¨î½d³ò¬O0¡A¦]¦¹¸T¤î©Ò¦³ªº¤¤
Â_ªA°È ¡C ¥ô¦ó¤¤Â_µo¥Í®É·|¾É­PDOUBLE FAULTªº²£¥Í¡C¦ý¬ODOUBLE FAULT¥»¨­·|²£¥Í¤@­Ófault
¡A¾É­P­­¨îÅܦ¨¤Ö©ó40h¡C³o³Ì«á·|¾É­P¤@­Ó TRIPLE  FAULT¡ACPU·|¶i¤J¤@­ÓÃö¾÷¶g´Á¡C
 
              Ãö¾÷¶g´Á¤£·|­«³] CPU¡A ¦]¬°¤@­ÓÃö¾÷¶g´Á³Qµø¬°¬O¤@­Ó¶×¬y±Æ(BUS)¶g´Á¡CÁõÄÝ©ó CPU
ªº¥~¬ÉªºµwÅé¥h¿ëÃÑÃö¾÷¶g´Á¡C·í¤@­ÓÃö¾÷¶g´Á³Q¹îı¡A¨º¥~¬ÉµwÅé toggle CPUªº RESET ¿é¤J¡C
¦]¦¹¡A§Ú­Ì©Ò­n°µªº¡A ´N¬OÅýRESET³Q³]¬° IDTR.LIMLT = 0¡AµM«á²£¥Í¤@­Ó¤¤Â_¡C§Ú­Ì¤£»Ý­n½Õ
¾ã CPUªºINT¡A§Ú­Ì²£¥Í ¤@­Ó¤£¦X²zªº¹Bºâ½X (opcode) ¡C§Ú­Ìªº¹Bºâ½X¬O¥J²Ó¬D¿ï¹Lªº¡A¤£¦s¦b '286
¸Ì¡A¦ý¬O¦s¦b '386¡C¬°¤F³o¥Øªº³Q¿ï¥X¨Óªº¹Bºâ½X¡GMOV¡ACR0¡AEAX¡C³o±N·|¦b'286²£¥Í¹w´Áªº
¤£¦X²zªº¹Bºâ½Xexception¡A¦ý¬O¬O²Ä¤@­ÓÂ÷¶}'386«OÅ@¼Ò¦¡ªº«ü¥O¡C¦]¦¹ '286³Q­«³]¡A'386¤£¥Î¦ý
º}«G¦aÂ÷¶}«OÅ@¼Ò¦¡¡C

              Â÷¶}'286©M'386ªº«OÅ@¼Ò¦¡¡A»P¶i¤J«OÅ@¼Ò¦¡ªº¬Û¤Ï¨BÆJ«D±`ªº¬Û¦ü¡C¦b'286¡A§A¥²¶·¡G
¡

  1. ­«³]CPU¥H¶i¤J¯u¹ê¼Ò¦¡¡C
  2. ¸ü¤J¸`°Ï¼È¦s¾¹¥H¯u¹ê¼Ò¦¡¬Û®eªº¼Æ­È¡C
  3. ¦A¤@¦¸Àx¦s SS:SP¡C
  4. ¸T¤îA20¨Ó¦Û¦ì§}¶×¬y±Æ(gate A20 off)¡C
  5. ¦A¤@¦¸Àx¦sPIC masks¡C
               ¦b'386¡A¨BÆJ«Ü²³æ¡G
 
  1. ¸ü¤J¸`°Ï¼È¦s¾¹¥H¯u¹ê¼Ò¦¡¬Û®eªº¼Æ­È¡C
  2. ­«³]¦bCR0¸ÌªºProtection Enable (PE) bit¡C
  3. ¸ü¤J¸`°Ï¼È¦s¾¹¥H¯u¹ê¼Ò¦¡¬Û®eªº¼Æ­È¡C
  4. ¸T¤îA20¨Ó¦Û¦ì§}¶×¬y±Æ(gate A20 off)¡C
                (Listing 3 ¥]¬AÂ÷¶}«OÅ@¼Ò¦¡«á¡A»Ý­n­«·sÀx¦s¾÷¾¹ª¬ºAªºsubroutines¡C)
 

              ª`·N¦b '386 Â÷¶}«OÅ@¼Ò¦¡»Ý­n¸ü¤J¸`°Ï¼È¦s¾¹¨â¦¸¡C²Ä¤@¦¸¸ü¤J¸`°Ï¼È¦s¾¹¡A¬O¬°¤F½T«O
¯u¹ê¼Ò¦¡¬Û®e¼Æ­È¡A³Q¦s¦bÁôÂêºdescriptor cache registers -- §Y¨Ï¸ü¤J¦b¯u¹ê¼Ò¦¡¤U¡Adescriptor cache registers«Ü­«µø¨Ó¦Û«OÅ@¼Ò¦¡ªº¨Ï¥ÎÄݩʩM¸`°Ï¤j¤p­­¨î¡C²Ä¤G¦¸¸ü¤J¬O¬°¤F¥Î¯u¹ê¼Ò¦¡ªº¸`°Ï¼Æ
­È©w¸q¥¦­Ì¡C

              ¬JµM§Ú­Ì¦³©Ò¦³ªº¤u¨ã©M²z½×¶i¥X«OÅ@¼Ò¦¡¡A §Ú­Ì¥i¥HÀ³¥Î³oª¾ÃѨӼg¤@­Ó¶i¤J«OÅ@¼Ò¦¡
ªºµ{¦¡¡A±q©µ¦ù°O¾ÐÅé²¾°Ê¤@­Ó°Ï¬qªº¸ê®Æ¡A©MÂ÷¶}«OÅ@¼Ò¦¡ -- ¦^¨ìDOS¤U¡C Listing 4  Åã¥Ü¤@­Ó
¦³³o¨Ç°ò¥»¨BÆJ¡A¥H¤Î¥i¥H¥Î¨Ó²¾°Ê¤@­Ó1k°Ï¬qªº¸ê®Æ¡A±q1M¨ì§Ú­Ìµ{¦¡ªº¸ê®Æ¼È¦s¾¹ªºµ{¦¡¡C