§Ú̪º¥Ø¼Ð¬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¥un
«³]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©wn°µ¤°»ò¡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¥un¦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) ªººKn¡G
¦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 |