Luaän vaên toát nghieäp
Phaàn 1
trang1
GIÔÙI THIEÄU CHUNG
CHÖÔNG DAÃN NHAÄP
___ oOo ___
Ngaøy nay, treân theá giôùi khoa hoïc kyõ thuaät phaùt trieån nhanh choùng, ñaëc bieät laø
ngaønh ñieän_ñieän töû. Nhöõng tieán boä naøy ngaøy caøng ñöôïc öùng duïng roäng raõi trong
coâng nghieäp cuõng nhö trong ñôøi soáng sinh hoaït haèng ngaøy cuûa con ngöôøi. Heä thoáng
vi xöû lyù hay coøn goïi laø maùy tính ñieän töû laø moät trong nhöõng öùng duïng ñoù, noù laø thieát
bò xöû lyù thoâng tin, ñieàu khieån caùc thieát bò beân ngoaøi hay caùc thieát bò coâng nghieäp
moät caùch töï ñoäng.
Tröôùc nhu caàu thöïc teá, kit vi xöû lyù laø moät coâng cuï daïy vaø hoïc khoâng nhöõng
giuùp cho sinh vieân nghieân cöùu hoïc taäp, maø coøn coù theå öùng duïng moâ phoûng hoaït
ñoäng cuûa moät maùy tính ñieän töû, ñöa nhöõng tieán boä cuûa khoa hoïc kyõ thuaät daãn vaøo
ñôøi soáng hieän ñaïi. Trong khaû naêng vaø kieán thöùc ñaõ hoïc, toâi quyeát taâm thöïc hieän ñeà
taøi: “THIEÁT KEÁ – THI COÂNG KIT VI XÖÛ LYÙ 8086” ñeå ñaùp öùng nhu caàu treân.
Vi xöû lyù laø moät heä thoáng soá döïa treân cô sôû linh kieän chuû yeáu laø boä vi xöû lyù
(CPU). Tuøy thuoäc vaøo caáu truùc cuûa boä vi xöû lyù rieâng bieät vaø phaàn ñieàu khieån maø ta
coù theå bao goàm nhieàu loaïi vi maïch. Döôùi söï ñieàu khieån baèng chöông trình moät boä
vi xöû lyù thöïc hieän caùc pheùp tính soá hoïc vaø logic, ñoàng thôøi taïo ra nhöõng tín hieäu
ñieàu khieån cho boä nhôù vaø thieát bò vaøo ra. Nhöõng meänh leänh naøy goïi laø chöông trình
nguoàn vaø ñöôïc chöùa trong boä nhôù chæ ñoïc (ROM), khi maát ñieän döõ lieäu trong boä
nhôù naøy khoâng bò maát, khi Reset maùy chöông trình naøy seõ thi haønh tröôùc tieân khôûi
taïo cho maùy laøm vieäc. Khi laøm vieäc CPU ñoïc nhöõng leänh ñoù ra roài thöïc hieän chuùng.
Do ñoù ta coù theå noùi boä vi xöû lyù laø caáu truùc phaàn cöùng ñöôïc xöû lyù baèng phaàn meàm.
Ñeà taøi naøy khoâng chæ giuùp cho sinh vieân hoøan thaønh luaän vaên toát nghieäp maø
coøn hình thaønh trong moãi sinh vieân nhöõng kinh nghieäm, saùng taïo vaø naêng ñoäng. Sau
naøy ñeà taøi seõ keát hôïp vôùi caùc ngaønh chuyeân moân khaùc ñeå phaùt trieån moâ hình naøy
ñöôïc hoaøn thieän hôn.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang2
CHÖÔNG CÔ SÔÛ LYÙ LUAÄN
___ oOo ___
I.
XAÂY DÖÏNG ÑEÀ CÖÔNG LUAÄN VAÊN:
1). Xaùc ñònh nhieäm vuï nghieân cöùu:
Vieäc choïn ñeà taøi xuaát phaùt töø hai lyù do:
- Khaùch quan: hieän nay caùc neàn coâng nghieäp coù nhu caàu hieän ñaïi hoùa caùc
thieát bò theo xu höôùng caûi tieán hoùa caùc thieát bò baèng cô khí sang thieát bò
ñieàu khieån töï ñoäng öùng duïng kyõ thuaät ñieän töû.
- Chuû quan: do nhu caàu hoïc taäp, nghieân cöùu, reøn luyeän kyõ naêng thöïc haønh,
öùng duïng voán kieán thöùc khoa hoïc kyõ thuaät tieân tieán tröïc tieáp vaøo lónh vöïc
saûn xuaát.
Nhieäm vuï nghieân cöùu nhaèm ñaït ñöôïc caùc muïc ñích chuû yeáu:
+
Muïc ñích tröôùc maét: thoûa maõn veà cô baûn caùc yeâu caàu ñeà ra theo phöông
chaâm “Hoïc ñi ñoâi vôùi haønh”.
+
Muïc ñích sau cuøng: Tích luõy kinh nghieäm, reøn luyeän vaø naâng cao naêng
löïc, taïo baûn lónh ñeå saün saøng tham gia lao ñoäng saûn xuaát, hoøa nhaäp vaøo böôùc tieán
cuûa theá heä.
2). Phaân tích taøi lieäu lieân heä:
Trong thôøi gian nghieân cöùu ñeà taøi, ngöôøi nghieân cöùu ñaõ thoáng nhaát tham khaûo
moät soá taøi lieäu coù lieân quan trong khoaûng thôøi gian cho pheùp.
- Phöông phaùp luaän nghieân cöùu khoa hoïc: tìm hieåu veà caáu truùc hình thöùc cuûa
moät ñeà taøi nghieân cöùu khoa hoïc vaø phöông phaùp tö duy ñeå giaûi quyeát vaán
ñeà.
- Kyõ thuaät vi xöû lyù Traàn Vaên Troïng: Taøi lieäu cung caáp veà caáu truùc cuûa vi xöû
lyù 8086.
- Sô ñoà chaân linh kieän baùn daãn Döông Minh Trí: cung caáp sô ñoà chaân vaø
baûng traïng thaùi hoïat ñoäng cuûa caùc IC vaø caùc linh kieän baùn daãn.
- Caáu truùc maùy tính: Leâ Anh Vieät: Taøi lieäu cung caáp kieán thöùc cô baûn veà caáu
truùc maùy tính, toå chöùc CPU, hôïp ngöõ vaø caùch laäp trình.
- The 8086/8088 Family Design Programing and Interfacing – John
uffnbeck: taøi lieäu cung caáp nhöõng kyõ thuaät keát noái vi xöû lyù vaø nhöõng phaàn
meàm öùng duïng.
- Kyõ thuaät vi xöû lyù – Vaên Theá Minh: taøi lieäu cung caáp kyõ thuaät giao tieáp vôùi
caùc thieát bò ngoaïi vi.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang3
II.
KEÁ HOAÏCH NGHIEÂN CÖÙU:
1). Daøn yù nghieân cöùu:
Phaàn I: Giôùi thieäu chung.
Phaàn II: Thieát keá phaàn cöùng Kit 8086.
Phaàn III: Xaây döïng phaàn meàm heä thoáng.
Phaàn IV: Thi coâng Kit 8086.
2). Ñoái töôïng nghieân cöùu:
Vi xöû lyù laø trung taâm ñieàu khieån caùc ñoái töôïng, ñieàu khieån heä thoáng nhö maùy
töï ñoäng, daây chuyeàn saûn xuaát… Ñeå heä thoáng xöû lyù thi haønh caùc chöùc naêng ñieàu
khieån nhö mong muoán, chuùng ta phaûi laäp trình baèng ngoân ngöõ töông öùng vôùi heä vi
xöû lyù. Vì theá ñoái töôïng nghieân cöùu chính laø thieát keá khoái ñieàu khieån töông quan
giöõa phaàn cöùng vaø phaàn meàm ñeå vaän haønh ñuùng chöùc naêng hoïat ñoäng thöïc söï cuûa
maùy.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang4
CAÁU TRUÙC BOÄ VI XÖÛ LYÙ 8086
Chöông I
___ oOo ___
I.
CAÁU TAÏO:
Beân trong goàm hai khoái chính:
Khoái thöïc hieän EU (Execution Unit)
Khoái giap tieáp bus (Bus Interface Unit)
Bus ñòa chæ
Bus döõ lieäu
Ñieàu khieån bus vaø
taïo ñòa chæ
Caùc bus heä
thoáng
654321
Haøng ñôïi
leänh
AHALBHBL
CHCLDHDL
BPDISISP
CSESSSDSIP
Caùc thanh
ghi ñoaïn
Bus döõ lieäu noäi
Arithmetic logic
unit (ALU)
Caùc côø
Excution Unit
(EU)
Bus Interface Unit
(BIU)
Hình 1.1: Sô ñoà khoái 8086
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang5
Boä vi xöû lyù thöïc hieän caùc leänh theo caùc böôùc sau:
Laáy leänh töø boä nhôù.
Ñoïc toaùn haïng (neáu leänh yeâu caàu).
Thöïc hieän leänh.
Ghi keát quaû.
1). Khoái thöïc hieän:
Nhieäm vuï cuûa khoái thöïc hieän leänh laø thöïc hieän caùc leänh cuûa chöông trình. Noù
goàm coù khoái soá hoïc – logic (ALU) cho pheùp thöïc hieän caùc pheùp tính soá hoïc (+ , - , *
, /) vaø caùc pheùp logic (AND, OR, NOT…). Trong khoái thöïc hieän coøn coù moät soá oâ nhôù
goïi laø thanh ghi duøng ñeå chöùa döõ lieäu cho caùc pheùp tính. Moãi thanh ghi gioáng nhö
moät oâ nhôù ngoaïi tröø chuùng ñöôïc ñaët teân thay vì duøng soá ñeå chæ ñòa chæ. EU
(Execution Unit) coù caùc thanh ghi coâng duïng chung chia thaønh hai nhoùm: nhoùm
thanh ghi döõ lieäu vaø nhoùm thanh ghi chæ soá.
Caùc thanh ghi döõ lieäu (Data Register):
AHALBHBLCHCLDHDL AX (Accumulator)
BX (Base)
CX (Count)
DX (Data)
Caùc thanh ghi chæ soá vaø con troû (Index & Pointer Register):
SPBPSIDI
Con troû Stack (Stack Pointer)
Con troû neàn (Base Pointer)
Chæ soá nguoàn (Source Index)
Chæ soá ñích (Destnation Index)
Caùc thanh ghi ñoaïn (Segment Register):
CSDSSSES
Ñoaïn maõ (Code Segment)
Ñoaïn döõ lieäu (Data Segment)
Ñoaïn Stack (Stack Segment)
Ñoaïn theâm (Extra Segment)
Caùc thanh ghi traïng thaùi vaø ñieàu khieån (Status & Control Register):
Caùc thanh ghi döõ lieäu:
IPFlag Con troû leänh (Intruction Pointer)
Côø
Coù boán thanh ghi döõ lieäu kyù hieäu laàn löôït laø: AX, BX, CX, DX, ñöôïc ngöôøi
laäp trình söû duïng cho caùc thao taùc vôùi döõ lieäu. Maëc duø vi xöû lyù coù theå thao taùc vôùi
döõ lieäu trong boä nhôù, nhöng moät leänh nhö vaäy seõ ñöôïc thöïc hieän nhanh hôn trong
thanh ghi (caàn ít chu kyø ñoàng hoà hôn). Ñoù cuõng laø nguyeân nhaân taïi sao caùc boä vi xöû
lyù hieän ñaïi coù xu höôùng nhieàu thanh ghi.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang6
Caùc byte cao vaø byte thaáp trong thanh ghi ñöôïc truy caäp ñoäc laäp: Byte cao cuûa
thanh ghi AX ñöôïc goïi laø AH vaø byte thaáp ñöôïc goïi laø AL. Töông töï nhö vaäy cho
caùc byte cao vaø byte thaáp cuûa caùc thanh ghi BX CX DX laàn löôït laø BH & BL CH &
CL, DH & DL. Nhôø ñieàu naøy maø ta coù nhieàu thanh ghi hôn khi laøm vieäc vôùi caùc soá
lieäu coù kích thöôùc byte daøi. Trong ña soá leänh caùc thanh ghi döõ lieäu ñöôïc choïn tuøy yù
nhöng caùc thanh ghi naøy laïi coù chöùc naêng rieâng coá ñònh trong moät soá ít leänh.
Thanh ghi tích luõy AX (Accumulator):
Laø thanh ghi ñöôïc söû duïng nhieàu nhaát trong caùc leänh soá hoïc – logic vaø truyeàn
döõ lieäu bôûi vì vieäc söû duïng thanh ghi naøy taïo ra maõ maùy ngaén nhaát.
Trong caùc thao taùc nhaân hoaëc chia moät trong caùc soá haïn tham gia phaûi chöùa
trong AH hoaëc AL, caùc thao taùc vaøo/ra cuõng söû duïng thanh ghi AH hoaëc AL.
Thanh ghi cô sôû BX (Base):
Thanh ghi BX ñöôïc duøng cho tính toaùn ñòa chæ trong phöông phaùp ñònh ñòa chæ
giaùn tieáp.
Thanh ghi ñeám CX (Count):
Vieäc thöïc hieän caùc chöông trình laäp ñöôïc thöïc hieän deã daøng nhôø thanh ghi CX,
trong ñoù CX ñoùng vai troø laø boä ñeám voøng laäp. Moät thí duï khaùc cuûa vieäc söû duïng
thanh ghi CX ñoù laø leänh REP (Repeat) leänh naøy ñieàu khieån moät lôùp caùc leänh
chuyeân veà caùc thao taùc chuoãi. CL cuõng ñöôïc söû duïng laø moät bieán ñeám trong caùc
leänh dòch hay quay caùc bit.
Thanh ghi döõ lieäu DX (Data):
DX duøng ñeå ñònh ñòa chæ giaùn tieáp trong caùc thao taùc vaøo ra, noù cuõng coøn ñöôïc
söû duïng chöùa toaùn haïn, keát quaû trong pheùp nhaân vaø chia.
Thanh ghi con troû vaø chæ soá:
Caùc thanh ghi SP, BP, SI, DI thöôøng troû tôùi caùc oâ nhôù (töùc laø chöùc caùc ñòa chæ
offset cuûa caùc oâ nhôù ñoù). Khaùc vôùi thanh ghi ñoaïn, caùc thanh ghi con troû vaø ngaên
xeáp ñöôïc söû duïng trong caùc thao taùc soá hoïc vaø moät soá thao taùc khaùc nhau.
Thanh ghi con troû – ngaên xeáp SP (Stack Pointer):
Di chuyeån töø ñòa chæ cao ñeán ñòa chæ thaáp, duøng ñeå keát hôïp vôùi thanh ghi ñoaïn
Stack SS (Stack Segment) ñeå löu tröõ ñòa chæ trôû veà hoaëc döõ lieäu vaøo trong ngaên
xeáp.
Thanh ghi con troû cô sôû BP (Base Pointer):
Thanh ghi naøy ñöôïc duøng ñeå truy caäp döõ lieäu trong ngaên xeáp maø khoâng laøm
thay ñoåi SP. Tuy nhieân, khaùc vôùi SP thanh ghi BP cuõng coøn ñöôïc söû duïng ñeã truy
caäp döõ lieäu ôû caùc ñoaïn khaùc.
Thanh ghi chæ soá nguoàn SI (Source Index):
Thanh ghi SI ñöôïc söû duïng ñeå troû tôùi caùc oâ nhôù trong ñoaïn döõ lieäu ñöôïc ñònh
bôûi thanh ghi ñoaïn döõ lieäu DS (Data Segment), coù theå truy caäp deã daøng caùc oâ nhôù
lieân tieáp baèng caùch taêng SI.
Thanh ghi chæ soá ñích DI (Destination Index):
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang7
Thanh ghi DI coù chöùc naêng töông töï nhö thanh ghi SI vaø ñöôïc duøng keát hôïp
vôùi thanh ghi ñoaïn theâm ES (Extra Segment). Caû hai DI vaø SI thích hôïp trong caùc
thao taùc sao cheùp, di chuyeån hoaëc so saùnh caùc khoái döõ lieäu coù dung löôïng ñeán
64KB.
Thanh ghi con troû leänh IP (Intruction Pointer):
8086 khoâng thöïc hieän leänh tröïc tieáp trong boä nhôù maø leänh ñöôïc laáy ôû haøng ñôïi
leänh coù caáu taïo gioáng nhö moät thanh ghi dòch (FIFO: First In First Out: vaøo tröôùc ra
tröôùc) chöùa caùc maõ leänh cung caáp bôûi khoái BIU. Thanh ghi IP chæ ñeán leänh tieáp
theo chöa ñöôïc nhaäp vaøo haøng ñôïi leänh vaø ñöôïc duøng keát hôïp vôùi thanh ghi CS.
Thanh ghi IP ñöôïc caäp nhaät moãi khi coù moät leänh ñöôïc thöïc hieän xong, khaùc vôùi caùc
thanh ghi khaùc, IP khoâng bò taùc ñoäng tröïc tieáp bôûi caùc leänh.
Thanh ghi côø (Flag Register):
Thanh ghi côø cuûa 8086 coù ñoä daøi 16bit (2byte) byte thaáp chöùa caùc bit traïng
thaùi gioáng nhö trong 8085 phaûn aùnh traïng thaùi cuûa vi xöû lyù, byte cao chöùa 1bit traïng
thaùi ñoù laø bit 11 vaø 3 bit ñieàu khieån duøng ñeå ñieàu khieån hoaït ñoäng cuûa vi xöû lyù. Sau
ñaây laø caáu taïo cuûa thanh ghi côø trong 8086:
15
8 7
0
O D I T S Z
A
P
C
Thanh ghi côø cuûa 8086:
C: carry flag.
P: parity flag.
A: auxiliary flag.
Z: zero flag.
S: sign flag.
T: trap flag.
I: interrupt enable flag.
D: direction flag.
O: overflow flag.
+ Côø nhôù CF:
Côø nhôù CF ñöôïc thieát laäp khi coù soá nhôù töø bit MSB. Trong pheùp coäng hoaëc soá
thieáu trong pheùp tröø (MSB trong caùc leänh byte laø bit 7 vaø trong caùc leänh word laø bit
15) côø CF cuõng bò aûnh höôûng bôûi caùc leänh quay vaø dòch.
+ Côø chaún leû PF:
Sau caùc leänh soá hoïc hoaëc logic ñoái vôùi caùc leänh byte neáu soá löôïng soá ‘1’ trong
byte keát quaû laø chaún thì côø PF ñöôïc thieát laäp laø ‘1’ ngöôïc laïi laø ‘0’neáu laø leû, ñoái vôùi
caùc leänh word chæ xeùt caùc byte thaáp.
+ Côø nhôù phuï AF:
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang8
Côø nhôù phuï ñöôïc thieát laäp neáu coù nhôù (coäng) hoaëc coù thieáu (tröø) töø phaân nöûa
döôùi ñeán phaân nöûa treân cuûa toaùn haïn (ñoái vôùi leänh byte ñoù laø bit 3 vaø ñoái vôùi leänh
word laø bit 7) côø AF ñöôïc söû duïng trong caùc thao taùc vôùi soá BCD.
+ Côø zero ZF:
Côø zero ñöôïc thieát laäp khi keát quaû baèng 0.
+ Côø daáu SF:
Côø daáu laø ‘1’ khi bit MSB cuûa keát quaû baèng ‘1’ töùc laø soá aâm, ñoái vôùi leänh byte
MSB laø bit 7 vaø trong leänh word laø bit 15.
+ Côø baãy TF:
Taïo khaû naêng thöïc hieän chöông trình theo töøng böôùc, khi TF baèng ‘1’ 8086
phaùt sinh ngaét loaïi 1 (ngaét cöùng). Chöông trình DEBUG söû duïng khi thi haønh leänh T
(trace) ñeå chaïy töøng böôùc moät leänh. Ñaàu tieân DEBUG thieát laäp côø TF roài môùi
chuyeån ñieàu khieån cho leänh ñoù. Sau khi leänh ñöôïc thi haønh vi xöû lyù seõ phaùt sinh
moät ngaét do TF ñöôïc laäp DEBUG söû duïng chính phuïc vuï ngaét naøy ñeå laáy quyeàn
ñieàu khieån töø vi xöû lyù.
+ Côø ngaét IF:
Côø ngaét ñöôïc söû duïng ñeå ñieàu khieån caùc ngaét phaàn cöùng beân ngoaøi, neáu côø
naøy ñöôïc thieát laäp caùc ngaét phaàn cöùng coù theå ngaét 8086. Khi xoùa IF, caùc ngaét beân
ngoaøi khoâng coøn taùc duïng nöõa (bò che). Thöïc ra vaãn coøn moät ngaét cöùng khoâng che
ñöôïc NMI (Non Maskable Interrupt).
Tröôùc khi vi xöû lyù trao quyeàn ñieàu khieån cho moät phuïc ngaét noù xoùa caû IF vaø
TF, nhö vaäy phuïc ngaét ñoù seõ khoâng bò ngaét. Taát nhieân moät phuïc vuï ngaét coù theå ñoåi
côø ñeå cho pheùp ngaét khi noù ñang thi haønh.
+ Côø traøn OF:
Côø traøn laø ‘1’ khi coù hieän töôïng traøn vaø ngöôïc laïi noù baèng ‘0’. Hieän töôïng traøn
cho thaáy moät söï thaät laø phaïm vi bieåu dieãn caùc soá trong maùy tính laø coù giôùi haïn.
Phaïm vi bieåu dieãn caùc soá coù daáu trong moät word töø –32768 ñeán +32767 vaø
trong moät byte töø –126 ñeán +127.
Ñoái vôùi caùc soá khoâng daáu töø 0 ñeán 65535 cho moät word vaø töø 0 ñeán 255 cho
moät byte. Neáu keát quaû cuûa moät pheùp tính vöôït ra ngoaøi phaïm vi naøy thì hieän töôïng
traøn seõ xaûy ra vaø keát quaû nhaän ñöôïc bò caét bôùt seõ khoâng phaûi laø keát quaû ñuùng.
+ Côø ñieàu khieån DF:
Laø moät trong ba côø ñieàu khieån duøng ñieàu khieån caùc thao taùc cuûa vi xöû lyù coâng
duïng cuûa DF laø dòch höôùng cho caùc thao taùc chuoãi, caùc thao taùc naøy ñöôïc thöïc hieän
bôûi hai thanh ghi chæ soá SI & DI, noäi dung cuûa hai thanh ghi naøy seõ töï ñoäng taêng leân
khi DF = 0 vaø giaûm xuoáng khi DF =1.
2). Khoái giao tieáp (BIU):
Khoái giao tieáp laøm ñôn giaûn vieäc lieân laïc giöõa EU vaø boä nhôù hoaëc caùc vi
maïch vaøo ra. Noù coù nhieäm vuï gôûi caùc ñòa chæ, soá lieäu vaø tín hieäu ñieàu khieån vaøo
caùc bus, BIU & EU lieân heä vôùi nhau baèng caùc bus noäi boä, khi EU ñang thi haønh moät
leänh, BIU naïp 6 byte maõ leänh tieáp theo vaøo vaø ñaët chuùng vaøo haøng ñôïi leänh, muïc
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang9
ñích cuûa vieäc naøy laø laøm taêng toác ñoä cuûa vi xöû lyù. Neáu EU caàn lieân laïc vôùi boä nhôù
hay thieát bò ngoaïi vi, BIU seõ treo caùc leänh nhaän tröôùc vaø thöïc hieän thöïc hieän caùc
thao taùc caàn thieát. BIU caáu taïo goàm caùc thanh ghi ñoaïn vaø con troû leänh duøng ñeå
chöùa ñòa chæ caùc oâ nhôù.
a). Caùc thanh ghi ñoaïn:
Ñöôïc duøng ñeå löu tröõ ñòa chæ cuûa caùc leänh vaø döõ lieäu trong boä nhôù, vi xöû lyù
döïa treân caùc giaù trò naøy ñeå truy caäp boä nhôù.
Boä nhôù laø taäp hôïp caùc byte oâ nhôù, moãi byte coù moät ñòa chæ xaùc ñònh baét ñaàu töø
0. 8086 gaùn cho moãi oâ nhôù moät ñòa chæ vaät lyù 20 bit. Nhö vaäy, noù coù theå ñònh ñòa chæ
ñeán 220 byte (töông ñöông 1MB) oâ nhôù, caùc byte ñaàu tieân cuûa boä nhôù coù ñòa chæ
nhö sau:
0000
0000 0000 0000 0000
0000
0000 0000 0000 0001
0000
0000 0000 0000 0010
0000
0000 0000 0000 0011
0000
0000 0000 0000 0100
Ñeå ñôn giaûn, caùc ñòa chæ treân thöôøng ñöôïc bieåu dieãn baèng soá thaäp luïc phaân
nhö sau:
00000H
00001H
00002H
………… H
vaø cöù tieáp tuïc cho ñeán giaù trò lôùn nhaát laø FFFFFH
Do caùc ñòa chæ quaù lôùn (20 bit) khoâng theå chöùa trong moät thanh ghi cuûa 8086
(16 bit) neân 8086 chia boä nhôù thaønh caùc ñoaïn boä nhôù (Memory Segment).
Moät ñoaïn boä nhôù laø moät khoái goàm 2 16 (64K) oâ nhôù lieân tieáp nhau, moãi ñoaïn
ñöôïc xaùc ñònh baèng moät ñòa chæ ñoaïn baét ñaàu töø ñòa chæ 0, ñòa chæ ñoaïn laø moät soá 16
bit neân ñòa chæ ñoaïn lôùn nhaát laø FFFF. Beân trong moãi ñoaïn soá oâ nhôù ñöôïc xaùc ñònh
baèng ñòa chæ töông ñoái (offset), ñoù laø soá byte tính töø ñaàu ñoaïn, vôùi moät ñoaïn 64K thì
offset cuõng laø moät soá 16 bit, byte ñaàu tieân trong ñoaïn coù offset baèng 0 vaø byte cuoái
cuøng baèng FFFF.
Moät oâ nhôù coù theå ñöôïc xaùc ñònh baèng ñòa chæ ñoaïn:ñòa chæ töông ñoái trong
ñoaïn (segment:offset) vaø ñöôïc goïi laø ñòa chæ logic.
Thí duï: oâ nhôù A4FB:4872 coù ñòa chæ ñoaïn laø A4FB vaø ñòa chæ offset laø 4872.
Ñeå tìm ñòa chæ vaät lyù cuûa oâ nhôù tröôùc tieân ta dòch ñòa chæ ñoaïn veà beân traùi 4 bit vaø
sau ñoù coäng vôùi ñòa chæ offset, nhö vaäy ñòa chæ vaät lyù cuûa oâ nhôù A4FB:4872 ñöôïc
tính nhö sau:
A4FB0
4872
A9822
b). Saép xeáp ñoaïn:
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang10
Trong boä nhôù ñoaïn 0 baét ñaàu töø ñòa chæ 0000:0000 = 00000 vaø keát thuùc ôû
0000:FFFF = 0FFFF, ñoaïn 1 baét ñaàu töø ñòa chæ 0001:0000 = 00010 vaø keát thuùc ôû ñòa
chæ 0001:FFFF = 1000F. Nhö vaäy, coù raát nhieàu söï choàng nhau giöõa caùc ñoaïn. Caùc
ñoaïn baét ñaàu töø caùc ñòa chæ caùch nhau 16byte vaø ñòa chæ ñaàu cuûa moãi ñoaïn luoân keát
thuùc baèng caùc soá 0. 16byte ñöôïc goïi laø moät khuùc (Paragraph), caùc ñòa chæ chia heát
cho 16 (caùc ñòa chæ keát thuùc baèng 0) laø caùc bieân giôùi khuùc (Paragraph Boundary)
c). Caùc ñoaïn cuûa chöông trình:
Moãi ñoaïn chöông trình ngoân ngöõ maùy bao goàm caùc leänh vaø döõ lieäu, coøn moät
vuøng ñaëc bieät trong RAM goïi laø ngaên xeáp (stack). Maõ leänh, döõ lieäu vaø ngaên xeáp
cuûa chöông trình ñöôïc naïp vaøo caùc ñoaïn boä nhôù khaùc nhau ñoù laø ñoaïn maõ (code
segment), ñoaïn döõ lieäu (data segment), ñoaïn ngaên xeáp (stack segment).
Ñeå theo doõi caùc ñoaïn khaùc nhau cuûa chöông trình 8086 ñöôïc cung caáp 4 thanh
ghi ñoaïn ñeå chöùa caùc ñòa chæ ñoaïn, caùc thanh ghi CS, DS, SS laàn löôïc chöùa caùc ñòa
chæ ñoaïn maõ, ñoaïn döõ lieäu, vaø ñoaïn ngaên xeáp. Neáu chöông trình muoán truy caäp ñeán
moät döõ lieäu thöù hai noù coù theå söû duïng thanh ghi ñoaïn theâm ES (extra segment).
Moät chöông trình khoâng phaûi bao giôø cuõng caàn chieám heát moät ñoaïn 64KB, do
ñaëc ñieåm choàng nhau giöõa caùc ñoaïn cho pheùp caùc ñoaïn cuûa moät chöông trình nhoû
hôn 64KB coù theå ñaët gaàn laïi vôùi nhau. Taïi moät thôøi ñieåm, chæ coù caùc oâ nhôù ñöôïc
ñònh ñòa chæ bôûi 4 thanh ghi ñoaïn môùi coù theå truy caäp, nghóa laø chæ coù 4 ñoaïn boä nhôù
laø taùc ñoäng. Tuy nhieân noäi dung cuûa caùc thanh ghi ñoaïn coù theå thay ñoåi bôûi chöông
trình ñeå truy caäp ñeán caùc ñoaïn khaùc nhau.
d). Haøng ñôïi leänh:
Nhö ta ñaõ bieát, ñeå taêng toác ñoä vi xöû lyù, khoái BIU tieáp nhaän caùc leänh vaø ñöa
vaøo haøng ñôïi leänh (Queue) trong khi ñoù khoái EU ñang thi haønh leänh. Haøng ñôïi leänh
coù theå nhaän 6 byte maõ leänh, caùc leänh cuûa 8086 coù ñoä daøi töø 1 ñeán 6 byte, neáu leänh
chöa vaøo ñaày ñuû trong haøng ñôïi leänh thì khoái EU seõ chôø cho ñeán khi leänh naïp heát
vaøo haøng ñôïi leänh.
II. CHÖÙC NAÊNG CUÛA 8086:
1). Sô ñoà chaân cuûa 8086:
8086 laø vi xöû lyù 16 bit noù goàm 16 ñöôøng döõ lieäu vaø 20 ñöôøng ñòa chæ, caùc
ñöôøng döõ lieäu töø D0 ñeán D15 vaø caùc ñöôøng ñòa chæ töø A0 ñeán A15 hoaït ñoäng theo
phöông phaùp ña loä thôøi gian.
8086 coù theå laøm vieäc ôû hai cheá ñoä:
Cheá doä Minimum.
Cheá ñoä Maximum.
Trong cheá ñoä minimum, 8086 ñieàu khieån caùc thieát bò baèng caùc tín hieäu ñieàu
khieån cuûa chính noù, trong cheá ñoä naøy hoã trôï boä xöû lyù toaùn hoïc 8087.
Trong cheá ñoä maximum caàn thieát phaûi keát hôïp vôùi vi maïch ñieàu khieån bus
8288 ñeå taïo ra caùc tín hieäu ñoïc – ghi cho boä nhôù vaø caùc thieát bò ngoaïi vi vaø cheá ñoä
naøy cho pheùp laøm vieäc vôùi 8087.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang11
Sau ñaây laø sô ñoà chaân cuûa 8086 ôû caû hai cheá ñoä minimum vaø maximum:
GND
AD14
1
40
2
39
Vcc
AD15
3
38
A16/S3
4
37
A17/S4
5
36
A18/S5
6
35
A17/S6
7
34
BHE/S7
33
MN/MX
32
31
RD
HOLD
(RQ/GT0)
30
HLDA
(RQ/GT1)
12
29
13
28
WR
M/IO
(LOCK)
(S2)
14
27
DT/R
(S1)
(S0)
AD13
AD12
AD11
AD10
AD9
AD8
8
AD7
AD6
AD5
AD4
AD3
AD2
9
10
11
8086
CPU
AD1
15
26
DEN
AD0
16
25
ALE
(QS0)
(QS1)
NMI
17
24
INTA
INTR
18
23
TEST
CLK
19
22
READY
20
21
RESET
GND
Hình 1.2: Sô ñoà chaân 8086
2). Chöùc naêng cuûa caùc chaân cuûa 8086:
Vcc = 5V
Ñieän aùp nuoâi laø 5V DC, dung sai cho pheùp laø 10%.
GND = 0V
Caùc ñöôøng mass neân coù ñieän trôû caøng nhoû caøng toát.
CLK = clock (input)
Xung ñoàng hoà ñöa vaøo chaân naøy laø khoâng ñoái xöùng vaø coù tyû leä laø ½
(High/Low).
INTR- Interrupt Request (input):
Möùc cao ôû ngoõ naøy baùo cho 8086 bieát coù moät yeâu caàu ngaét (thuôøng ñöôïc gôûi
tôùi töø vi maïch xöû lyù ngaét 8259), tín hieäu ngaét taïi chaân naøy coù theå bò che baèng phaàn
meàm. Khi vi xöû lyù chaáp nhaän yeâu caàu ngaét, noù seõ ñöa ra moät chu kyø chaáp nhaän
ngaét vaø vi maïch xöû lyù ngaét phaûi gôûi ñòa chæ cuûa ngaét leân bus döõ lieäu töông öùng vôùi
chu kyø thöù hai.
NMI (Non Maskable Interrupt):
Ñaây laø ngaét khoâng che ñöôïc, taùc ñoäng ôû möùc cao vi xöû lyù nhaûy ñeán ñòa chæ
ngaét soá 2 trong baûng vector ngaét vaø khoâng taïo ra chu kyø chaáp nhaän ngaét.
Reset (input):
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang12
Ngoõ vaøo möùc cao ñaët vi xöû lyù veà traïng thaùi ban ñaàu sau ít nhaát 4 chu kyø ñoàng
hoà. Thanh ghi CS ñöôïc ñaët giaù trò FFFF vaø thanh ghi IP ñöôïc ñaët giaù trò 0000. Nhö
vaäy chæ thò ñöôïc thöïc hieän ñaàu tieân chöùa ôû oâ nhôù FFFF0 quaù trình chuyeån tieáp töø
möùc cao xuoáng möùc thaáp ñöôïc ñoàng boä bôûi chu kyø ñoàng boä töø vi maïch taïo xung
ñoàng hoà 8284.
Ready (input):
Tín hieäu baùo ñaõ hoaøn taát thao taùc truyeàn döõ lieäu cuûa boä nhôù hoaëc thieát bò vaøo
– ra, taùc ñoäng ôû möùc cao, vi xöû lyù seõ ñôïi neáu tín hieäu naøy ôû möùc thaáp.
AD0… AD15 - Address/Data bus (input/output):
Gioáng nhö trong 8085, caùc ñöôøng ñòa chæ - döõ lieäu naøy laøm vieäc theo nguyeân
taéc ña loä thôøi gian, laø ñòa chæ trong chu kyø T1 vaø laø döõ lieäu trong chu kyø T2, T3, Tw,
T4, taùc ñoäng ôû möùc cao, coù caáu taïo ba traïng thaùi vaø ôû traïng thaùi toång trôû cao trong
luùc vi xöû lyù ‘Interrup acknowlegde’ vaø ‘Hodl acknowleagde’
A16/S3 …… A19/S6 – Addres/Status (output):
Trong chu kyø T1 laø 4 bit ñòa chæ cao khi thao taùc vôùi boä nhôù, trong luùc thao taùc
vôùi thieát bò vaøo-ra chaân naøy coù gía trò thaáp. Trong caû hai thao taùc cuõng nhö vaøo – ra
caùc bit naøy laø traïng thaùi trong caùc chu kyø T 2, T3, Tw, T4. Traïng thaùi bit cao cho pheùp
ngaét, S5 ñöôïc caäp nhaät taïi moãi thôøi ñieãm baét ñaàu cuûa moãi chu kyø ñoàng hoà. S 3 & S4
cho bieát thanh ghi ñoaïn ñang ñöôïc söû duïng, thoâng tin naøy caàn thieát cho Coprocessor xaùc ñònh vò trí cuûa toaùn haïng. Coù caáu taïo ba traïng thaùi vaø traïng thaùi toång
trôû cao khi vi xöû lyù ‘Hold acknowlegde’.
S3
S4
Thanh ghi ñoaïn ñöôïc choïn
0
0
Thanh ghi ñoaïn theâm.
0
1
Thanh ghi ñoaïn ngaên xeáp.
1
0
Thanh ghi ñoaïn leänh.
1
1
Thanh ghi ñoaïn döõ lieäu .
Hai bit S3 & S4 ñeå choïn caùc thanh ghi ñoaïn.
BHE/S7 – Bus high enable / status (output):
Keát hôïp vôùi bit ñòa chæ A0 ñeå xaùc ñònh cheá ñoä truyeàn döõ lieäu, BHE ôû möùc thaáp
trong chu kyøT1 cuûa caùc thao taùc ñoïc – ghi vaø chaáp nhaän ngaét khi moät byte ñöôïc
truyeàn trong byte cao cuûa bus döõ lieäu. S 7 coù hieäu löïc trong caùc chu kyø T 2, T3 & T4,
caáu taïo ba traïng thaùi vaø traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold’.
BHE A0
Kieåu truyeàn döõ lieäu
0
0
Truy xuaát 16 bit
0
1
Truy xuaát byte cao töø ñòa chæ leû
1
0
Truy xuaát byte thaáp ñòa chæ chaün.
1
1
Khoâng söû duïng .
Caùc kieåu truy xuaát döõ lieäu.
RD – Read (output):
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang13
Tín hieäu ra ñieàu khieån vieäc ñoïc boä nhôù hoaëc khoái vaøo ra phuï thuoäc vaøo bit
traïng thaùi S2, möùc thaáp taïi T2, T3 vaø Tw trong moãi chu kyø ñoïc, caáu taïo ba traïng thaùi
vaø toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold acknowlegde’.
Test (input):
Tín hieäu vaøo ñöôïc kieãm tra bôûi leänh ‘WAIT’ vi xöû lyù seõ khoâng laøm gì caû khi
ñieän aùp chaân naøy coù giaù trò thaáp, ñoàng boä taïi caïnh leân cuûa moãi xung ñoàng hoà.
MN-MX – Minimum-Maximum (input):
Chaân choïn cheá ñoä laøm vieäc cuûa 8086, cheá ñoä laøm vieäc laø minimum töông öùng
vôùi möùc cao vaø cheá ñoä laøm vieäc laø maximum öùng vôùi möùc thaáp. Bus ñieàu khieån ôû
hai cheá ñoä coù chöùc naêng khaùc nhau.
M/IO (output):
Ngoû ra traïng thaùi gioáng nhö bit S0 ôû cheá ñoä maximum duøng ñeå baùo vò trí ñang
truy xuaát döõ lieäu. Möùc cao laø boä nhôù vaø möùc thaáp laø khoái vaøo-ra. Caáu taïo ba traïng
thaùi, toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold acknowlegde’.
WR – write (output):
Tín hieäu ra ñieàu khieån thao taùc ghi vaøo boä nhôù hoaëc khoái vaøo-ra tuøy theo giaù
trò cuûa ngoõ M/IO. Taùc ñoäng möùc thaáp ôû T 2, T3 vaø Tw cuûa moãi chu kyø ghi, caáu taïo ba
traïng thaùi vaø traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold acknowlegde’.
INTRA – Interrup Acknowlegde (output):
Tín hieäu chaáp thuaän ngaét, taùc ñoäng möùc thaáp taïi T 2, T3 vaø Tw duøng ñeå ñöa ñòa
chæ cuûa ngaét leân bus döõ lieäu.
ALE – Adress Latch Enable
Tín hieäu ñieàu khieån choát ñòa chæ 74LS373 hoaëc 8282/8283 taùc ñoäng möùc cao
trong khoaûng T1 cuûa moãi chu kyø bus :
+ Khi ALE = 1 caùc bit AD0 … AD15 laø ñòa chæ.
Hold (input):
Tín hieäu vaøo cho bieát moät linh kieän ñoøi quyeàn söû duïng bus, taùc ñoäng ôû möùc
cao.
HLDA – Hold acknowlegde (output):
Tín hieäu ra ôû möùc cao cho bieát yeâu caàu Hold ñöôïc chaáp thuaän, vi xöû lyù seõ treo
bus noäi boä vaø caùc ñöôøng ñieàu khieån cuûa noù ôû traïng thaùi toång trôû cao.
DT/R – Data Transmit/Receive (output):
Tín hieäu ra duøng ñeå ñieàu khieån höôùng truyeàn döõ lieäu cuûa vi maïch thu - phaùt.
Caáu taïo ba traïng thaùi vaø traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold
acknowlegde’.
DEN – Data enable (output):
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang14
Tín hieäu ra ôû möùc thaáp cho moãi chu kyø thao taùc boä nhôù vaø I/O vaø caû INTRA
ñieàu khieån ngoõ ra cho pheùp cuûa 8286/8287 trong hoaït ñoäng thu – phaùt döõ lieäu. Caáu
taïo ba traïng thaùi, traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold acknowlegde’.
S0, S1, S2 (thoâng tin traïng thaùi):
Vi maïch 8288 döïa treân caùc thoâng tin naøy ñeå thöïc hieän caùc thao taùc ñieàu khieån.
Caáu taïo ba traïng thaùi, traïng thaùi toång trôû cao khi ‘Hold acknowlegde’. Taùc ñoäng
trong caùc chu kyø T4, T1 & T2 vaø trôû veà traïng thaùi thuï ñoäng ôû T3 hoaëc Tw khi Ready ôû
möùc cao. Moät söï thay ñoåi baát kyø cuûa tín hieäu naøy trong chu kyø T 4 ñöôïc duøng ñeå
ñaùnh daáu thôøi ñieåm baét ñaàu cuûa chu kyø bus vaø trôû veà thuï ñoäng ôû trong T 3 hoaëc Tw
xaùc ñònh ñieåm keát thuùc cuûa chu kyø bus.
S2
0
0
0
0
1
1
1
1
S1
0
0
1
1
0
0
1
1
S0
0
1
0
1
0
1
0
1
Thoâng tin ñieàu khieån
Chaáp nhaän ngaét.
Ñoïc töø coång.
Vieát ra coång
Döøng.
Nhaäp maõ leänh.
Ñoïc töø boä nhôù.
Vieát ra boä nhôù.
Thuï ñoäng.
RQ/GT0, RQ/GT1 – Request/Gram (input/output):
Hai tín hieäu yeâu caàu vi xöû lyù nhöôøng quyeàn söû duïng bus, tín hieäu RQ/GT 0 coù
möùc öu tieân cao hôn. Nguyeân lyù hoaït ñoäng ñöôïc moâ taû nhö sau:
+ Moät xung coù beà roäng moät chu kyø ñoàng hoà cho bieát moät linh kieän caàn söû
duïng bus.
+ Trong chu kyø ñoàng hoà T4 hoaëc T1 vi xöû lyù gôûi ñeán linh kieän ñoù xung coù beà
roäng chu kyø ñoàng hoà cho bieát vi xöû lyù chaáp nhaän nhöôøng quyeàn söû duïng bus vaø noù
seõ tieán vaøo traïng thaùi ‘Hold acknowlegde’ sau xung ñoàng hoà keá tieáp ñeå treo bus
cuûa chính noù.
+ Xung beà roäng chu kyø ñoàng hoà ñöôïc gôûi ñeán 8086 cho bieát quaù trình ‘Hold’
keát thuùc vaø vi xöû lyù trôû laïi quaûn lyù bus xau khi chaám döùt chu kyø ñoàng hoà keá tieáp.
Neáu yeâu caàu naøy xaûy ra trong khi vi xöû lyù ñang truy xuaát boä nhôù, noù seõ treo bus
trong khoaûngT4 neáu thoûa nhöõng dieàu kieän sau ñaây:
- Yeâu caàu xaûy ra trong khi hoaëc trö-ùc T2.
- Chu kyø hieän haønh khoâng phaûi laø byte thaáp cuûa word (ôû ñòa chæ leû).
- Chu kyø hieän haønh khoâng ôû traïng thaùi chaáp nhaän ngaét.
- Khoâng coù chæ thò khoùa.
Neáu bus khoâng baän khi coù yeâu caàu thì coù hai tröôøng hôïp seõ xaûy ra.
- Bus seõ treo ôû chu kyø ñoàng hoà keá tieáp.
- Moät chu boä nhôù seõ khôûi ñoäng trong voøng 3 chu kyø ñoàng hoà.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang15
Clock (output):
Möùc cao baùo cho caùc linh kieän ngoaøi bieát (Co-processor) raèng chu kyø bus tieáp
theo khoâng ñöôïc pheùp giaùn ñoaïn, ñieàu naøy xaûy ra khi trong chöông trình coù chæ thò
‘Clock’. Caáu taïo ngoõ ra ba traïng thaùi, traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä
‘Hold acknowlegde’
QS1, QS0 – Queue status (output):
Ngoõ ra cho bieát traïng thaùi cuûa haøng ñôïi leänh, nhöõng thoâng tin naøy caàn thieát
cho Co-processor.
QS0
0
0
1
1
QS1
0
1
0
1
MN/
M/
+Vcc
Traïng thaùi haøng ñôïi leänh
Khoâng hoaït ñoäng .
Xoùa noäi dung haøng ñôïi keänh.
Naïp byte maõ leänh ñaàu tieân vaøo thanh ghi leänh.
Naïp byte maõ leänh tieáp theo cuûa leänh nhieàu byte
Vcc
CLK
RES
828
4RDY
Wait
State
Genarator
READY
RESET
DT/
STB
ALE
OE
8086 CPU GND
AD0AD15
73LS373
A16A19 ADDR/DATA OCTAL
LATCH
ÑÒA CHÆ
T
OE
DÖÕ LIEÄU
8286
Transceiver
BHE
OD
RAM
ROM
PERIPHERAL
Hình 1.3: Moâ phoûng keát noái heä thoáng vi xöû lyù 8086
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang16
- ÔÛ hai cheá ñoä neâu treân toâi thöïc hieän chæ nghieân cöùu cheá ñoä minimum.
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
3).
trang17
Giaûn ñoà thôøi gian cuûa chu kyø bus:
Moät chu kyø bus
T1
T2
T3
T4
CLK
ALE
M/IO
Ñòa chæ/traïng thaùi
AD0 AD15
A16 A19 BHE
A0 A15
“Noåi”
Döõ lieäu vaøo
D0 D15
RD
“Noåi”
Chu kyø
ñoïc
DT/R
DEN
AD0 AD15
A0 A15
D0 D15
WR
Chu kyø
ghi
DT/R
DEN
Hình 1.4: Giaûn ñoà thôøi gian ñoïc vaø ghi cuûa P8086
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang18
a). Giaûi thích giaûn ñoà thôøi gian ñoïc vaø ghi:
+ ÔÛ chu kyø T1:
Trong chu kyø naøy ñòa chæ cuûa boä nhôù hay thieát bò ngoaïi vi ñöa ra treân caùc
ñöôøng ñòa chæ hoaëc ñòa chæ döõ lieäu vaø ñòa chæ traïng thaùi. Caùc tín hieäu ñieàu khieån
ALE, DT/R, M/IO cuõng ñöôïc ñöa ra ñeå giuùp hoaøn taát vieäc giöõ thoâng tin ñòa chæ naøy.
+ ÔÛ chu kyø T2:
Trong chu kyø naøy CPU ñöa ra caùc tín hieäu ñieàu khieån RD hoaëc WR, DEN vaø
tín hieäu döõ lieäu treân D0 D15 neáu laø leänh ghi. DEN thöôøng duøng ñeå môû caùc boä ñeäm
cuûa bus döõ lieäu neáu chuùng ñöôïc duøng trong heä thoáng. Taïi cuoái chu kyø T2 CPU laáy
maãu tín hieäu Ready ñeå xöû lyù trong chu kyø tieáp theo khi noù phaûi laøm vieäc vôùi boä
nhôù, thieát bò ngoaïi vi chaäm.
+ ÔÛ chu kyø T3:
Trong chu kyø naøy CPU daøng thôøi gian cho boä nhôù hay thieát bò ngoaïi vi truy
caäp döõ lieäu. Neáu laø chu kyø ñoïc döõ lieäu thì taïi cuoái T 3 CPU seõ laáy maãu tín hieäu cuûa
bus döõ lieäu. Neáu taïi cuoái chu kyø T2 maø CPU phaùt hieän ra tín hieäu Ready = 0 thì
CPU töï xen vaøo T3 moät chu kyø T ñeå taïo chu kyø ñôïi Tw = n * T nhaèm keùo daøi thôøi
gian ñeå thöïc hieän leänh, taïo ñieàu kieän cho boä nhôù vaø thieát bò ngoaïi vi chaäm coù ñuû
thôøi gian hoaøn taát coâng vieäc ñoïc-ghi döõ lieäu.
+ ÔÛ chu kyø T4:
Trong chu kyø naøy caùc tín hieäu treân bus ñöôïc giaûi hoaït (ñöa veà traïng thaùi
khoâng tích cöïc) ñeå chuaån bò cho chu kyø bus môùi. Tín hieäu WR trong khi chuyeån
traïng thaùi töø ‘0’ leân ‘1’ seõ kích hoïat traïng thaùi ghi vaøo boä nhôù hay thieát bò ngoaïi vi.
b). Nguyeân taéc thöïc hieän chöông trình cuûa vi xöû lyù 8086:
Caùc chæ thò cuûa 8086 coù ñoä daøi 1 byte ñeán 6 byte, töøng chæ thò ñöôïc khoái thöïc
hieän laáy ra töø haøng ñôïi leänh sau ñoù giaûi maõ vaø thöïc hieän. Caùc maõ leänh khaùc tieáp
theo laïi ñöôïc naïp vaøo haøng ñôïi leänh bôûi khoái BIU:
Bus Interface unit
CS
DS
SS
ES
2890
0000
0000
0000
Boä
nh
ôù
28A00
1
2
3
4
5
28A06
7
IP
0106
+
BB
00
02
6B
07
BB
00
02
8B
07
43
03
07
43
Hình 1.5: Quaù trình naïp haøng ñôïi leänh cuûa BIU
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
trang19
c). Truy xuaát boä nhôù vaø söï saép xeáp caùc ñoaïn:
8086 coù theå quaûn lyù ñeán 1MB boä nhôù, ñeå ñaùnh ñòa chæ ñöôïc 1MB (1.048.576
byte) caàn phaûi coù 20 ñöôøng ñòa chæ. BIU xaùc ñònh ñòa chæ vaät lyù naøy baèng caùch coäng
ñòa chæ segment vôùi ñòa chæ offset. Tröôùc tieân nhaân ñòa chæ segment vôùi 16 (vì dòch
sang traùi 4bit) vaø sau ñoù coäng vôùi offset, toång soá nhaän ñöôïc chính laø ñòa chæ vaät lyù
cuûa oâ nhôù vaø seõ ñöôïc ñöa vaøo bus ñòa chæ.
EU
AX
BX
CX
DX
BIU
0000
3400
0000
0000
00
12
00
0 00 0
80
00
00
1280
Boä nhôù
CS
DS
SS
ES
3400
+
35280
8B 07
35280 34
1
12
Hình 1.6: Truy xuaát döõ lieäu trong boä nhôù
Ñòa chæ offset ñöôïc laáy ra töø moät thanh ghi cuûa khoái EU (thanh ghi döõ lieäu, chæ
soá hoaëc boä ñeám leänh). Thanh ghi naøy ñöôïc BIU saép xeáp coá ñònh thaønh töøng caëp.
Hình treân seõ moâ taû vieäc saép xeáp caùc thanh ghi ñeå xaùc ñònh ñòa chæ vaät lyù.
Thanh ghi ñoaïn
Ñoaïn leänh (CS)
Ñoaïn ngaên xeáp (SS)
Ñoaïn döõ lieäu (DS)
Ñoaïn theâm (ES)
IP
Thanh ghi
offset
SP, BP
BX, SI, DI hoaëc haèng soá
Hình 1.7: Saép xeáp DI
caùc(trong
thanhcaù
ghi
ñoaï
c leä
nhnchuoåi)
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp
Chöông II
trang20
KHAÛO SAÙT TOÅNG QUAÙT
TAÄP LEÄNH VI XÖÛ LYÙ 8086
___ oOo ___
I.
CAÁU TRUÙC LEÄNH:
Vi xöû lyù 8086 coù nhieàu phöông phaùp ñònh ñòa chæ vaø cuõng coù nhieàu khaû naêng
keát hôïp caùc phöông phaùp ñoù laïi vôùi nhau. Tuy nhieân, moät leänh chæ caàn 6 byte ñeå
maõ hoùa, vaø byte baét ñaàu laø maõ coâng taùc (Operations code), byte tieáp theo chöùa kieåu
ñòa chæ vaø tieáp theo ñoù coù theå laø moät hoaëc hai byte duøng ñeå chöùa ñòa chæ. Caùc byte
cuoái cuøng goàm moät hoaëc hai chöùa toaùn haïng 8 hoaëc 16 bit.
Thöïc teá ñeå bieåu dieån daïng thöùc caùc byte duøng ñeå maõ hoùa leänh Mov. Ta thaáy
raèng ñeå maõ hoùa leänh Mov ta phaûi caàn ít nhaát laø hai byte, trong ñoù 6 bit cuûa byte
ñaàu duøng ñeå chöùa maõ leänh. Ñoái vôùi leänh Mov ñeå chuyeån döõ lieäu kieåu:
- Thanh ghi thanh ghi
Tröø thanh ghi ñoaïn
- Boä nhôù thanh ghi
Thì bit ñaàu (opcode) naøy luoân laø ‘100010’ (ñoái vôùi thanh ghi ñoaïn thì khaùc).
Ñoái vôùi bit ‘D’ duøng ñeå chæ höôùng ñi cuûa döõ lieäu.
D = 0 thì döõ lieäu ñi töø thanh ghi cho bôûi 3 bit cuûa REG.
D = 1 döõ lieäu ñi ñeán thanh ghi cho bôûi 3 bit REG.
Ñoái vôùi bit W duøng ñeå chæ raèng moät byte (W = 0) hoaëc moät töø (W = 1) seõ ñöôïc
chuyeån.
Byte1
1 0 0 0 1 0
Opcode D W Mod
Byte 2
R
EG
Byte 3
M
/R
DispL
Byte 4
DispH
hoaëc
Ñòa chæ tröïc tieáp phaàn thaáp
Ñòa chæ tröïc tieáp phaàn cao
Disp: displacement (dòch chuyeån)
II. CAÙC PHÖÔNG PHAÙP ÑÒNH ÑÒA CHÆ CUÛA VI XÖÛ LYÙ 8086:
Phöông phaùp ñònh ñòa chæ (Addressing Mode) laø caùch ñeå CPU tìm thaáy toaùn
haïng cho caùc leänh cuûa noù khi hoaït ñoäng. Moät boä vi xöû lyù coù theå coù nhieàu cheá ñoä
ñònh ñòa chæ.
Caùc cheá ñoä ñònh ñòa chæ naøy ñöôïc xaùc ñònh ngay töø khi cheá taïo ra boä vi xöû lyù
vaø sau naøy ngöôøi ta laáy ñoù ñeå laøm chuaån maø khoâng thay ñoåi.
Ngoaøi caùc phöông phaùp ñònh ñòa chæ: töùc thôøi, tröïc tieáp, giaùn tieáp gioáng nhö
cuûa 8085, vi xöû lyù 8086 coøn coù theâm caùc caùch ñònh ñòa chæ khaùc vaø ñöôïc phaân loaïi
nhö sau:
GVHD: NGUYEÃN ÑÌNH PHUÙ
SVTH: NGOÂ VAÊN BÌNH
- Xem thêm -