â¤Ã§ÊÃéҧʶһѵ¡ÃÃÁ¢Í§
CPU 8086 (8086 block diagram)
8086 ÁÕáÍ´à´ÃÊ
20 àÊé¹ «Öè§·ÓãËéÍéÒ§áÍ´à´ÃÊä´é¶Ö§ 1,045,576 亵ì (ËÃ×Í 1 àÁ¡Ð亵ì) ËÃ×ÍÁÒ¡à»ç¹
16 à·èÒ ¢Í§äÁâ¤Ãâ»Ãà«Êà«ÍÃ좹Ҵ 8 ºÔµ data bus ÁÕ¢¹Ò´ 16 ºÔµ ·ÓãËé 8086
ÊÒÁÒöàÃÕ¡¢éÍÁÙÅä´é·ÕÅÐ 1àÇÔÃì´ ËÃ×Í 2 亵ìä´éáÅÐÂѧàµÃÕÂÁ¾ÃéÍÁÊÓËÃѺ¡Ò÷ӧҹẺ
ãªéËÅÒ CPU áÅÐÃÇÁ·Ñé§¡Ò÷ӧҹ ÃèÇÁ ¡ÑºÍØ»¡Ã³ìÍ×è¹·Õè¨Ð·Ó§Ò¹ÃèÇÁ¡Ñ¹ 8086
ä´é´éÇÂ
ÃÙ»áÊ´§
block diagram ¢Í§ CPU 8086
Register
¢Í§ CPU 8086
ÃÕ¨ÔÊàµÍÃì¢Í§
8086 »ÃСͺ´éÇÂÃÕ¨ÔÊàµÍÃìÊÓËÃѺ¨Ø´»ÃÐʧ¤ì·ÑèÇä», ÃÕ¨ÔÊàµÍÃì ªÕé¤ÓÊÑè§ flag
áÅÐ à«¡àÁ¹µì ÃÕ¨ÔÊàµÍÃì ÃÕ¨ÔÊàµÍÃìàËÅèÒ¹Õé¹ÓÁÒãªé§Ò¹ÊÓËÃѺ¡ÒÃÍéÒ§ address
áÊ´§Ê¶Ò¹Ð¢Í§à¤Ã×èͧ áÅÐÊÓËÃѺ fetch ¤ÓÊÑè§à¾×èÍÁÒµÕ¤ÇÒÁ áÅСÃзӵÒÁ
㹺ÃôÒÃÕ¨ÔÊàµÍÃì·ÕèÁÕÍÂÙè·Ñé§ËÁ´¢Í§
8086 à»ç¹ÃÕ¨ÔÊàµÍÃ좹Ҵ 16 ºÔµ ÃÕ¨ÔÊàµÍÃì AX ¨Ð»ÃСͺ ´éÇ AH áÅÐ AL â´Â
AX ·Ó˹éÒ·Õè㹡ÒÃãªé¤Ù³ËÒÃËÃ×Íà»ç¹ÃÕ¨ÔÊàµÍÃì à¡ÕèÂǡѺÍÔ¹¾ØµàÍÒµì¾Øµ ·Õèà»ç¹àÇÔÃì´
AL ·Ó ˹éÒ·Õèã¢é㹡Òäӹdz ¤Ù³ËÒà ËÃ×Í·Ó§Ò¹à¡ÕèÂǡѺÍÔ¹¾Øµ àÍÒµì¾Ø· á»Å§
¢éÍÁÙŨѴ¡ÒäӹdzẺµÑÇàÅ¢ °Ò¹ÊԺẺ 8 ºÔµ Êèǹ AH ãªéà»ç¹ÃÕ¨ÔÊàµÍÃì㹡ÒäٳáÅÐ
ËÒÃä´é BX ãªé㹡ÒÃá»Å§¢éÍÁÙÅ CX ãªé㹤ÓÊÑè§ ¨Ñ´¡ÒÃà¡ÕèÂǡѺʵÃÔ§ áÅСÒÃÅÙ»
CL ãªéà»ç¹µÑÇá»ÃÊÓËÃѺ¡ÒÃàÅ×è͹ºÔµËÃ×ÍËÁعºÔµ DX ãªé㹤ÓÊÑ觤ٳ ËÒÃà»ç¹àÇÔÃì´ËÃ×Íãªéã¹ÃٻẺÍéÒ§ÍÔ¹¾ØµàÍÒµì¾ØµáººÍéÍÁ
SP ãªé¡Ñº¤ÓÊÑè§Êᵡ SI áÅÐ DI ãªé¡Ñº¤ÓÊÑè§·Õèà¡ÕèÂǡѺʵÃÔ§
ÃÙ»áÊ´§ÃÕ¨ÔÊàµÍÃì·Õèãªéã¹äÁâ¤Ãâ»Ãà«Êà«ÍÃì
8086
ÃÕ¨ÔÊàµÍÃìãªé§Ò¹·ÑèÇ仢ͧ
8086
ÃÕ¨ÔÊàµÍÃìã¹
8086 »ÃСͺ´éÇ ÃÕ¨ÔÊàµÍÃìµé¹·Ò§ËÃ×Í source áÅÐ ÃÕ¨ÔÊàµÍÃì »ÅÒ·ҧËÃ×Í
destination BX(base) , SP (stack pointer), BP (base pointer), SI (source
index) áÅÐ DI (destination index) «Öè§ÊÒÁÒö·Õè¨Ð¹ÓÁÒà»ç¹µÑÇÍéÒ§ address
ä´é ´Ñ§ÃÙ»
ÃÙ»áÊ´§â¤Ã§ÊÃéÒ§ÃÕ¨ÔÊàµÍÃì¢Í§
8086 ¡Ñº¡ÒäӹdzáÍ´à´ÃÊ
ÃÕ¨ÔÊàµÍÃ좹Ҵ
16 ºÔµ À µÑÇ«Öè§ä´éá¡è AX (accumulator) , BX (base) , CX (counter) áÅÐ
DX (data) Âѧ¶Ù¡áºè§ÍÍ¡à»ç¹¤ÃÖ觺¹ (AH, BH, CH áÅÐDH) áÅФÃÖè§ÅèÒ§ (AL,
BL, CL áÅÐ DL) ÃÕ¨ÔÊàµÍÃìàËÅèÒ¹ÕéÍÒ¨¨Ð·Ó§Ò¹ã¹ÅѡɳРà»ç¹àÇÔÃì´ËÃ×Í亵ì¡çä´é
ã¹¡ÅØèÁ¹Õé¶×ÍÇèÒà»ç¹ÃÕ¨ÔÊàµÍÃì ¢éÍÁÙÅ ÃÕ¨ÔÊàµÍÃìã¹¡ÅØèÁ pointer áÅÐ index
ÁÑ¡¨Ð¹Ó ä»ãªé㹡ÒÃÍéÒ§ address áÅÐÂѧãªé㹡ÒáÃÐ·Ó ·Ò§¤³Ôµ ÈÒʵÃìáÅÐÅͨԡä´é
ÃÕ¨ÔÊàµÍÃì
BP áÅÐ SP ÁÑ¡¨Ðãªé㹡ÒêÕéÊᵡ à¾×èͨзӡÒÃà¡çºµÓáË¹è§ address ¡ÅѺ¨Ò¡
â»Ãá¡ÃÁÂèÍ â´ÂãªéËÅÑ¡¡ÒÃàËÁ×͹Êᵡ¢Í§ CPU 8 ºÔµ Êèǹ BP ¹Ñ鹨ÐãªéÊÓËÃѺà»ç¹
µÑǺǡ à¾×èͪÕé¤èÒÊᵡÍÕ¡·Õ˹Öè§ à¾×èͨÐà»ç¹ÇÔ¸Õ·Õè¨ÐÍӹǤÇÒÁÊдǡ㹡ÒÃÊ觤èÒ
¾ÒÃÒÁÔàµÍÃìà¢éÒÊÙèâ»Ãá¡ÃÁâ´Â¼èÒ¹·Ò§ Êᵡ «Ö觪èÇÂã¹ ¡ÒÃÊ觤èҢͧµÑÇá»ÃÃÐËÇèÒ§â»Ãá¡Ãä´é´Õ
ÃÕ¨ÔÊàµÍÃì SI áÅÐDI ¨Ð·Ó¡ÒõԴµè͡Ѻ˹èǤÇÒÁ¨Óä´é «Ö觨Ðãªé§Ò¹ä´é´Õã¹¡ÅØèÁ¤ÓÊÑ觾ǡ
ʵÃÔ§áÅСÒà ·Ó§Ò¹à»ç¹ block ËÃ×Í ¡ÒÃàª×èÍÁâ§¢éÍÁÙÅã¹â¤Ã§ÊÃéҧẺ array
㹡Òà fetch
¤ÓÊÑ觢ͧ 8086 ¨Ðãªé IP (instruction pointer) ¢¹Ò´ 16 ºÔµ à»ç¹µÑǪÕéµÓá˹è§
address ¢Í§ ¤ÓÊÑè§¶Ñ´ä»·Õè¨Ð¶Ù¡·Ó§Ò¹ «Ö觤ÇÒÁ¨ÃÔ§áÅéǤèÒã¹ IP äÁèä´é¡Ó˹´µÓá˹è§â´ÂµÃ§
áµè¨Ð ÁÕ¡ÒäӹdzÁÒ¡è͹
8086 à»ç¹
flag ʶҹШӹǹ 6 ºÔµ áÅÐ flag ¤Çº¤ØÁ¨Ó¹Ç¹ 3 ºÔµ«Ö觺ÃèØÍÂÙèã¹ÃÕ¨ÔÊàµÍÃ좹Ҵ
16 ºÔµ
ÃÙ»áÊ´§
flag ¢Í§ 8086 ·Õèãªé㹡Ò÷´Êͺ¡Ò÷ӧҹ¢Í§ CPU
flag ä´é¶Ù¡Í͡ẺÁÒà¾×èÍáÊ´§¼Å¢Í§¡ÒáÃзӷҧ¤³ÔµÈÒʵÃìáÅÐÅͨԡʶҹзÕèà»ç¹ ä»ä´é¢Í§ flag ¨ÐÁÕÊͧʶҹР¤×Í ¶Ù¡ ૵·ÓãËéÁÕ¤èÒà»ç¹
1ËÃ×Ͷ١ÃÕ૵ãËéÁÕ¤èÒà»ç¹ 0 á¿Å硵ÑÇ·´ (carry flag) ¨ÐáÊ´§ Åѡɳк͡¡Ò÷´ËÃ×Í
¡ÒâÍÂ×Á¢Í§ºÔµÊÙ§ÊØ´¢Í§¼ÅÅѾ¸ì , á¿Å硾ÒÃÔµÕé (parity flag) ¨ÐãªéáÊ´§¨Ó¹Ç¹¤ÙèËÃ×ͤÕè¢Í§µÑÇàÅ¢·Õèà»ç¹
1 ã¹ÃÕ¨ÔÊàµÍÃì ¶éÒà»ç¹¤Ùè flag ¹Õé¨Ð¶Ù¡à«µà»ç¹ 1, á¿Åç¡·´ªèÇ (auxiliary
carry flag) ¨Ðãªé§Ò¹áºº "decimal adjust", á¿Åç¡ÈÙ¹Âì (zero flag) ¨Ðà»ç¹
1 àÁ×èͼÅÅѾ¸ìà»ç¹ÈÙ¹Âì , á¿Åç¡ à¤Ã×èͧËÁÒ (sign flag) ¨Ðä´éÃѺ ¡ÒÃ૵àÁ×èͼÅÅѾ¸ìà»ç¹àŢź
, âÍàÇÍÃìâ¿ÅÇìá¿Åç¡ (OF) ãªéà¾×èÍáÊ´§ÇèÒÁÕ¤ÇÒÁ¼Ô´¾ÅÒ´ 㹡Òäӹdz à¹×èͧ¨Ò¡¡ÒÃãÊèà¤Ã×èͧËÁÒ¢ͧ¼ÅÅѾ¸ì
àªè¹ ¶éÒÁÕ¡ÒúǡàÅ¢ +127 ¡Ñº +2 ¼ÅÅѾ¸ì·Õèä´é¶éÒ¤Ô´¤Ó¹Ç³áººÁÕà¤Ã×èͧËÁÒ¨Ðä´é¤ÓµÍºà»ç¹
-127 «Öè§¼Ô´¤ÇÒÁËÁÒ ÅÑ¡¡É³Ð ¹Õé¨Ðà¡Ô´¡Òà âÍàÇÍÃìâ¿ÅÇìãËéá¿Åç¡
à»ç¹ 1
á¿Å硤Ǻ¤ØÁ·ÔÈ·Ò§¢Í§
8086 (direction flag)¨Ð¡Ó˹´·ÔÈ·Ò§¢Í§¡ÅØèÁ¤ÓÊÑè§à¡ÕèÂǡѺʵÃÔ§ ÇèÒ¨ÐÁÕ·ÔÈ·Ò§
¡Ò÷ӧҹ¨Ò¡áÍ´à´ÃÊÁҡ仹éÍ ËÃ×ͨҡáÍ´à´ÃʹéÍÂä»ÁÒ¡¹Ñè¹àͧ , á¿Åç¡ÍÔ¹àµÍÃìÃѾ·ì
(IE) ¶éÒä´é ÃѺ¡ÒÃ૵à»ç¹ 1
áÊ´§ÇèÒ¨ÐÂÍÁÃѺÍÔ¹àµÍÃìÃѾ·ì¨Ò¡ÀÒ¹͡
áÅÐ Tap flag (TF) ¨Ð·ÓãËé 8086 ·Ó§Ò¹ Ẻ·ÕÅФÓÊÑè§à¾×èÍ¡ÒÃá¡éä¢â»Ãá¡ÃÁ
à«¡àÁ¹µìÃÕ¨ÔÊàµÍÃì
ÁÕ 4 µÑÇ
¤×Í CS(code segment) , DS(data segment) , SS(stack segment), ES(extra segment)
«Öè§ ¨Ð¹ÓÁÒãªéã¹ËÅÑ¡¡ÒÃẺºÅçÍ¡áÍ´à´Ãʢͧ 8086 ˹èÇ ¤ÇÒÁ¨Óä´éÃѺ¡ÒèѴÊÃÃà»ç¹ÊèǹãËè
æ ¤×Í code (ËÃ×ͪش¤ÓÊÑè§) ,¢éÍÁÙÅ (µÑÇàÅ¢ ËÃ×͵ÑÇÍÑ¡ÉÃ) áÅÐÊᵡÊÓËÃѺ¡ÒÃà¡çº¤èÒáÍ´à´ÃÊ¡ÅѺ¤×¹¨Ò¡â»Ãá¡ÃÁÂèÍÂà¾×èÍ·Õè¨Ð
»éͧ¡Ñ¹¡ÒÃÊѺʹ ¨Ö§¡Ó˹´¤èÒãËé ᡡѹä´é
8086 ¨ÐÁͧÅѡɳТͧ˹èǤÇÒÁ¨Ó
â´Âáºè§Ë¹èǤÇÒÁ¨Óà»ç¹¡ÅØèÁ æ ã¹ÃٻẺ¢Í§ à«¡àÁ¹µì ã¹Ë¹Öè§ à«¡àÁ¹µì¨ÐªÕéä´é¶Ö§
64 ¡ÔâÅ亵ì à«¡àÁ¹µì·Ñé§ÊÕèµÑÇ ¨ÐáÊ´§áÍ´à´ÃÊàÃÔèÁ µé¹¢Í§Ë¹èǤÇÒÁ¨Ó·Õè¨ÐµÔ´µèÍ´éÇÂ
´Ñ§ÃÙ» CS ¨ÐºÃèؤèÒáÊ´§áÍ´à´ÃÊàÃÔèÁµé¹¢Í§â»Ãá¡ÃÁ DS ¨Ðà¡çº¤èÒ data segment
¢³Ð¹Ñé¹ SS ¨Ð à¡çº¤èÒÊᵡૡàÁ¹µì ¢³Ð¹Ñé¹áÅÐ ES ¨Ð¡Ó˹´ segment ¢Í§¢éÍÁÙÅÃÇÁ·ÕèàÃÕ¡ÇèÒ
global data segment

à«¡àÁ¹µì¨ÐáÊ´§µÓá¹è§àËÁ×͹¡Ñº
paragraph â´Â¨ÐàÅ×è͹价ҧ«éÒ 4 ºÔµ à¾×èÍ·Õè¨Ð¡Ó˹´ ËÃ×ÍÍéÒ§ áÍ´à´ÃÊãËé¤Ãº
20 àÊé¹ â´Â¨Ø´àÃÔèÁµé¹¢Í§ paragraph ¨ÐµéͧÁÕ 4 ºÔµ ËÅÑ§ÊØ´à»ç¹ 0 àªè¹ à»ç¹
00000H, 00010H , 00020H à»ç¹µé¹
¨Ò¡ÃÙ» ¤èҢͧ
SS ¨ÐªÕéµÓá˹觢ͧૡàÁ¹µì¤èÒ D89F0 ÊѧࡵàËç¹ÇèÒÊèǹ¾×é¹·Õè ¢Í§Ë¹èÇ ¤ÇÒÁ¨ÓÍÒ¨¨Ð
ÊÅѺËÃ×ÍãªéºÃÔàdzà´ÕÂǡѹ¢Í§Ë¹èǤÇÒÁ¨Óä´é

à¾×èÍ·Õè¨Ð·Ó¡ÒõԴµè͡Ѻ¢éÍÁÙÅ˹Öè§äºµìËÃ×Í˹Öè§àÇÔÃì´¹Ñé¹
8086 ä´éàµÃÕÂÁ¤èÒÍͿ૵ à¾×èÍãªéÍéÒ§ µÓ˹觵Ñé§áµè ¨Ø´àÃÔèÁµé¹¢Í§à«¡àÁ¹µìáÍ´à´ÃÊ
µÓá˹è§ã´ æ ¨Ðä´éÁÒ¨Ò¡¡Òúǡ¤èÒ à«¡àÁ¹µì ÃÕ¨ÔÊàµÍÃì¡Ñº¤èҢͧÍͿ૵ 16 ºÔµ
àªè¹¶éÒà«¡àÁ¹µìÁÕ¤èÒ
E89F ¨ÐãËéÍͿ૵ÁÕ¤èÒ 0003H ¨Ð·ÓãËé¡ÒÃÍéÒ§áÍ´à´ÃÊä»·Õè 89F3
¡ÒèÐãªéà«¡àÁ¹µÚÃÕ¨ÔÊàµÍÃìáÅФèÒÍͿ૵µÑÇã´¹Ñ鹨ТÖé¹ÍÂÙè¡Ñºª¹Ô´¢Í§¤ÓÊÑè§´éÇÂ
´Ñ§áÊ´§ã¹µÒÃÒ§
ª¹Ô´¢Í§¡ÒÃÍéҧ˹èǤÇÒÁ¨Ó
|
¤èÒà«¡àÁ¹µìâ´Â»¡µÔ
|
¤èÒà«¡àÁ¹µì·ÕèàÅ×Í¡ä´é
|
¤èÒÍͿ૵
|
¡ÒÃ࿵ªì¤ÓÊÑè§
|
CS
|
-
|
IP
|
¡Ò÷ÓÊᵡ
|
SS
|
-
|
SP
|
¡Ó˹´µÑÇá»Ã
|
DS
|
CS,ES,SS
|
¤èÒáÍ´à´ÃÊ·Õè¡Ó˹´
|
ʵÔçµé¹·Ò§
|
DS
|
CS,ES,SS
|
SI
|
ʵÃÔ§»ÅÒ·ҧ
|
ES
|
-
|
DI
|
àºÊÃÕ¨ÔÊàµÍÃì
BP
|
SS
|
CS,ES,SS
|
¤èÒáÍ´à´ÃÊ·Õè¡Ó˹´
|
¡ÒèѴ¢Ò¢Í§
8086
8086 à»ç¹äÁâ¤Ãâ»Ãà«Êà«ÍÃì·ÕèÁÕ¢Òà¾Õ§
40 ¢Òà·èÒ¹Ñé¹ â´Âáºè§à»ç¹¢ÒáÍ´à´ÃÊ·Õè multiplex ÃèÇÁ¡Ñº¢Ò¢éÍÁÙÅ 16 ¢Ò ¤×Í
AD0 - AD15áÅÐÂѧÁÕáÍ´à´ÃÊà¾ÔèÁ¢Öé¹ÁÒ ÍÕ¡ 4 ¢Ò ¤×Í
A16 - A19 «Öè§ multiplex ¡Ñº S3 - S6
¹Í¡¨Ò¡¹Õé¨Ðà»ç¹¢Ò ·Õèà»ç¹ ÊÑÒ³¤Çº¤ØÁÍ×è¹ æ ¡ÒèѴ¢Ò·Ñé§ËÁ´ áÊ´§´Ñ§ÃÙ»

à¹×èͧ¨Ò¡
8086 ÁÕ ºÑÊ¢¹Ò´ 16 ºÔµ áµèÂѧ¤§µÔ´µè͡Ѻ¢éÍÁÙÅã¹ÅѡɳÐà»ç¹äºµì ´Ñ§¹Ñé¹ã¹¢éÍÁÙÅ
16 ºÔµ ¨Ö§áºè§à»ç¹äºµìÊÙ§áÅÐ亵ìµèÓ â¤Ã§ÊÃéÒ§¡ÒÃàª×èÍÁµè͡Ѻ˹èǤÇÒÁ¨Ó¨Ö§á¡´éÇÂ
/BHE ËÃ×ÍÊÑÒ³àÅ×͡亵ìÊÙ§
¢Ò
|
˹éÒ·Õè
|
ª¹Ô´
|
AD0
- AD15< |
ºÑÊáÍ´à´ÃÊáÅТéÍÁÙÅ |
2 ·ÔȷҧẺÅͨԡÊÒÁʶҹР|
A16/S3
- A17/S4/FONT> |
áÍ´à´ÃÊ/µÑǺ͡ૡàÁ¹µì |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
A18/S5 |
áÍ´à´ÃÊ/µÑÇÍÔ¹àµÍÃìÃѾ·ìÍÕ¹ÒàºÔÅ |
àÍÒµì¾Ø·áººÅͨԡÊÒÁʶҹР|
A19/S6 |
áÍ´à´ÃÊ/ºÔµáÊ´§Ê¶Ò¹Ð |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
/BHE/S7 |
ºÔµºÍ¡¢éÍÁÙÅ亵캹/ºÔµáÊ´§Ê¶Ò¹Ð |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
RD |
ºÔµ¤Çº¤ØÁ¡ÒÃÍèÒ¹ |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
READY |
ºÔµ¤Çº¤ØÁ¨Ñ§ËÇСÒÃ
Wait |
ÍÔ¹¾Øµ |
/TEST |
ºÔµºÍ¡¡ÒÃÃͤÍÂÊÓËÃѺ¡Ò÷´Êͺ |
ÍÔ¹¾Øµ |
INTR |
ÍÔ¹àµÍÃìÃѾ·ì |
ÍÔ¹¾Øµ |
NMI |
¹Í¹ÁÒÊà¤àºÔÅÍÔ¹àµÍÃìÃѾ·ì |
ÍÔ¹¾Øµ |
RESET |
ÃÕ૵ |
ÍÔ¹¾Øµ |
CLK |
ÊÑÒ³¹ÒÌÔ¡Ò |
ÍÔ¹¾Øµ |
MN/MX |
¶éÒà»ç¹
0 ËÁÒ¶֧Ãкºà»ç¹ª¹Ô´
maximum
system |
|
S0S1S2 |
ºÍ¡Ê¶Ò¹Ð
machine cycle |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
/RQ/GTO,/RQ/GTI |
ºÔµ¤Çº¤ØÁÅӴѺÊӤѢͧºÑÊ |
Êͧ·ÔÈ·Ò§ |
GSO,QSI |
ºÔµáÊ´§¤ÔǢͧ¤ÓÊÑè§ |
àÍÒµì¾Øµ |
/LOCK |
ºÑʤǺ¤ØÁ
hold |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
M/IO |
àÅ×͡˹èǤÇÒÁ¨ÓËÃ×ÍÍÔ¹¾ØµàÍÒµì¾Øµ |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
/WR |
à¢Õ¹ |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
/ALE |
áÅ·ªìáÍ´à´ÃÊ |
àÍÒµì¾Øµ |
DT/R |
ÃѺÊè§¢éÍÁÙÅ |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
/DEN |
¡ÒÃÍÕ¹ÒàºÔéÅ¢éÍÁÙÅ |
àÍÒµì¾ØµáººÅͨԡÊÒÁʶҹР|
/INTA |
µÍºÃѺÍÔ¹àµÍÃìÃѾ·ì |
àÍÒµì¾Øµ |
HOLD |
ºÍ¡¡ÒÃ
hold |
ÍÔ¹¾Øµ |
HOLDA |
µÍºÃѺ¡ÒÃ
hold |
àÍÒµì¾Øµ |
Vcc
GND |
áËÅ觨èÒÂä¿
ground |
|
ÍÔ¹àµÍÃìÃѾ·ì¢Í§
8086
ÍÔ¹àµÍÃìÃѾ·ì¢Í§
8086 ÊÒÁÒö¨ÐÁ¨Ò¡ËÅÒ æ áËÅè§ä´éÍÔ¹àµÍÃìÃѾ·ìÍÒ¨¨Ð ÁÒ¨Ò¡ ÍØ»¡Ã³ì ÀÒ¹͡
ÁÒâ´Â·Ò§ software ËÃ×ÍÁÒ¨Ò¡µÑÇ 8086 àͧ¡çä´é ÍÔ¹àµÍÃìÃѾ·ì¨Ò¡ÍØ»¡Ã³ìÀÒ¹͡
à¢éÒÁÒ·Ò§¢Ò 2 ¢Ò ¤×Í INTR(interrupt
request)
áÅÐ NMI(non-maskable interrupt) â´Â·Õè INTR ¨Ð¶Ù¡¡Ó˹´ãËé·Ó§Ò¹ä´éâ´Â¤ÓÊÑè§
IE(interrupt enable flag) ·Õèà»ç¹Êèǹ˹Ö觢ͧ 8086 flag ¶éÒ flag IE ¶Ù¡à«µ¨Ð
·ÓãËé 8086 ÊÒÁÒö¨ÐÃѺÍÔ¹àµÍÃìÃѾ·ì¨Ò¡ INTR ä´é áµè¶éÒ
IF ¶Ù¡à¤ÅÕÂÃì
8086 ¨Ð äÁèÃѺÍÔ¹àµÍÃìÃѾ·ì¨Ò¡ INTR Êèǹ NMI ¨Ðà»ç¹ÍÔ¹àµÍÃìÃѾ·ì·ÕèäÁèÊÒÁÒö¨ÐËÂØ´ä´é
ÁÑ¡¨Ð ãªé㹡óշÕèà¡Ô´à˵ءÒóìÊÓ¤Ñàªè¹à¡Ô´¤ÇÒÁ¼Ô´¾ÅÒ´¢Í§¾ÒÃÔµÕé¢Í§ ˹èǤÇÒÁ¨Ó
(memory parity) ËÃ×Íà¡Ô´ä¿µ¡ à»ç¹µé¹
INTO (interrupt
overflow) ¤×Í ÍÔ¹àµÍÃìÃѾ·ì¢Í§ 8086 ·Õèà¡Ô´¨Ò¡¢éͼԴ¾ÅÒ´¢Í§¡ÒÃËÒÃáÅÐ ¡Ò÷ӧҹ·ÕÅТÑé¹
¢éͼԴ¾ÅÒ´¨Ò¡¡ÒÃËÒà (divide error) à¡Ô´¢Öé¹à¹×èͧ¨Ò¡¼Å¢Í§¡ÒÃËÒÃÍÒ¨¨ÐÁÕ¤èÒÁÒ¡¡ÇèÒà¹×éÍ·Õè·ÕèàµÃÕÂÁäÇéà»ç¹·Õèà¡çº
¼ÅÅѾ¸ì
ËÃ×ÍÍÒ¨¨Ðà¡Ô´¨Ò¡¡ÒÃËÒôéÇÂàÅ¢ 0 ËÃ×ÍÍÒ¨¨Ðà¡Ô´¡ÒÃËÒôéÇÂàÅ¢ 1 ËÃ×Í´éÇ àÅ¢ÁÒ¡
æ ÊèǹÅѡɳТͧ¡Ò÷ӧҹ·ÕÅТÑé¹ (single step) ¨Ðà»ç¹ÍÔ¹àµÍÃìÃѾ·ì ·Õèà¡Ô´à¹×èͧ¨Ò¡
execute ¤ÓÊÑè§·ÕÅФÓÊÑè§à˵ءÒóì¹Õéà¡Ô´¢Öé¹à¹×èͧ¨Ò¡ TF (trap flag) ã¹ÃÕ¨ÔÊàµÍÃìá¿Å硶١૵ãËéà»ç¹
1
àÁ×èÍà¡Ô´ÍÔ¹àµÍÃìÃѾ·ìàËÅèÒ¹Õé¢Öé¹ÁÒáÅéÇ¡ç¨Ðà¡Ô´à˵ءÒóì੾ÒÐÍÂèÒ§¢Öé¹¶éÒÁÕ¡ÒÃÍÔ¹àµÍÃìÃѾ·ì
¨Ò¡ÀÒ¹͡ ¤ÓÊÑè§ªØ´ÊØ´·éÒ¨ж١ execute ¨¹àÊÃç¨ÊÔ鹡è͹ (¡àÇé¹ ¶éÒà»ç¹¤ÓÊÑè§
MOV ËÃ×Í POP ¨ÐÁÕ¡Òà execute ¤ÓÊÑè§µèÍ仡è͹
áÅéǨ֧ËÂØ´)
ÍÔ¹àµÍÃìÃѾ·ì·Ø¡µÑǨзӡÒà à¡çº¤èÒ ¢Í§á¿Åç¡ÃÕ¨ÔÊàµÍÃìäÇéã¹Êᵡ àÊÃç¨áÅéÇ
8086 ¨Ð·Ó¡ÒÃÃÕ૵á¿Åç¡ IF áÅÐ TF ãËéà»ç¹ 0 ·Ñé§¹Õéà¾×èÍ»éͧ¡Ñ¹ INTR ÍÔ¹¾Øµ·Õèà¢éÒÁÒãËÁè
áÅлéͧ¡Ñ¹¡ÒÃà¡Ô´¡Ò÷ӧҹ·ÕÅТÑé¹ã¹¢³Ð·ÕèÍÂÙèã¹
â»Ãá¡ÃÁÍÔ¹àµÍÃìÃѾ·ì
à¹×èͧ¨Ò¡¡Ò÷Õèá¿Åç¡¶Ù¡à¡çº¤èÒäÇéËÅѧ¨Ò¡â»Ãá¡ÃÁÍÔ¹àµÍÃìÃѾ·ì ÊÔé¹ÊØ´áÅéǤèÒµèÒ§
æ ·Õèà¡çºäÇé¨Ð¶Ù¡´Ö§¡ÅѺÁÒãªé§Ò¹ä´é ¨Ò¡¹Ñé¹ 8086 ¨Ð·Ó¡ÒÃà¡çº¤èҢͧ CS áÅÐ
IP ŧº¹Êᵡà¾×èÍ·Õè¨Ðà¡çºµÓá˹è§
¢Í§áÍ´à´ÃÊ·ÕèÊè§¡ÅѺ
(return address) ã¹ÅѡɳÐà´ÕÂÇ ¡Ñº¤ÓÊÑè§ far CALL áÅÐã¹¢Ñé¹µÍ¹ÊØ´·éÒ CS
áÅÐ IP ¨Ð¶Ù¡ÍèÒ¹¨Ò¡ µÒÃÒ§¢Í§ interrupt vector (¢Ö鹡ѺËÁÒÂàÅ¢ÍÔ¹àµÍÃìÃѾ·ì)
µÒÃÒ§¢Í§ interrupt vector ¡ç¤×ͺÃÔÇೢͧ
à¹×éÍ·Õè¢Í§Ë¹èÇÂ
¤ÇÒÁ¨ÓàÃÔèÁµÑé§áµèáÍ´à´ÃÊ 0000 ¨Ó¹Ç¹ ˹Öè§¡ÔâÅ亵ì´Ñ§áÊ´§ã¹ÃÙ»

ÍÔ¹àµÍÃìÃѾ·ìáµèÅеÑǨЪÕéä»ÂѧµÓá˹觷Õèá¹è¹Í¹
áÅÐÊÒÁÒö·Õè¨Ð¡ÃÐâ´´ ä»¶Ö§·Õè¡Ó˹´ ä´éâ´ÂÍѵâ¹ÁÑµÔ àÁ×èÍà¡Ô´ÍÔ¹àµÍÃìÃѾ·ì¨Ò¡ÅѡɳТͧ
divide error ¨Ð·ÓãËé à¡Ô´ÍÔ¹àµÍÃìÃѾ·ì 0, single-step ¨Ðà»ç¹ÍÔ¹àµÍÃìÃѾ·ì
1,
ÍÔ¹àµÍÃìÃѾ·ìẺ
non- maskable à»ç¹áººÍÔ¹àµÍÃìÃѾ·ì 2 , bread-oint ¨Ðà¡Ô´ÍÔ¹àµÍÃìÃѾ·ì 3
, áÅСÒà à¡Ô´ over flow ¨Ðà»ç¹ÍÔ¹àµÍÃìÃѾ·ì 4 Êèǹ ÍÔ¹àµÍÃì ÃѾ·ì 5 ¶Ö§
31 àµÃÕÂÁäÇéÊÓËÃѺ ¼Ùéãªé¨Ð¡Ó˹´àÍÒàͧÀÒÂËÅѧ ÊèǹÍÔ¹àµÍÃìÃѾ·ì·ÕèàËÅ×ÍàÃÒÍÒ¨
¨Ð¤Çº¤ØÁâ´Âãªé ¤ÓÊÑè§ INTR ËÃ×Í INT ä´é
ÊÓËÃѺ INTR
¨ÐµÍºÃѺÊÑÒ³ÍÔ¹àµÍÃìÃѾ·ì¨Ò¡ÀÒ¹͡ áµèÊèǹ INT ¨ÐÃѺä´éâ´ÂµÑǤÓÊÑè§ ¹Ñè¹àͧ
8086 ÊÒÁÒö·Õè¨ÐÃѺÃÙ骹Դ¢Í§¡ÒÃÍÔ¹àµÍÃìÃѾ·ìä´éâ´Â¡Òà ¤Ù³´éÇ 4 ·Õè¤èҢͧ¤ÓÊÑè§
¼ÅÅѾ¸ì·Õèä´é¨ÐºÍ¡µÓá˹觷Õè¢Í§µÒÃÒ§
ÍÔ¹àµÍÃìÃѾ·ì
«Ö觤èҢͧµÒÃÒ§¨Ð¶Ù¡Ê觤èÒä»Âѧ CS áÅÐ IP ¤èÒµèÒ§ æã¹µÒÃÒ§ àÃҨеéͧà»ç¹¼Ùé
¡Ó˹´â´Â¡Ó˹´à»ç¹¤èҢͧૡàÁ¹µìáÅФèҢͧÍÍ¿ ૵ ·ÕèáÊ´§µÓá˹觢ͧ ÍÔ¹àµÍÃìÃѾ·ìÃÙ·Õ¹
¡µÑÇÍÂèÒ§àªè¹ ÍÔ¹àµÍÃìÃѾ·ì·ÕèáÍ´à´ÃÊ 0 ¶Ö§ 3 àÃҨеéͧ¡Ó ˹´à»ç¹¤èҺ͡áÍ´à´ÃÊ
CS áÅÐ IP à¾×èͨЪÕéÃÙ·Õ¹¢Í§ divide error à»ç¹µé¹
ÍÔ¹àµÍÃìÃѾ·ìÃÙ·Õ¹
¨ÐµéͧàÃÔèÁµé¹´éÇ¡ÒÃà¡çº¤èҢͧÃÕ¨ÔÊàµÍÃìµèÒ§ æäÇé¡è͹ à¾ÃÒÐ àÃÒäÁè·ÃÒºÇèÒ
¨Ðà¡Ô´ÍÔ¹àµÍÃìÃѾ·ìàÁ×èͶ֧¨Ø´ã´ áÅÐàÃÒäÁèµéͧ¡Ò÷ÓãËé¤èÒ ÃÕ¨ÔÊàµÍÃì µèÒ§
æ àÊÕÂä»áÅÐàÃÒµéͧ »Ô´·éÒÂÃÙ·Õ¹´éǤÓÊÑè§ IRET ¤ÓÊÑè§¹Õé¨Ð·Ó§Ò¹àËÁ×͹ ¤ÓÊÑè§
RET ¸ÃÃÁ´Òáµè¨Ð·Ó¡ÒÃÍèÒ¹¤èҢͧá¿Åç¡ÍÍ¡ÁÒ ¨Ò¡Êᵡ´éÇÂ
¤ÓÊÑè§ INT
ÊÒÁÒöµÃǨÊͺÇèÒ¨Ðä»·ÕèµÓá˹è§ã´ä´éâ´Âµéͧ¡Ó˹´´éÇÂËÁÒÂàÅ¢ áÊ´§ÍÔ¹ àµÍÃìÃѾ·ì
·ÓãËé¡ÒÃàÃÕ¡ãªé§Ò¹à»ç¹ä»ä´éâ´Â§èÒÂáÅÐÊдǡ
¤ÓÊÑè§ INTO
à»ç¹ÍÔ¹àµÍÃìÃѾ·ì·ÕèµÃǨÊͺà§×è͹ä¢á¿Åç¡ over flow ¹Ñ蹤×ͨÐà¡Ô´¡ÒÃÍÔ¹àµÍÃìÃѾ·ì
ËÁÒÂàÅ¢ 4 àÁ×èÍá¿Åç¡ OF à»ç¹ 1 áµè¶éÒá¿Å硹Õéà»ç¹ 0 ¨ÐäÁèÁÕ ÍÔ¹àµÍÃìÃѾ·ìáµè¨Ð
execute ¤ÓÊÑè§ ¶Ñ´ä»
ÁÕ¤ÓÊÑè§¾ÔàÈÉ
2 ¤ÓÊÑè§·ÕèªèÇÂ㹡ÒõÃǨÊͺâ»Ãá¡ÃÁ ¹Ñ蹤×Í ¤ÓÊÑè§ INT 3 àÃҨзӡÒÃá·¹ ¤ÓÊÑè§¹Õéä»ÂѧµÓá˹觤ÓÊÑè§·ÕèºÍ¡¨Ø´ËÂØ´
àÁ×èÍÁÕ¡Òà execute ÁÒ¶Ö§¤ÓÊÑ觴ѧ¡ÅèÒÇÍÔ¹àµÍÃìÃѾ·ì ÃÙ·Õ¹ÍÒ¨¨Ð·Ó¡ÒÃà¡çº¤èÒÃÕ¨ÔÊàµÍÃìµèÒ§
æ ŧã¹ÊᵡËÃ×ÍäÇéã¹µÓá˹è§Ë¹èǤÇÒÁ¨Ó·Õè ¡Ó˹´ä´é
ÍÕ¡ÇÔ¸Õ˹Öè§ã¹¡ÒõÃǨÊͺ
(debug) â»Ãá¡ÃÁ ÍÒ¨·Óä´éâ´Â¡ÒÃ૵á¿Åç¡á·Ãç»
(trap flag) äÇé àÁ×èÍá¿Åç¡á·Ãç»à»ç¹ 1 áÅéÇ 8086 ¨Ð¨Ñ´¡Ò÷ÓãËéà¡Ô´
INT 1 (single-setp) ¢Öé¹µèÍ·Ø¡¤ÓÊÑè§Â¡àÇé¹
¤ÓÊÑè§ MOV ËÃ×Í POP ·ÕèµÔ´µè͡ѺÃÕ¨ÔÊàµÍÃì à«¡àÁ¹µì
˹éÒáá
|