You are on page 1of 113

Luaän vaên toát nghieäp trang1

Phaàn 1 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

Chöông I CAÁU TRUÙC BOÄ VI XÖÛ LYÙ 8086


___ 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 Caùc bus heä
thoáng
Ñieàu khieån bus
vaø taïo ñòa chæ

 Haøng
AHALBHBL 654321ñôïi
CHCLDHDL leänh
BPDISISP
CSESSSDSIP
Caùc
thanh ghi
ñoaïn

Bus döõ lieäu noäi

Arithmetic logic
unit (ALU)

Caùc
côø
Excution Unit Bus Interface Unit
(EU) (BIU)
Boä vi xöû lyù thöïcHình
hieän caùc
1.1: Sô leänh theo8086
ñoà khoái 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:

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang5
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): IPFlag Con troû leänh (Intruction Pointer)
Côø

 Caùc thanh ghi döõ lieäu:


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.
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):

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang6
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):
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

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang7
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:
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ù.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang8
+ 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 ñí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

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang9
Ñ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:
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,

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang10
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öø A 0 ñ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.

Sau ñaây laø sô ñoà chaân cuûa 8086 ôû caû hai cheá ñoä minimum vaø
maximum:
GND 1 40 Vcc
AD14 2 39 AD15
AD13 38 A16/S3
3
AD12 37 A17/S4
4
AD11 36 A18/S5
5
AD10 35 A17/S6
6
AD9 34 BHE/S7
7
AD8
AD7
8
9
8086 33
32
MN/MX
RD
AD6
AD5
10 CPU 31 HOLD
HLDA
(RQ/GT0)
(RQ/GT1)
11 30
AD4 12 29 WR (LOCK)
AD3 13 28 M/IO (S2)
AD2 14 27 DT/R (S1)
AD1 15 26 DEN (S0)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA (QS1)
INTR 18 23 TEST
CLK 19 22 READY

GVHD: NGUYEÃN ÑÌNH PHUÙ GND 20 21 SVTH: NGOÂ VAÊN BÌNH


RESET
Hình 1.2: Sô ñoà chaân 8086
Luaän vaên toát nghieäp trang11

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):
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ø T 1 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, S 5 ñöôï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à. S3 & S4 cho bieát thanh ghi ñoaïn ñang ñöôïc söû
duïng, thoâng tin naøy caàn thieát cho Co-processor 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

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang12
0 0 Thanh ghi ñoaïn theâm.
0 1 Thanh ghi ñoaïn ngaên
1 0 xeáp.
1 1 Thanh ghi ñoaïn leänh.
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ø T2, 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æ
1 0 leû
1 1 Truy xuaát byte thaáp ñòa chæ
chaün.
Khoâng söû duïng .
Caùc kieåu truy xuaát döõ lieäu.
 RD – Read (output):
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):

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang13
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):
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ø T 4, 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ø T4 ñöôï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 S1 S0 Thoâng tin ñieàu khieån


0 0 0 Chaáp nhaän ngaét.
0 0 1 Ñoïc töø coång.
0 1 0 Vieát ra coång
0 1 1 Döøng.
1 0 0 Nhaäp maõ leänh.
1 0 1 Ñoïc töø boä nhôù.
1 1 0 Vieát ra boä nhôù.
1 1 1 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/GT0 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.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang14
+ 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à.
 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 QS1 Traïng thaùi haøng ñôïi leänh


0 0 Khoâng hoaït ñoäng .
0 1 Xoùa noäi dung haøng ñôïi keänh.
1 0 Naïp byte maõ leänh ñaàu tieân vaøo thanh ghi
+Vcc
1 1
MN/ Vccleänh.
M/ Naïp byte maõ leänh tieáp theo cuûa leänh nhieàu
CLK byte
RES READY
828 RESET
DT/
4RDY
ALE STB
8086 CPU GND OE
Wait
AD0AD15 73LS373 ÑÒA CHÆ
State A16A19
ADDR/DATA
OCTAL
Genarator LATCH

T
OE
8286 DÖÕ
Transceiver
LIEÄU
BHE

OD
RAM ROM PERIPHERAL
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH

Hình 1.3: Moâ phoûng keát noái heä thoáng vi xöû lyù
Luaän vaên toát nghieäp trang15

- ÔÛ 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 trang16
3). 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 A16  A19 BHE


thaùi
Döõ lieäu
“Noåi” “Noåi”
AD0  AD15 vaøo
A0  A15 D0 D15

RD
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 trang17
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ø T 2 maø CPU phaùt hieän ra
tín hieäu Ready = 0 thì CPU töï xen vaøo T 3 moät chu kyø T ñeå taïo chu kyø ñôïi T w
= 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 Bo
ä
CS 2890 nh
28A00
ôù BB
DS 0000
1 00
SS 0000 IP 2 02
ES 0000
0106 3 8B
4 07
+ 5
28A06
43
03
7 07

BB 00 02 6B 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 trang18
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 BIU Boä
nhôù

AX 00 0000 CS
BX 12 3400 DS
CX 00 0000 SS
DX 0 00 0 0000 ES
80
00
00

1280 3400
+
35280
8B 07
35280 34
1 12

Ñòa chæ offset ñöôïc laáy ra töø moät thanh ghi cuûa khoái EU (thanh ghi döõ
Hình
lieäu, chæ soá hoaëc boä1.6: Truyleänh).
ñeám xuaát döõ lieäughi
Thanh trong boäñöôïc
naøy nhôù 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 Thanh ghi offset

Ñoaïn leänh (CS) IP

Ñoaïn ngaên xeáp (SS)


SP, BP
Ñoaïn döõ lieäu (DS)

Ñoaïn theâm (ES) BX, SI, DI hoaëc haèng soá

Hình 1.7: Saép xeápDI


caùc thanh
(trong ghileänh
caùc ñoaïnchuoåi)

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang19

Chöông II 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 Byte 2 Byte 3 Byte 4


1 0 0 0 1 0 DispL
Opcode D W Mod R M DispH
EG /R 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:
- Ñònh ñòa chæ baèng thanh ghi.
- Ñònh ñòa chæ töùc thôøi.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang20
- Ñònh ñòa chæ tröïc tieáp.
- Ñònh ñòa chæ giaùn tieáp.
- Ñònh ñòa chæ töông ñoái.
Baèng caùch keát hôïp caùc phöông phaùp ñònh ñòa chæ khaùc nhau trong moät
chæ thò, coù theå taïo ra nhieàu khaû naêng phöùc taïp ñeå truy xuaát toaùn haïng
(operand) caùc thieát bò vaøo – ra chæ ñöôïc truy caäp baèng caùc phöông phaùp tröïc
tieáp vaø giaùn tieáp. Thöù töï moâ taû byte cuûa moät word ñöôïc löu trong boä nhôù
gioáng nhö qui ñònh cuûa 8085, coù nghóa laø caùc byte thaáp (LSB) ôû ñòa chæ
thaáp vaø caùc byte cao (MSB) ñöôïc ñaët ôû ñòa chæ cao hôn keá caän.
Trong caùc trình baøy sau ñaây, boä ñeám chöông trình PC (Program Counter)
chöùa ñòa chæ offset cuûa chæ thò keá tieáp seõ thöïc hieän, chæ thò naøy ñaõ saün
saøng trong haøng ñôïi leänh. Con troû leänh IP troû ñeán ñòa chæ cao hôn, ñoù laø
byte tieáp theo seõ ñöôïc BIU nhaäp vaøo haøng ñôïi leänh.
1). Caùc phöông phaùp ñònh ñòa chæ thoâng duïng:
1.1) Ñònh ñòa chæ töùc thôøi:
Trong phöông phaùp naøy toaùn haïng nguoàn chính laø döõ lieäu caàn xöû lyù
cuûa chæ thò.
Thí duï: Mov ax, 1200
Mov Ax, 1200 CPU Boä
nhôù
Tröôùc
2300
AX SP CS 2300
BX BP DS 0100 B8
CX SI SS PC 0100 00
12
DX DI ES

O D I T S Z A P C
FI
Mov ax, [0230] CPU Boä
Sau nhôù
Tröôùc
2300
AX
AX 1200 SPSP CS 2300
CS 2300 B8
2300 00
BX
BX BP
BP DS2780
DS PC 0103
CX
CX SISI SS
SS PC 0100 010 B8 2080
12 00
DX
DX DIDI ES
ES 00
0 0103 12
12

OO D D I I T T S S ZZ AA PP CC
FIFI

Sau
O DHình
1.2). Phöông I 2.1
T :Phöông
phaùp Sñònh phaùp
Z ñòa Achæ ñònhPñòatieáp:
tröïc chæ
C töùc thôøi
Trong chæAXthò1200
bao goàm 2300
SP ñòa chæ CSoffset
2300 cuûa toaùn haïng, ñòa chæ ñoaïn ñöôïc
B8 208 00
quy ñònh laø noäi
BXdung cuûaBPthanh ghiDSDS.2780 PC 1003 00 0 12
CX ax, [0230]
Thí duï: Mov SI SS
12
DX DI ES
010
3

FI
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
O D I T S Z A P C

Hình 2.2: Phöông phaùp ñònh ñòa chæ tröïc tieáp


Luaän vaên toát nghieäp trang21

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang22
1.3). Ñònh ñòa chæ giaùn tieáp:
Trong phöông phaùp truy xuaát giaùn tieáp caùc coång luoân luoân taùc ñoäng
ñeán thanh ghi DX, noäi dung cuûa DX laø ñòa chæ 16 bit cuûa coång. Soá löôïng
coång laø 64B.
Thí duï: IN AL, DX
CPU Boä
nhôù

Tröôùc 2300
AX SP CS 2300 0100 EC
BX BP DS PC 0100
CX 0260 SI SS I/O
O D I 260 1C
FI DX DI T S ZES A P C
Sau 2300
AX 1200 SP CS 2300 EC
BX PC 0101 0101
BP DS
CX SI SS
DX O D IDI T S ZES A P C I/O 1C
260
FI

1.4). Ñònh ñòa chæ töông ñoái:


Hình 2.3:Phöông
Trong phöông phaùp phaùp
ñònh ñòa chæ ñònhñoái,
töông ñòa chæ giaùn
thanh ghitieáp
BX hoaëc BP chöùa
ñòa chæ cô sôû, caùc ñòa chæ naøy laø offset cuûa toaùn haïng. Ñòa chæ töông ñoái
coù theå ñöôïc duøng chung vôùi ñòa chæ tröïc tieáp hoaëc giaùn tieáp.
Thí duï: Mov AX, [BX]

CPU Boä
Tröôùc nhôù
AX SP CS 2300
2300
2780
BX 0280 BP DS PC 0100 010 8B 2080 00
CX SI SS 0 07 12
DX DI ES
O D I T S Z A P C
FI
Sau
AX 1200 SP CS 2300 2300
2780 PC 1002 8B 208 00
BX 0280 BP DS 07 0 12
CX SI SS
DX DI ES
010
3
O D I T S Z A P C
FI2).
Khaûo saùt toång quaùt taäp leänh 8086:
Taäp leänh cuûa 8086 goàm 9 nhoùm leänh:
Hình 2.4:soá
- Nhoùm leänh truyeàn Phöông
lieäu.phaùp ñònh ñòa chæ töông ñoái
- Nhoùm leänh soá hoïc.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang23
- Nhoùm leänh thao taùc chuoåi.
- Nhoùm leänh logic.
- Nhoùm leänh xöû lyù bit.
- Nhoùm leänh ñieàu khieån chöông trình.
- Nhoùm leänh ngoân ngöõ baäc cao.
- Nhoùm leänh ôû cheá ñoä baûo veä.
- Nhoùm leänh ñieàu khieån caùc boä vi xöû lyù.
Qua nhöõng nhoùm leänh giôùi thieäu treân nhoùm thöïc hieän ñeà taøi chæ
khaûo saùt nhöõng nhoùm leänh thoâng duïng nhaèm phuïc vuï cho vieäc laäp trình
baèng ngoân ngöõ maùy.
2.1). Nhoùm leänh truyeàn soá lieäu:
Caùc leänh truyeàn döõ lieäu seõ sao cheùp döõ lieäu giöõa thanh ghi vôùi thanh
ghi, vôùi boä nhôù hoaëc vôùi khoái vaøo-ra. Chuùng coù theå söû duïng nhieàu caùch
ñònh ñòa chæ khaùc nhau. Trong caùch vieát leänh döôùi daïng gôïi nhôù: toaùn haïng
ñaàu tieân laø thanh ghi ñích hoaëc ñòa chæ ñích vaø tieáp sau daáu phaåy laø thanh
ghi nguoàn hoaëc ñòa chæ nguoàn. Khaùc vôùi 8085, trong 8086 taát caû caùc leänh
truyeàn döõ lieäu ñeàu duøng leänh “Mov”.
 Truyeàn töø thanh ghi vaøo thanh ghi:
Mov (Reg1), (Reg2)
Noäi dung (Reg2) ñöôïc sao cheùp vaøo (Reg1).
Thí duï: Mov AL, BL
Sao cheùp noäi dung BL vaøo thanh ghi AL.
 Truyeàn töø thanh ghi vaøo boä nhôù:
Mov (Mem), (Reg)
Ñoái vôùi leänh byte, noäi dung cuûa thanh ghi ñöôïc ñöa vaøo ñòa chæ cuûa oâ
nhôù. Ñoái vôùi leänh word thì noäi dung cuûa thanh ghi ñöôïc ñöa vaøo hai oâ nhôù
coù ñòa chæ laàn löôïc laø (Mem) vaø (Mem + 1).
Thí duï: Mov [1200], BL
Sao cheùp noäi dung cuûa thanh ghi BL vaøo oâ nhôù coù ñòa chæ töông ñoái
laø 1200.
 Truyeàn töø oâ nhôù vaøo thanh ghi:
Mov (Reg), (Mem)
Ñoái vôùi leänh byte, noäi dung oâ nhôù ñöôïc cheùp vaøo thanh ghi. Ñoái vôùi
leänh word, noäi dung cuûa 2 oâ nhôù (Mem) vaø (Mem + 1) ñöôïc cheùp vaøo thanh
ghi.
Thí duï: Mov BL, [1500]
Sao cheùp noäi dung oâ nhôù taïi ñòa chæ 1500 vaøo thanh ghi BL.
Mov BX, [1500]
Sao cheùp noäi dung hai oâ nhôù taïi ñòa chæ 1500 vaø 1501 vaøo thanh ghi BX
(oâ 1500 vaøo BL vaø oâ 1501 vaøo BH)
Chuù yù: neáu söû duïng AL hoaëc AX trong caùc leänh truyeàn töø thanh ghi
vaøo oâ nhôù vaø ngöôïc laïi seõ nhaän ñöôïc maõ coâng taùc ngaén hôn khi söû duïng
caùc thanh ghi khaùc.
 Truyeàn töùc thôøi vaøo thanh ghi:
Mov (Reg), (Data)
Trong leänh naøy, döõ lieäu ñöôïc truyeàn töùc thôøi vaøo thanh ghi.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang24
Thí duï: Mov BL, 20
Giaù trò 20 ñöôïc ñöa vaøo thanh ghi BL.
 Truyeàn töùc thôøi vaøo boä nhôù:
Mov (Mem), (Data)
Trong leänh byte döõ lieäu ñöôïc truyeàn töùc thôøi vaøo oâ nhôù coù ñòa chæ
(Mem). Trong leänh word döõ lieäu ñöôïc truyeàn töùc thôøi vaøo 2 oâ nhôù coù ñòa
chæ (Mem) vaø (Mem + 1).
Thí duï: Mov [1200], 50
Giaù trò 50 ñöôïc ñöa vaøo oâ nhôù coù ñòa chæ 1200.
Mov Word PTR [1200], 50
Giaù trò Word 0050 ñöôïc ñöa vaøo 2 oâ nhôù baét ñaàu taïi ñòa chæ 1200, 50
(LSB) vaøo ñòa chæ 1200, 00 (MSB) vaøo ñòa chæ 1201.
- Truy xuaát tröïc tieáp coång:
IN (Reg), (Port)
Ñoïc noäi dung cuûa coång vaøo thanh ghi. thanh ghi söû duïng laø AL (daïng
byte) vaø AX (daïng Word), ñòa chæ coång laø moät soá 8 bit.
OUT (Reg), (Port)
Xuaát noäi dung cuûa thanh ghi ra coång.
- Truy xuaát giaùn tieáp coång:
IN (Reg), DX
Ñoïc noäi dung cuûa coång coù ñòa chæ chöùa trong DX vaøo thanh ghi. Thanh
ghi söû duïng laø AL hoaëc AX, ñòa chæ coång laø soá 16 bit.
OUT DX, (Reg)
Gôûi noäi dung thanh ghi ra coång coù ñòa chæ chöùa trong DX
2.2). Nhoùm leänh soá hoïc:
Bao goàm caùc pheùp tính cô baûn (coäng, tröø, nhaân vaø chia) vaø pheùp so
saùnh, toaùn haïng coù theå laø döõ lieäu 8 bit hoaëc 16 bit, keát quaû coù theå laø 8
bit, 16 bit hoaëc 32 bit. Caùc toaùn haïng ñöôïc chöùa trong thanh ghi boä nhôù töùc
thôøi. Tuøy theo thao taùc, keát quaû coù theå ñöôïc chöùa trong 1 hoaëc 2 thanh ghi
trong boä nhôù.
 Pheùp coäng:
Vi xöû lyù 8086 thöïc hieän pheùp coäng coù löu yù soá nhôù hoaëc khoâng löu
yù soá nhôù 8 bit hoaëc 16 bit.
+ Soá haïng ñaàu tieân ñöôïc chöùa trong caùc thanh ghi döõ lieäu (AX,
BX, CX, DX, AH, AL, BH …), trong moät thanh ghi chæ soá hoaëc moät oâ nhôù.
Soá haïng thöù hai coù theå laø töùc thôøi trong thanh ghi hoaëc trong boä nhôù. Hai
soá haïng khoâng theå cuøng ôû trong boä nhôù, keát quaû pheùp coäng ñöôïc chöùa
trong toaùn haïng thöù nhaát. Sau ñaây laø baûng lieät keâ leänh coäng döôùi daïng
gôïi nhôù:
Coäng khoâng löu yù soá Coäng coù löu yù soá Thí duï
nhôù nhôù
ADD (accu), (data) ADC (accu), (data) ADD AX, 1250
ADD (mem), (data) ADC (mem), (data) ADD Byte PTR [0900],50
ADD (reg), (data) ADC (reg), (data) ADD BL, 50
ADD (reg1), (reg2) ADC (reg1), (reg2) ADC AL, AH
ADD (reg), (mem) ADC (reg), (mem) ADD CX, [0800]
ADD (mem), (reg) ADC (mem), (reg) ADC [0600], DL

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang25
 Pheùp tröø:
8086 coù theå thöïc hieän pheùp tröø vôùi 8 bit hoaëc 16 bit, leänh SBB coù löu
yù soá thieáu vaø leänh SUB khoâng löu yù soá thieáu. Sau ñaây laø baûng lieät keâ
leänh tröø döôùi daïng gôïi nhôù:
Tröø coù soá thieáu Tröø khoâng coù soá Thí duï
thieáu
SUB (accu), (data) SBB (accu), (data) SUB AX, 1230
SUB (mem), (data) SBB (mem), (data) SBB Byte PTR [5000], 90
SUB (reg), (data) SBB (reg), (data) SUB BL, 50
SUB (reg1), (reg2) SBB (reg1), (reg2) SBB AL, DL
SUB (reg), (mem) SBB (reg), (mem) SUB CX, [1230]
SUB (mem), (reg) SBB (mem), (reg) SBB [0300], DL

 Pheùp so saùnh
Trong pheùp so saùnh hai toaùn haïng caàn so saùnh ñöôïc tröø vôùi nhau nhöng
noäi dung cuûa caùc thanh ghi vaø oâ nhôù khoâng bò thay ñoåi, keát quûa so saùnh
chæ aûnh höôûng ñeán thanh ghi côø seõ ñöôïc minh hoïa ôû hình sau:
CPU Boä
Tröôùc nhôù
AX SP CS
2300
BX BP DS
PC 0100 010 39
CX SI SS
0 08
DX DI ES

O D I T S Z A P C
FI
Sau

AX CS 2300
0123 SP 2300
39
BX 0246 BP DS PC 0102
08
CX SI SS
DX DI ES 010
2
O D I T S Z A P C
Hình
0 2.5: Phöông1phaùp
0 ñònh 1ñòa chæ1töông ñoái
1 Boä
FI CPU
 Nhoùm leänh
Tröôùc logic:
nhôù
8086 thöïc hieän ñöôïc caùc pheùp tính logic : AND ,OR , EXOR, vaø pheùp
ñaûo NOT. Caùc ñòa AXchæ gioáng
SP nhö pheùp
CS coäng:
2300
2300
BX 0280 BP DS 2780
PC 0100
CX SI SS 010 8B 2080 39
0 07 1
DX 0815 DI ES
278
A
O D I T S Z A P C 0
FI
Sau

AX 0811 SP CS 2300 2300


23 028 39
BX 0280 BP DS 2780 PC 0102
07 0 278
1A
CX SI SS
DX DI ES 0
010
GVHD: NGUYEÃN ÑÌNH PHUÙ 2 VAÊN BÌNH
SVTH: NGOÂ
O D I T S Z A P C
FI
0 0 0 0 1 0
Luaän vaên toát nghieäp trang26

Hình 2.6: Phöông phaùp ñònh ñòa chæ töông ñoái


Caùc daïng gôïi nhôù cuûa pheùp Logic:
Daïng gôïi nhôù cuûa pheùp AND:
AND (mem), (reg)
AND (reg), (mem)
AND (reg1), (reg2)
AND (mem), (data)
AND (reg), (data)
AND (accu), (data)
Daïng gôïi nhôù cuûa pheùp OR
OR ( mem), (reg)
OR (reg), (mem)
OR ( reg1), (reg2)
OR (mem), (data)
OR (reg), (data)
OR (accu), (data)
Daïng gôïi nhôù cuûa pheùp NOT
NOT (reg)
NOT (mem)
Daïng gôïi nhôù cuûa pheùp EXOR
XOR (mem), (reg)
XOR (reg), (mem)
XOR (reg1), (reg2)
XOR (mem), (data)
XOR (reg), (data)
XOR (accu), (data)
 Nhoùm leänh quay:
8086 coù caùc leänh quay, dòch döõ lieäu 8 bit vaø 16 bit, coù theå dòch nhieàu
bit baèng moät leänh trong tröôøng soá laàn dòch chöùa trong CL. Thao taùc quay coù
theå quay qua Carry hoaëc khoâng.
Daïng gôïi nhôù cuûa pheùp quay khoâng qua Carry:
+ Quay phaûi:
ROL (mem), (count)
ROL (reg), (count)
+ Quay traùi:
ROR (mem), (count)
ROR (reg), (count)
 Nhoùm leänh nhaûy coù ñieàu kieän:

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang27
Caùc leänh nhaûy coù ñieàu kieän cuûa 8086 luoân luoân daøi hai byte vaø chæ
thöïc hieän caùc böôùc nhaûy baèng (Short Jmp). Byte thöù nhaát laø maõ coâng taùc,
Byte thöù hai laø khoaûng caùch nhaûy döôùi daïng soá buø hai, coù toång coäng 31
ñieàu kieän nhaûy. Caáu taïo toång quaùt moät leänh nhaûy coù ñieàu kieän ñöôïc
trình baøy nhö sau:
CPU Boä
Tröôùc nhôù
AX SP CS 2300
2300
BX BP DS PC 0100 72
CX SI SS 010
0 03
DX DI ES

O D I T S Z A P C
FI
Sau

AX SP CS 2300
B8
BX BP DS PC 0105
00
CX SI SS
12
DX DI ES
010
O D I T S Z A P C 5
FI

Hình 2.7: Phöông phaùp ñònh ñòa chæ töùc thôøi

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang28
Daïng gôïi nhôù cuûa leänh nhaûy coù ñieàu kieän:
JC (CF=1)
JNC (CF=0)
JZ (ZF=1)
JNZ (Z=0 )
JE (ZF=1)
JNE (ZF=0)
 Leänh goïi chöông trình phuï:
Chöông trình phuï ñöôïc goïi baèng leänh Call vaø chaám döùt baèng leänh
Ret. Vi xöû lyù 8086 chæ coù caùc leänh goïi khoâng ñieàu kieän ñöôïc trình
baøy döôùi daïng gôïi nhôù nhö sau:
Daïng gôïi nhôù Thí duï
CALL (addr) CALL 0200
CALL [(addr)] CALL [0200]
CALL BX
CALL Seg : Offset CALL 2350 : 0200
Caùc leänh Call ñöôïc phaân loaïi döïa theo vò trí cuûa chöông trình phuï
trong boä nhôù goàm hai loaïi:
- Chöông trình phuï naèm trong ñoaïn maõ hieän haønh.
- Chöông trình phuï naèm ngoaøi ñoaïn maõ hieän haønh.
Trong tröôøng hôïp chöông trình phuï naèm trong ñoaïn maõ hieän haønh thì ñòa
chæ ñoïan trong thanh ghi CS khoâng thay ñoåi, thanh ghi traïng thaùi vaø con
troû leänh seõ ñöôïc löu vaøo ngaên xeáp. Sau ñoù ñòa chæ cuûa chöông trình
phuï seõ ñöôïc naïp vaøo con troû leänh khoái BIU xoùa noäi dung cuûa caùc
haøng ñôïi leänh vaø thay vaøo ñoù noäi dung cuûa oâ nhôù ñöôïc chæ ñònh bôûi
leänh Call.
Trong tröôøng hôïp chöông trình phuï naèm ngoaøi ñoaïn maõ hieän haønh,
thanh ghi traïng thaùi vaø ñòa chæ seg:offset seõ ñöôïc caát vaøo ngaên xeáp

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang29
Phaàn 2
THIEÁT KEÁ PHAÀN CÖÙNG KIT 8086
Chöông I:
CAÙC LINH KIEÄN BAÙN DAÃN COÙ LIEÂN QUAN
oOo
Trong thieát keá toâi ñaõ phaûi tính toaùn löïa choïn qua caùc coâng ñoïan:
- Linh kieän phaûi coù saün treân thò tröôøng.
- Linh kieän phaûi phuø hôïp vôùi heä thoáng.
- Heä thoáng ñôn giaûn tieát kieäm.
- Keát noái sao cho phaàn meàm ñôn giaûn nhaát, maø phaàn cöùng
khoâng quùa phöùc taïp, coàng keành.
- IC 8086 ña hôïp caùc ñöôøng ñòa chæ vaø döõ lieäu töø AD 0 – AD15 vôùi
nhau, neân muoán söû duïng ñöôïc phaûi keát hôïp vôùi IC giaûi ña hôïp
caùc ñöôøng ñòa chæ vaø döõ lieäu rieâng bieät.
I . IC choát 74LS373:
1). Toång quaùt:
Trong thieát keá toâi choïn IC choát 74LS373 laøm nhieäm vuï taùch
rieâng töøng ñöôøng ñòa chæ vaø döõ lieäu, ñaây laø IC choát 8 bit vôùi 8
traïng thaùi ngoõ ra theo Bus, nhöõng öùng duïng cuûa heä thoáng ñöôïc toå
chöùc FLIP-FLOP (F-F) cho döõ lieäu qua. Ngoõ cho pheùp choát (LE) ôû
möùc cao khi LE laø thaáp döõ lieäu ñöôïc choát, döõ lieäu xuaát treân Bus
khi ngoõ ra cho pheùp OE laø thaáp. Khi OE cao thì Bus ngoõ ra seõ ôû
traïng thaùi cao .
IC 74LS373 laø IC choát toác ñoä cao, coâng suaát thaáp, 8D FF vôùi
ñaëc ñieåm nhöõng ngoõ vaøo D cho moãi FF vaø ba traïng thaùi ngoõ ra
cuûa nhöõng Bus öùng duïng ñaõ ñònh höôùng. Xung Clock ñeäm vaøo ngoõ
ra OE laø chung cho taát caû caùc FF.
2). Sô ñoà chaân 74LS373:

D0 – D7 : Data input
LE : Cho pheùp
OE : Cho pheùp xuaát
O0 – O7 : Ngoõ ra

Baûng söï thaät:


LE (G) OE (OC) Dn On
H L H H
H L L L

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang30
L L X Q0
L H X Z
Thoâng soá ngöôõng:

Kyù Thoâng soá Min Type Max Ñôn vò


hieäu
Vcc Nguoàn cung caáp 4,75 5 5,25 V
o
TA Nhieät ñoä hoaït 0 25 70 C
IOH ñoäng -2,6 mA
IOL Doøng ra cao. 24 mA
Doøng ra thaáp.
3). Sô ñoà moâ phoûng keát noái 74LS373 vôùi 8086:

74LS373

A15 – A0
8086

74LS373
74LS373

Hình II.2: Sô ñoà moâ phoûng keát noái 74LS373 vôùi


8086

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang31
II. IC ÑEÄM 74LS244:
Ñeå naâng cao khaû naêng taûi cuûa caùc bus, ñeå ñaûm nhaän vieäc nuoâi caùc
maïch beân ngoaøi, caùc tín hieäu ra cuûa CPU caàn phaûi ñöôïc khueách ñaïi thoâng
qua caùc maïch ñeäm moät chieàu, hai chieàu vôùi caùc ñaàu ra thöôøng hay ñaàu ra
ba traïng thaùi ñoù laø IC 74LS244
IC 74LS244 laø moät vi maïch coù 8 boä ñeäm vaø boä laùi ñöôøng ñöôïc thieát
keá nhö nhöõng boä laùi ñòa chæ nhôù.

Sô ñoà chaân 74LS244:

74LS244
1G 1 20 Vcc
1A1 2 19 2G
2Y1 3 18 1Y1
1A2 4 17 2A4
2Y3 5 16 1Y2
1A3 6 15 2A3
2Y2 7 14 1Y3
1A4 8 13 2A2
2Y1 9 12 1Y4
GND 10 11 2A1
Baûng söï thaät: Hình II.3: Sô ñoà chaân 74LS244
INPUT H: möùc ñieän theá cao
1G 2G D OUTPUT L: möùc ñieän theá
thaáp
L L L X: khoâng quan taâm
L H H Z: toång trôû cao
H X Z
Thoâng soá ngöôõng:
Kyù Thoâng soá Min Type Max Ñôn vò
hieäu
Vcc Nguoàn cung caáp 4,45 5,0 5,25 V
o
TA Nhieät ñoä hoaït 0 2,5 70 C
ñoäng
IOH Doøng ra cao -1,5 mA
IOL Doøng ra thaáp 24 mA
III. MAÏCH TAÏO XUNG NHÒP 8284:
Cho duø laøm vieäc ôû cheá ñoä naøo ñi nöûa CPU 8086 luoân caàn xung nhòp
ñeå hoaït ñoäng, maïch taïo xung nhòp 8284 seõ ñaûm nhaän vieäc taïo xung nhòp
clock cho CPU 8086. Maïch taïo xung nhòp khoâng nhöõng cung caáp xung clock
vôùi taàn soá thích hôïp cho toaøn boä maø noù coøn coù aûnh höôûng tôùi vieäc
ñoàng boä tín hieäu Reset vaø tín hieäu Ready cuûa CPU.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang32
1). Sô ñoà chaân 8284:

CSYN 1 18 Vcc

C2 17 X1

PCLK 3 16 X2

AEN1 4 15 ASYN

RDY1 5 8284 14 C

READ 6 13 EFI

Y7 12 F/C

RDY2 8 11 OSC

AEN2 9 10 RES

CKLII.4: Sô ñoà chaânRESET


Hình 8284
2). Chöùc naêngGND
caùc chaân 8284:
 AEN1, AEN2: tín hieäu cho pheùp choïn ñaàu vaøo töông öùng RDY1,
RDY2 laøm tín hieäu baùo traïng thaùi cuûa boä nhôù vaø thieát bò ngoaïi vi.
 RDY1, RDY2: cuøng vôùi AEN1, AEN2 duøng gaây ra caùc chu kyø ñôïi
ôû CPU.
 ASYNC: choïn ñoàng boä hai taàng hay ñoàng boä moät taàng cho tín hieäu
RDY1, RDY2. Trong cheá ñoàng boä moät taàng (ASYNC = 1) tín hieäu RDY coù
aûnh höôûng ñeán tín hieäu Ready ñeán taän söôøn xuoáng cuûa xung ñoàng hoà tieáp
theo. Coøn trong cheá ñoä ñoàng boä hai taàng (ASYNC = 0) tín hieäu RDY chæ coù
aûnh höôûng tôùi tín hieäu Ready khi coù söôøn xuoáng cuûa xung ñoàng hoà tieáp
theo.
 Ready: noái ñeán ñaàu vaøo Ready cuûa CPU. Tín hieäu naøy ñöôïc ñoàng
boä vôùi caùc tín hieäu RDY1 vaø RDY2.
 X1, X2: noái vôùi hai chaân cuûa thaïch anh taïo dao ñoäng chuaån vôùi
taàn soá fx, thaïch anh naøy laø boä phaän cuûa moät maïch dao ñoäng beân trong
8284 coù nhieäm vuï taïo xung chuaån duøng laøm tín hieäu ñoàng hoà cho toaøn heä
thoáng.
 F/C: duøng ñeå choïn nguoàn tín hieäu chuaån cho 8284, khi chaân naøy ôû
möùc cao thì xung ñoàng hoà beân ngoaøi seõ ñöôïc duøng laøm xung nhòp cho 8284,
ngöôïc laïi thì xung ñoàng hoà cuûa maïch dao ñoäng beân trong duøng thaïch anh seõ
ñöôïc choïn laøm xung nhòp.
 EFI: loái vaøo cho xung töø boä dao ñoäng ngoaøi.
fx
 CLK: xung nhòp fclk  vôùi ñoä roãng 77% noái ñeán chaân CLK cuûa
3
CPU 8086.
fx
 PCLK: xung nhòp fPCLK  vôùi ñoä roãng 50% daøng cho thieát bò
6
ngoaïi vi.
 OSC xung nhòp ñaõ ñöôïc khueách ñaïi coù taàn soá baèng fx cuûa boä
dao ñoäng.
 RES chaân khôûi ñoäng, noái vôùi maïch RC ñeå 8284 coù theå töï khôûi
ñoäng khi baät nguoàn.
 Reset: noái vaøo Reset cuûa 8086 vaø laø tín hieäu khôûi ñoäng laïi cho
toaøn boä heä thoáng.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang33

 CSYNC: loái vaøo cho xung ñoàng boä chung khi trong heä thoáng coù
caùc 8284 duøng dao ñoäng ngoaøi taïi chaân EFI. Khi duøng maïch dao ñoäng trong
thì phaûi noái mass chaân naøy.
X
+5V CL CLK
1 K
8284 8086
X
RE RESE RESE
K S2 T T
F/ CSYN
C C Khôûi ñoäng heä
thoáng
Hình II.5: Sô ñoà caùc ñöôøng tín hieäu chính cuûa 8284
Hình treân bieåu dieãn caùc ñöôøng noái tín hieäu chính cuûa 8284. Maïch 8284
nhaän xung khôûi ñoäng töø beân ngoaøi thoâng qua maïch RC, khi baét ñaàu baät
ñieän hoaëc xung khôûi ñoäng laïi khi baám coâng taéc K töø xung naøy 8284 coù
nhieäm vuï ñöa ra xung khôûi ñoäng ñoàng boä cho CPU cuøng vôùi taát caû caùc
thaønh phaàn khaùc cuûa heä thoáng.
IV. TOÅNG QUAN VEÀ BOÄ NHÔÙ:
Tröôùc khi noùi veà keát noái boä nhôù vôùi vi xöû lyù 8086 nhoùm thöïc hieän
noùi qua veà boä nhôù baùn daãn thöôøng duøng ñeå keát noái vôùi vi xöû lyù. Bao
goàm:
- Boä nhôù coá ñònh ROM (Read Only Memory – Boä nhôù chæ ñoïc),
thoâng tin trong boä nhôù seõ khoâng maát ñi khi maïch bò maát ñieän nguoàn cung
caáp.
- Boä nhôù baùn coá ñònh EPROM (Erasable Programnable ROM) laø
boä nhôù ROM coù theå laäp trình ñöôïc baèng xung ñieän vaø xoùa ñöôïc baèng tia
cöïc tím.
- Boä nhôù khoâng coá ñònh RAM (Random Access Memory – Boä nhôù
truy caäp ngaãu nhieân). Trong noäi dung ñeà taøi nhoùm thöïc hieän duøng SRAM
(Static RAM – RAM tónh, trong ñoù moãi phaàn töû nhôù laø moät maïch laät hai
traïng thaùi oån ñònh) vaø DRAM (Dynamic RAM – RAM ñoäng, trong ñoù moãi
phaàn töû nhôù laø moät tuï ñieän raát nhoû ñöôïc cheá taïo baèng coâng ngheä MOS)
ñeå keát noái vôùi vi xöû lyù.
Moãi boä nhôù thöôøng ñöôïc cheá taïo neân töø nhieàu vi maïch nhôù. Moät vi
maïch nhôù thöôøng coù caáu truùc tieâu bieåu nhö sau:
A0 D0
A1 D1 WR: Write – ghi
Tín hieäu A2 D2 Tín hieäu
ñòa chæ . . döõ lieäu WE: Write Enable-cho
. . pheùp ñoïc.
. . OE: Output Enable-ñaàu
Am Dn vaøo ñieàu khieån.
CS OE
WE CS: Chip Select- chaân
choïn.
Chaân choïn RD RD: Read – ñoïc.
Theo sôHình
ñoà treân ta ñoà
II.6: Sô thaáy moät
moät vi maïch
vi maïch nhôùnhôù coù caùc nhoùm tín hieäu sau:

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang34
- Nhoùm tín hieäu ñòa chæ:
 Caùc tín hieäu ñòa chæ coù taùc duïng choïn ra moät oâ nhôù (moät töø
nhôù) cuï theå ñeå ghi/ñoïc. Caùc oâ nhôù coù ñoä daøi khaùc nhau tuøy theo nhaø
saûn xuaát: 1, 4, 8… bit. Soá ñöôøng tín hieäu ñòa chæ coù lieân quan ñeán dung
löôïng cuûa maïch nhôù. Vôùi moät maïch nhôù coù n bit ñòa chæ thì dung löôïng
cuûa maïch nhôù ñoù laø 2n töø nhôù.
 Thí duï: vôùi boä nhôù 8 bit ta coù n = 8 neân dung löôïng boä nhôù laø
256 byte (28=256 byte), 16 bit neân n = 16 ta coù dung löôïng boä nhôù laø 65536
byte…
- Nhoùm tín hieäu döõ lieäu:
Caùc tín hieäu döõ lieäu thöôøng laø ñaàu ra ñoái vôùi maïch ROM hoaëc ñaàu
vaøo/ra döõ lieäu chung ñoái vôùi RAM. Cuøng toàn taïi maïch nhôù RAM vôùi ñaàu
ra vaø ñaàu vaøo döõ lieäu rieâng bieät, ñoái vôùi RAM loaïi naøy khi duøng trong
maïch bus döõ lieäu ngöôøi söû duïng phaûi noái hai ñaàu ñoù laïi. Caùc maïch nhôù
thöôøng coù ñaàu ra döõ lieäu kieåu ba traïng thaùi, soá ñöôøng döõ lieäu quyeát ñònh
ñoä daøi töø nhôù cuûa maïch nhôù.
- Nhoùm tín hieäu choïn vi maïch:
Caùc tín hieäu choïn laø CS (Chip Select) hoaëc CE (Chip Enable) thöôøng
ñöôïc duøng ñeå choïn vi maïch nhôù cuï theå ñeå ghi/ñoïc. Tín hieäu choïn ôû caùc
maïch RAM thöôøng laø CS, coøn ôû caùc maïch ROM thöôøng laø CE. Caùc tín
hieäu choïn thöôøng noái vôùi ñaàu ra cuûa boä giaõi maõ ñòa chæ.
Khi moät maïch nhôù khoâng ñöôïc choïn thì bus döõ lieäu cuûa noù bò treo.
- Nhoùm tín hieäu ñieàu khieån:
Tín hieäu ñieàu khieån caàn coù trong taát caû caùc maïch nhôù. Caùc maïch
ROM thöôøng coù moät ñaàu vaøo ñieàu khieån OE (Output Enable) ñeå cho pheùp
döõ lieäu ñöôïc xuaát ra bus. Moät maïch nhôù khoâng ñöôïc môû bôûi OE thì bus döõ
lieäu cuûa noù bò treo.
Moät maïch RAM neáu chæ coù moät tín hieäu ñieàu khieån thì thöôøng ñoù laø
R/W ñeå ñieàu khieån quaù trình ghi ñoïc. Neáu maïch nhôù RAM coù hai tín hieäu
ñieàu khieån thì thöôøng laø WE (Write Enable) ñeå ñieàu khieån ghi vaø OE ñeå
ñieàu khieån ñoïc. Hai tín hieäu naøy phaûi ngöôïc pha nhau ñeå ñieàu khieån vieäc
ñoïc vaø ghi cuûa maïch nhôù.
Moät thoâng soá ñaëc tröng khaùc cuûa boä nhôù laø thôøi gian truy xuaát t ac.
Noùi chung, noù ñöôïc ñònh nghóa nhö laø thôøi gian keå töø coù xung ñòa chæ treân
bus ñòa chæ cho ñeán khi coù döõ lieäu ra oån dònh treân bus döõ lieäu. Thôøi gian
truy xuaát cuûa boä nhôù phuï thuoäc raát nhieàu vaøo coâng ngheä cheá taïo cuûa
noù. Caùc boä nhôù laøm baèng coâng ngheä löôõng cöïc coù thôøi gian truy xuaát
nhoû (10  30 ns) coøn boä nhôù laøm baèng coâng ngheä MOS coù thôøi gian truy
xuaát lôùn hôn nhieàu ( > 150 ns).
Boä nhôù ñöôïc söû duïng trong vieäc keát noái kit 8086 laø EPROM 2764:

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang35
1). EPROM 2764:
Vpp 1 28 Vcc
A12 2 27 PCM
A7 3 26 NC
A6 4 25 A8
A5 5 24 A9
A4 6 23 A11
A3 7 2764 22 OE
A2 8 21 A10
A1 9 10 CE
A0 10 19 D7
D0 11 18 D6
D1 12 17 D5
D2 13 16 D4
GND 14 15 D3
Khi ñoïc EPROM coù caùc ñaëc tính sau:
CE [20] Hình II.7:ViSô(low)
ñoà chaân 2764
OE [22] Vi (low)
PGM [27] Vcc (high)
Vpp [1] Vcc
Vcc [28] Vcc
A0  A15 Address
D0  D7 Data
Caùc cheá ñoä hoaït ñoäng cuûa EPROM 2764:
Traïng thaùi CE OE PGM Vpp Out
Ñoïc Vl Vl Vh Vcc Out
Chôø Vh X X Vcc Taét
Laäp trình Vl X Vl 21V In
Kieãm tra Vl Vl Vh 21V Out
Caám laäp Vh X X 21V Taét
trình

OE
D8  D15
CS
A14 1 28 Vcc

A12 2 27 WE
MEMR
A7 3 OE 26 A13

A6 4 D0  D7
25 A8
CS töø boä giaõi CS
A5 5 24 A9
maõ
A4 6keát noái boä giaûi
Hình II.8: Moâ hình 23 A11
maõ vôùi
A
2). RAM 62256: boä nhôù
3 7
62256 22 OE

Sô ñoà chaân: A2 8 21 A10

A1 9 10 CE

A0 10 19 D7

D0 11 18 D6

D1 12 17 D5
GVHD: NGUYEÃN ÑÌNH PHUÙ
D2 13 16 D4
SVTH: NGOÂ VAÊN BÌNH
GND 14 15 D3

Hình II.9: Sô ñoà chaân 62256


Luaän vaên toát nghieäp trang36

Baûng traïng thaùi laøm vieäc:


MODE WR CS CS OE OUTPUT
Not select X H X X High Z
Not select X X L X High Z
Output disable H L H H High Z
Read H L H L Dout
Write L L H H Dout
Sô ñoà keát noái boä nhôù RAM vôùi vi xöû lyù:
BHE OD
CS D
1 W D8  D15
E
OE
A
0 EVE
CS MEM
0 N
W D0  D7
W
E
MEM OE
R
Thöïc hieän Hình
vieäcII.10:
giaûiSô ñoàbaèng
maõ keát noái
caùcRAM vôùi vigiaõi
vi maïch xöû maõ: 74LS138, 74LS139,
lyù
74LS145, 74LS154.
Khi muoán coù nhieàu ñaàu ra choïn töø boä giaûi maõ maø vaãn duøng caùc
maïch logic ñôn giaûn thì vieäc thieát keá trôû neân raát coàng keành do soá löôïng
caùc maïch taêng leân. Trong tröôøng hôïp nhö vaäy ta thöôøng söû duïng caùc maïch
giaûi maõ coù saün. Moät trong caùc maïch giaõi maõ coù saün hay söû duïng laø
caùc IC 74138, 74139, 74154, 74145…

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang37
V. IC GIAÛI MAÕ 74LS138:
1). Sô ñoà chaân 74LS138:

74LS138
A 1 16 Vcc
B 2 15 O0
C 3 14 O1
E1 4 13 O2
E2 5 12 O3
E3 6 11 O4
O7 7 10 O5
GND 8 9 O6
Baûng traïng thaùi :
INPUT Hình II.11: Sô ñoà chaân 74LS138
OUTPUT
ENABLE SELECT
G1 G2* C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
X H X X X H H H H H H H H
L X X X X H H H H H H H H
H L L L L L H H H H H H H
H L L L H H L H H H H H H
H L L H L H H L H H H H H
H L L H H H H H L H H H H
H L H L L H H H H L H H H
H L H L H H H H H H L H H
H L H H L H H H H H H L H
H L H H H H H H H H H H L
G2 = G2A + G2B
2). Maïch giaõi maõ cuï theå nhö sau:

Bus A A1  A13
Bus B D0  D7

OE
CS0
Y0 CE
A16 A Y1 CS1
A17 B Y2 CS2
A18 C
Y3 CS3
Y4 CS4
Y5 CS5
G1 Y6 CS6
Y7 CS7
Hình II.12: Sô ñoà maïch giaûi maõ

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang38
Chöông II
VI MAÏCH GIAÕI MAÕ HIEÅN THÒ 8279
___ oOo ___

I. CAÁU TRUÙC PHAÀN CÖÙNG 8279:


1). Sô ñoà khoái:

RESET Vcc
CLK Control and GND
timing registers 16 byte
IRQ display OUT A2  A0
memory

DB1 DB0 Data buffer OUT B2  B0


register

RD 8 byte FIFO RL7  RL0


sensor memony
WR CNTL/STB
Status register SHIFT
CS SL3  SL0
A0 Scan counter

- 8279 coù moät boä nhôù RAM 16 byte duøng ñeå hieån thò vaø moät
boä nhôù RAM duøng Hình
ñeåIII.1: Sô ñoà
chöùa maõkhoái
cuûaviphím
maïchnhaán.
giaûi maõ hieån
Trong thò coù
8279 8279moät thanh
ghi ñeäm döõ lieäu, khi döõ lieäu ñöôïc vi xöû lyù gôûi tôùi thì noù ñöôïc chuyeån tôùi
thanh ghi naøy. Ngoaøi ra 8279 coøn chöùa thanh ghi traïng thaùi ñeå chæ traïng thaùi
cuûa 8279 taïi moät thôøi ñieåm.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang39
2). Sô ñoà chaân 8279:

RL2 1 40 Vcc

RL3 2 39 RL1

CLK 3 38 RL0

IRO 4 37 CNTL/ST

RL4 5 36 B

RL5 6 35 SHIFT

RL6 7 34 SL3

RL7 8 33 SL2

RESE 9 32 SL1

T 10
RD 11
8279 31 SL0

30 OUT B0

WR 12 29 OUT B1

DB0 13 28 OUT B2

DB1 14 27 OUT B3

DB2 15 26 OUT A0

DB3 16 25 OUT A1

DB4 17 24 OUT A2

DB5 18 23 OUT A3

DB6 19 22 BD

DB7 20 21 CS

3). Sô ñoà logic:


V SS A0
Hình III.2: Sô ñoà chaân 8279

RL7-
RL0 Key
DAT SHIFT data
A
CNTR/S
RD TB
CPU SL0-SL3 Scan
Interface WR
CS
OUT A3-
A0 Display
A0 data
RESE
T
B
CLK OUT B3-
D
B0
Hình III.3: Sô ñoà Logic 8279
4). Teân caùc chaân 8279:
Teân I/O Chöùc naêng
DB7 – DB0 I/O Data Bus (Bi-direction)
CLK I Clock Input
RESET I Reset Input

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang40
CS\ I Chip Select
RD\ I Read Input
WD\ I Write Input
A0 I Address
IRQ O Interrupt Request Input
SL0-SL3 O Scan Lines
RL0-RL3 I Return Lines
SHIFT I Shift Input
CNTL/STB I Control/Stroble Input
OUT A3-0 O Display (A) Output
OUT B3-0 O Display (B) Output
BD\ O Blank Display Output
8279 keát noái vôùi vi xöû lyù thoâng qua 3 bus goàm bus döõ lieäu D7-D0, bus
ñòa chæ coù 1 ñöôøng A0, bus ñieàu khieån RD\, WR\, CE\, Reset, IRQ, CLK gioáng
nhö 8085A.
Tín hieäu choïn CE\ ñöôïc keát noái vôùi moät ngaõ ra naøo ñoù cuûa IC giaõi
maõ ñòa chæ IO hoaëc IC giaõi maõ ñòa chæ boä nhôù. Neáu xem 8279 laø moät boä
nhôù thì boä nhôù naøy coù hai oâ nhôù.
II. CAÁU TRUÙC PHAÀN MEÀM CUÛA 8279:
IC 8279 coù 1 ñöôøng ñòa chæ A0 coù chöùc naêng löïa choïn nhö sau:
- A0 = 0: 8279 xem döõ lieäu töø vi xöû lyù gôûi ñeán ñeå choïn döõ lieäu
hieån thò.
- A0 = 1: 8279 xem döõ lieäu töø vi xöû lyù gôûi ñeán laø döõ lieäu cuûa leänh
ñieàu khieån 8279.
Caùc leänh ñieàu khieån 8279:
 Keyboard/Display Mode Set:
Maõ:
0 0 0 D D K K K
Trong ñoù 2 bit DD duøng ñeå thieát laäp Mode hieån thò, 3 KKK duøng ñeå
thieát laäp Mode queùt baøn phím.
Hai bit DD:
DD = 00: hieån thò 8 kyù töï – loái vaøo traùi.
DD = 01: hieån thò 16 kyù töï – loái vaøo traùi.
DD = 10: hieån thò 8 kyù töï – loái vaøo phaûi.
DD = 11: hieån thò 16 kyù töï – loái vaøo phaûi.
Ba bit KKK :
000 endcode scan keyboard – 2 key lockout.
001 decode scan keyboard – 2 key lockout.
010 encode scan keyboard – N key rollover.
011 decode scan keyboard – N key rollover.
100 encode scan sensor matrix.
101 decode scan sensor matrix.
110 stroble input, encode display scan.
111 stroble input, decode display scan.
 Program clock:
Maõ:

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang41
0 0 1 P P P P P
Leänh naøy coù chöùc naêng chia taàn soá xung clock ôû ngoõ vaøo CLK ôû
chaân soá 3, caùc bit PPPPP duøng ñeå xaùc ñònh soá chia naèm trong khoaûng töø 2
ñeán 30, taàn soá hoaït ñoäng cuûa maïch queùt hieån thò vaø choáng doäi cuûa 8279
thöôøng laø 100kHz, neáu taàn soá ôû ngoõ vaøo laø 20MHz thì chia cho 20 ta ñöôïc
100kHz, khi ñoù caùc bit PPPPP coù giaù trò laø 10100.

 Read FIFO/sensor RAM:


Maõ:
0 1 0 AI X A A A
8279 coù 8 byte RAM beân trong ñeå chöùa maõ cuûa phím aán hay maõ cuûa
caùc sensor ta coù theå ñieàu chænh caùc bit AAA töông öùng. Boä nhôù thuoäc kieåu
FIFO.
AI (Automatically increment): ôû möùc 1 coù chöùc naêng laøm cho con troû töï
ñoäng taêng leân byte keá tieáp ñeå saün saøng cho vieäc ñoïc döõ lieäu. Neáu AI = 0
con troû seõ khoâng thay ñoåi.
 Read Display RAM:
Maõ:
0 1 1 AI A A A A
8279 coù 16 byte RAM beân trong do con troû 4 bit AAAA quaûn lyù, 16 byte
RAM naøy duøng ñeå chöùa döõ lieäu caàn hieån thò do vi xöû lyù gôûi tôùi, ñeå ñoïc
döõ lieäu ôû 8 oâ nhôù naøo trong vuøng nhôù RAM naøy ta coù theå ñieàu chænh
caùc bit AAAA töông öùng.
AI (Automatically Increment): ôû möùc cao laøm con troû töï ñoäng taêng leân
keá ñeå saün saøng ñoïc byte döõ lieäu. Neáu AI = 0 con troû seõ khoâng thay ñoåi.
 End Interrupt:
Maõ:
1 1 1 E 0 0 0 0
Bit E = 1 seõ xoùa ngaét IRQ veà möùc Logic 0.
 Leänh Write Display RAM:
Maõ:
1 0 0 AI A A A A
8279 coù 16 byte RAM beân trong do con troû 4 bit AAAA quaûn lyù, 16 byte
RAM naøy duøng ñeå chöùa döõ lieäu caàn hieån thò do vi xöû lyù gôûi tôùi, ñeå ñoïc
döõ lieäu ôû 8 oâ nhôù naøo trong vuøng nhôù RAM naøy ta coù theå ñieàu chænh
caùc bit AAAA töông öùng.
AI (Automatically Increment): ôû möùc cao laøm con troû töï ñoäng taêng leân
keá ñeå saün saøng ñoïc byte döõ lieäu. Neáu AI = 0 con troû seõ khoâng thay ñoåi, do
ñoù, byte döõ lieäu sau seõ ghi ñeø leân byte döõ lieäu tröôùc ñoù.
 Leänh Clear:
+ Maõ :
1 1 0 CD CD CD CF CA
+ Nhöõng Bit CD trong leänh naøy duøng ñeå xoùa taát caû caùc haøm cuûa
CD ñeánCmoät
RAM hieån thò D
CD maõ xoùa ñöôïc choïn loïc nhö sau:
Taát caû laø 0 ( X : khoâng quan taâm )
0 X AB = Hex 20 ( 0010 0000)
GVHD: NGUYEÃN ÑÌNH PHUÙ0
1 Taát caû laø 1 SVTH: NGOÂ VAÊN BÌNH
1 1 Cho pheù xoùa hieån thò khi =1 ( hoaëc bôûi CA
= 1)
Luaän vaên toát nghieäp trang42

+ Trong suoát thôøi gian RAM hieån thò ñang xoùa noù khoâng ñöôïc vieát
vaøo, Bit lôùn nhaát cuûa töø traïng thaùi FIFO ñöôïc ñaët leân 1 trong suoát
thôøi gian naøy. Khi maø RAM hieån thò ñöôïc söû duïng laïi thì Bit naøy
ñöôïc Reset veà 0.
+ Neáu nhö Bit CF tích cöïc (CF =1), töø traïng thaùi FIFO seõ bò xoùa vaø
ngoõ ra Interrupt bò Reset.
+ Bit CA coù chöùc naêng xoùa taát caû caùc Bit, noù coøn aûnh höôûng
bôûi Bit CD vaø CF. Noù duøng Bit CD ñeå xoùa maõ treân RAM hieån thò
vaø noù cuõng xoùa luoân traïng thaùi FIFO.
III. ÖÙNG DUÏNG CUÛA 8279:
8279 laø IC chuyeân veà giaûi maõ hieån thò Led 7 ñoaïn vaø queùt phím theo
nhieàu phöông phaùp khaùc nhau.
Döõ lieäu caàn hieån thò töø vi xöû lyù gôûi ñeán seõ ñöôïc chöùa trong 16 byte
RAM beân trong ñöôïc goïi laø boä nhôù hieån thò. Caùc tín hieäu naøy laàn löôït
gôûi ra treân 8 ñöôøng tín hieäu töø A3-0 ñeán B3-0.
Caùc ñöôøng tín hieäu SL3-0 duøng ñeå queùt, döõ lieäu treân ñöôøng naøy coù
theå ñöôïc thieát laäp theo kieåu Encode vaø Decode tuøy thuoäc vaøo kieåu thieát keá
phaàn cöùng. Caùc ñöôøng naøy coù hai chöùc naêng vöøa queùt hieän thò vöøa queùt
giaûi maõ baøn phím.
Caùc ñöôøng tín hieäu RL7-0 laø caùc ñöôøng tín hieäu input keát hôïp vôùi
caùc ñöôøng tín hieäu queùt SL3-0 taïo thaønh ma traän phím, phím ñöôïc nhaán seõ
laøm cho moät hoaëc nhieàu ngoõ RL xuoáng möùc 0, keát hôïp vôùi caùc ñöôøng tín
hieäu queùt seõ cho bieát maõ cuûa phím nhaán. Chuù yù caùc ñöôøng SL3-0 phaûi ôû
cheá ñoä Decode.
Caùc ngoû vaøo SHIFT vaø CNTL ñöôïc duøng ñeå môû roäng caùc phím toå
hôïp.
Soá löôïng caùc phím thieát keá coù theå leân tôùi 64 phím rôøi.
8279 gôûi döõ lieäu trong vuøng nhôù RAM hieån thò ra caùc Led vaø töï ñoäng
queùt baøn phím ñeå tìm phím bò taùc ñoäng vaø töï choáng doäi vaø sau ñoù thieát
laäp maõ cuûa phím bò nhaán, tröôùc khi söû duïng 8279 ngöôøi thieát keá cuõng nhö
ngöôøi söû duïng caùc töø ñieàu khieån gôûi ra 8279 khi bit A0 = 1. Döõ lieäu ñoïc
vaøo hoaëc gôûi ra 8279 khi bit A0 = 0.
Khi coù phím bò nhaán, 8279 seõ töï ñoäng choáng doäi sau 10,3 ms vaø kieåm
tra laïi moät laàn nöõa ñeå xem phím ñoù coù bò nhaán hay khoâng, neáu coøn thì
8279 seõ thieát laäp maõ cho phím naøy vaø löu tröõ maõ cuûa phím vaøo boä nhôù
RAM beân trong. Sau ñoù seõ baùo cho vi xöû lyù bieát ñaõ coù moät phím taùc
ñoäng vaø yeâu caàu vi xöû lyù nhaän maõ cuûa phím naøy baèng caùch taùc ñoäng
ñeán tín hieäu ngaét IRQ. Tín hieäu IRQ ñöôïc keát noái ñeán moät ngoõ vaøo ngaét
cuûa vi xöû lyù vaø chöông trình phuïc vuï cho ngaét naøy laø chöông trình ngaét

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang43
phím. Nhieäm vuï cuûa vi xöû lyù laø ñoïc maõ cuûa phím bò aán vaøo ñeå xöû lyù
vaø Reset ngaét cuûa 8279 veà möùc logic ñeå chuaån bò cho phím tieáp theo.
Khung maõ döõ lieäu cuûa phím bò nhaán nhö sau:
CNTL SHIFT SCAN RETUNE
Treân ñaây nhoùm thöïc hieän vöøa trình baøy caáu truùc phaàn cöùng, phaàn
meàm vaø öùng duïng cuûa vi maïch giaûi maõ hieån thò 8279.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang44
Chöông III
VI MAÏCH GIAO TIEÁP NGOAÏI VI 8255A
___ oOo ___

I. CAÁU TRUÙC PHAÀN CÖÙNG 8255A:


8255A laø IC ngoaïi vi ñöôïc cheá taïo theo coâng ngheä LSI duøng ñeå giao
tieáp song song giöõa vi xöû lyù vaø thieát bò beân ngoaøi.
Maïch 8255A thöôøng ñöôïc goïi laø maïch phoái gheùp vaøo/ra laäp trình ñöôïc
(Programmable Peripheral Interface – PPI). Do khaû naêng meàm deûo trong trong
caùc öùng duïng thöïc teá noù laø maïch phoái gheùp ñöôïc duøng raát phoå bieán cho
caùc heä vi xöû lyù 8 bit – 16 bit.
1). Sô ñoà khoái cuûa 8255A:

GROUP GROUP
A A IO
POWER +5V CONTROL PORT A PA7 – PA0
SUPPLIES
GND

GROUP
DATA A IO
BUS PORT C PC7 – PC4
BUFFER UPPER

GROUP
B IO
PORT C PC3 – PC0
LOWER

READ
WRITE
CONTROL
WR\ LOGIC GROUP IO
GROUP B
RD\ B PB7 – PB0
PORT B
A1 CONTROL

A0
RESET

CS\
Hình IV.1: Sô ñoà khoái 8255A

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang45
2). Sô ñoà chaân vaø sô ñoà Logic:

PA3 1 40 PA4
PA2 2 39 PA5
PA1 3 38 PA6
PA0 4 37 PA7
RD\ 5 36 WR\
CS\ 6 35 RESET
GND 7 34 D0
A1 8 33 D1
A0 9 32 D2
PC7 10 8255A 31 D3
PC6 11 30 D4 PA7-PA0
D7-D0
PC5 12 29 D5
PC4 13 28 D6 PC7-PC4

PC0 14 27 D7
PC1 15 26 VCC
PC2 16 25 PB7 RESE PC3-PC0
PC3 17 24 PB6 T
PB0 18 23 PB5 A0 PB7-PB0
PB1 19 22 PB4 A1
PB3).
2 20 Teân caùc chaân:
21 PB3
Hình IV.3: Sô ñoà Logic 8255A
HìnhD7 - D0
IV.2: Data bus (Bi-Direction)
Sô ñoà chaân 8255A
RESET Reset input (noái vôùi tín hieäu Reset toaøn boä heä)
CS\ Chip Select
WR\ Write input
RD\ Read input
A0, A1 Port Address
PA7 – PA0 Port A
PB7 – PB0 Port B
PC7 – PC0 Port C

8255A giao tieáp vôùi vi xöû lyù thoâng qua 3 bus: bus döõ lieäu 8 bit D 7-D0, bus
ñòa chæ, bus ñieàu khieån RD\; WR\; CS\; Reset.
 Maõ leänh, thoâng qua traïng thaùi vaø vaø döõ lieäu ñeàu ñöôïc truyeàn
treân 8 ñöôøng döõ lieäu D7-D0. Vi xöû lyù gôûi döõ lieäu ñeán 8255A hoaëc vi xöû
lyù ñoïc döõ lieäu töø 8255A tuøy thuoäc vaøo leänh ñieàu khieån. Caùc ñöôøng tín
hieäu RD\, WR\ cuûa 8255A ñöôïc keát noái vôùi caùc ñöôøng RD\, WR\ cuûa vi xöû
lyù.
 Tín hieäu Reset duøng ñeå khôûi ñoäng 8255A khi caáp ñòeän, khi bò Reset
caùc thanh ghi caùc thanh ghi beân trong 8255A ñeàu bò xoùa vaø 8255A ôû traïng
thaùi saün saøng laøm vieäc. Khi giao tieáp vôùi vi xöû lyù ngoû vaøo tín hieäu Reset
naøy ñöôïc keát noái vôùi tín hieäu Reset Out cuûa vi xöû lyù.
 Tín hieäu Chip Select (CS\) duøng ñeå löïa choïn 8255A khi vi xöû lyù giao
tieáp vôùi nhieàu 8255A.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang46
8255A coù 3 port xuaát nhaäp (I/O) coù teân port A, port B, port C, moãi port 8
bit. Port A goàm caùc bit PA0-PA7, port B goàm caùc bit PB0-PB7 vaø port C goàm
PC0-PC7. Caùc port naøy coù theå laø caùc port input hoaëc output tuøy thuoäc vaøo
leänh ñieàu khieån, leänh ñieàu khieån do vi xöû lyù gôûi tôùi chöùa trong thanh ghi
(coøn goïi laø thanh ghi ñieàu khieån) ñeå ñieàu khieån 8255A.
Caùc ñòa chæ A1-A0 cuûa 8255A duøng ñeå löïa choïn caùc port vaø thanh ghi,
A1A0=002 duøng ñeå choïn Port A, A1A0 = 012 duøng ñeå choïn Port B, A1A0 = 102
duøng ñeå choïn Port C, A1A0 = 112 duøng ñeå choïn thanh ghi ñieàu khieån. Trong sô
ñoà khoái 8255A, caùc port I/O chia laøm hai nhoùm: nhoùm A goàm port A vaø 4 bit
cao cuûa port C, nhoùm B goàm port B vaø 4 bit thaáp cuûa port C. Ñeå söû duïng
caùc port cuûa 8255A ngöôøi laäp trình phaûi gôûi töø ñieàu khieån ra thanh ghi ñieàu
khieån ñeå 8255A ñònh caáu hình cho caùc port ñuùng theo yeâu caàu maø ngöôøi
laäp trình mong muoán.
4). Caáu truùc töø ñieàu khieån cuûa 8255A:
D7D6D5D4D3D2D1D0

GROUP B
PORT C (LOWER)
1 = INPUT
0 = OUTPUT PORT
B
1 = INPUT
0 = OUTPUT
MODE SELECTION
0 = MODE 0
1 = MODE 1
GROUP A
PORT C (UPPER)
1 = INPUT
0 = OUTPUT PORT
A
1 = INPUT
0 = OUTPUT
MODE SELECTION
00 = MODE 0
01 = MODE 1
1X = MODE 2
MODE SET FLAG
II. CAÁU TRUÙC PHAÀN MEÀM CUÛA 8255A:
1 = ACTIVE
Do caùc port cuûa 8255A ñöôïc chia laøm hai nhoùm nhoùm A vaø nhoùm B
taùch rôøi neân töø ñieàu khieån cuûa 8255A cuõng ñöôïc chia laøm hai nhoùm.
 Caùc bit D2D1D0 duøng ñeå ñònh caáu hình cho nhoùm B:
 Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa port C, D0 = 0 port C thaáp
laø port xuaát döõ lieäu (output), D0 = 1 port C thaáp laø port nhaäp döõ lieäu
(input).

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang47

 Bit D1 duøng thieát laäp port B, D1 = 0 port B laø port xuaát döõ lieäu
(output), D1 = 1 port B laø port nhaäp döõ lieäu (input).
 Bit D2 duøng thieát laäp Mode ñieàu khieån cuûa nhoùm B:
 D2 = 0: nhoùm B hoaït ñoäng ôû Mode 0.
 D2 =1: nhoùm B hoaït ñoäng ôû Mode 1.
 Caùc bit D6, D5, D4, D3 duøng ñeå ñònh caáu hình cho nhoùm A:
 Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa port C, D3 = 0 port C laø
port xuaát döõ lieäu (output), D3 = 1 port C laø port nhaäp döõ lieäu (input).
 Bit D4 duøng ñeå thieát laäp port A, D4 = 0 port A laø port xuaát döõ
lieäu(output), D4 = 1 port A laø port nhaäp döõ lieäu (input).
 Bit D6D5 duøng thieát laäp Mode ñieàu khieån cuûa nhoùm A:
 D6D5 = 00: nhoùm A hoaït ñoäng ôû Mode 0.
 D6D5 = 01: nhoùm A hoaït ñoäng ôû Mode 1.
 D6D5 = 1X: nhoùm A hoaït ñoäng ôû Mode 2.
1). Caùc nhoùm A, B ñöôïc caáu hình ôû Mode 0:
Töø ñieàu khieån nhoùm A & B hoaït ñoäng ôû Mode 0:
1 0 0 D4 D3 0 D1 D0
Ôû Mode 0 caùc port A, port B, port C thaáp vaø port C cao laø caùc port xuaát
hoaëc nhaäp döõ lieäu ñoäc laäp. Do coù 4 bit ñeå löïa choïn neân coù 16 töø ñieàu
khieån khaùc nhau cho 16 traïng thaùi xuaát nhaäp cuûa 4 port.
2). Caùc nhoùm A & B ñöôïc caáu thình ôû Mode 1:
Töø ñieàu khieån nhoùm A B hoaït ñoäng ôû Mode 1:
1 0 1 D4 D3 1 D1 D0
ÔÛ Mode 1 caùc port A & B laøm vieäc xuaát nhaäp coù choát (Stroble I/O).
ÔÛ Mode naøy hai port A & B hoaït ñoäng ñoäc laäp vôùi nhau vaø moãi port coù 1
port 4 bit ñieàu khieån/döõ lieäu. Caùc port 4 bit ñieàu khieån / döõ lieäu ñöôïc hình
thaønh töø 4 bit thaáp vaø 4 bit cao cuûa port C.
Khi 8255A ñöôïc caáu hình ôû Mode 1, thieát bò giao tieáo muoán 8255A nhaän
döõ lieäu, thieát bò ñoù phaûi taïo ra tín hieäu yeâu caàu 8255A nhaän döõ lieäu,
nguôïc laïi 8255A muoán gôûi tín hieäu ñeán thieát bò khaùc, 8255A phaûi taïo ra tín
hieäu yeâu caàu thieát bò ñoù nhaän döõ lieäu, tín hieäu yeâu caàu ñoù goïi laø tín
hieäu Strobe.
 Nhoùm A laøm vieäc ôû caáu hình Mode 1:
 Port A ñöôïc caáu hình laø port nhaäp döõ lieäu.
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ sau ñaây:

Töø ñieàu khieån : INT PA7-PA0


1 0 1 1 D3 X X X E
A PC4 STBA
PC5 IBFA

PC3 INTRA
RD
PC6,7 I/O
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp trang48

Caùc ñöôøng tín hieäu cuûa port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu
cuûa port A.
Bit PC4 trôû thaønh bit STBA (Stroble Input, taùc ñoäng möùc thaáp), ñöôïc
duøng ñeå choát döõ lieäu ôû caùc ngoû vaøo PA7 – PA0 vaøo maïch choát beân trong
8255A.
Bit PC5 trôû thaønh bit IBTA (Input Bufer Full, taùc ñoäng möùc cao), duøng
ñeå baùo cho thieát bò beân ngoaøi bieát döõ lieäu ñaõ ñöôïc choát beân trong.
Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng ôû möùc cao), bit
naøy coù möùc Logic 1 khi hai bit STBa = 1, IBF = 1 vaø bit INTEa (Interrupt Enable)
ôû beân trong 8255Abaèng 1. Bit INTE a ñöôïc thieát laäp möùc Logic 1 hay 0 döôùi
söï ñieàu khieån cuûa phaàn meàm duøng caáu truùc Set/Reset cuûa 8255A. ÔÛ hình
veõ treân, bit INTEa = 1 duøng ñeå cho pheùp tín hieäu IBF xuaát hieän taïi ngoõ ra
INTRA cuûa coång AND. Tín hieäu INTA taùc ñoäng ñeán ngoõ vaøo cuûa ngaét vi
xöû lyù ñeå baùo cho vi xöû lyù bieát: döõ lieäu môùi ñaõ xuaát hieän ôû port A
chöông trình phuïc vuï ngaét seõ ñoïc döõ lieäu vaøo xoùa yeâu caàu ngaét.
Caùc bit coøn laïi cuûa port C: PC 6, PC7 laø caùc bit xuaát/nhaäp bình thöôøng
tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình treân. Caùc bit XXX ñöôïc duøng
ñeå thieát laäp cho nhoùm B.
 Port A ñöôïc caáu hình laø port xuaát döõ lieäu:
Chöùc naêng cuûa ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:
Töø ñieàu khieån :
1 0 1 0 D3 X X X INT PA7-PA0
E
A PC7 OBFA
PC6 ACKA

PC3 INTRA
W
R PC4,5 I/O

Bit PC7 trôû thaønh bit OBFa (Output Buffer Full, taùc ñoäng möùc thaáp), khi
coù döõ lieäu töø vi xöû lyù gôûi ra port A, tín hieäu OBFa seõ yeâu caàu thieát bò
beân ngoaøi nhaän döõ lieäu.
Bit PC6 trôû thaønh bit ACKa (Acknowledge Input, taùc ñoäng möùc thaáp)
thieát bò nhaän döõ lieäu duøng tín hieäu naøy ñeå baùo cho 8255A bieát tín hieäu ñaõ
ñöôïc nhaän vaø saún saøng nhaän döõ lieäu tieáp theo.
Bit PC3 trôû thaønh bit INTRa (Interrupt Request, taùc ñoäng möùc cao), bit
naøy coù möùc Logic khi hai bit OBF a = 1, ACKa = 1 vaø bit INTEa (Interrupt
Enable) ôû beân trong 8255A ôû möùc 1. Tín hieäu INTRa taùc ñoäng ñeán ngoõ vaøo
ngaét cuûa vi xöû lyù ñeå baùo cho vi xöû lyù bieát: thieát bò beân ngoaøi ñaõ nhaän
döõ lieäu ôû port A.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang49
Caùc bit coøn laïi cuûa port C: PC 4, PC5 laø caùc bit xuaát/nhaäp bình thöôøng
tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình treân. Caùc bit XXX duøng ñeå
thieát laäp cho nhoùm B.
 Nhoùm B laøm vieäc ôû Mode 1:
 Port B ñöôïc caáu hình laø port nhaäp döõ lieäu :
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:

Töø ñieàu khieån:


INT PB7-
1 X X X X 1 1 X PB0
E
B PC2 STBB
PC1 IBFB

PC0 INTRB
RD
Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö nhoùm A hoaït ñoäng ôû
Mode 1.
 Port B ñöôïc caáu hình laø port xuaát döõ lieäu:
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:

Töø ñieàu khieån: INT PB7-


1 X X X X 1 0 X E PB0
B PC1 OBFB
PC2 ACKB

PC0 INTRB
Chöùc naêng cuûa caùc bit ñieàu khieånW gioáng nhö nhoùm A hoaït ñoäng ôû
R
Mode 1.
Caùc bit XXX ñöôïc duøng thieát laäp cho nhoùm A, bit D 0 khoâng coù taùc
duïng trong tröôøng hôïp caû hai nhoùm cuøng laøm vieäc ôû Mode 1.
3). Nhoùm A cuûa 8255A laøm vieäc ôû Mode 2: PC3 INTR
Mode 2 laø kieåu hoaït ñoäng Stoble Bi-directional IO, söï khaùc bieät A
vôùi
Mode 1 laø port coù hai chöùc naêng xuaát – nhaäp döõ lieäu.
Töø ñieàu khieån khi hai nhoùm A hoaït ñoäng ôû Mode 2:PA7-PA0
1 1 X X X X X X
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình
PC7 sau: OBFA
Töø ñieàu khieån:
PC6 ACK
1 0 1 1 D3 X X X INTE A

INTE
RD 2 PC4 STBA
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂPC
VAÊN
5 BÌNH
IBFA
WR
PC2,1,0 I/O
Luaän vaên toát nghieäp trang50

Caùc ñöôøng tín hieäu cuûa port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ
lieäu cuûa port A.
Bit PC7 trôû thaønh bit OBFa, PC6 trôû thaønh bit ACKa, PC4 trôû thaønh bit
STBa, PC5 trôû thaønh IBFa vaø bit PC3 trôû thaønh bit INTRa. Chöùc naêng cuûa
caùc ñöôøng tín hieäu gioáng nhö Mode 1, chæ khaùc laø tín hieäu ngoû ra INTRa =1,
INTE1 = 1 hoaëc IBFa = 1, INTE2 = 1.
Caùc bit PC 2,1,0 coøn laïi coù theå laø caùc bit I/O tuøy thuoäc vaøo bit ñieàu
khieån c3 nhoùm B.
Chuù yù khi nhoùm A laøm vieäc ôû Mode 2, nhoùm B chæ ñöôïc pheùp hoaït
ñoäng ôû Mode 0.
Caáu hình cuûa töø ñieàu khieån Set/Reset bit INTE khi 8255A hoaït ñoäng ôû
Mode 1 hoaëc Mode 2 ñöôïc trình baøy ôû hình sau:

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang51

D7D6D5D4D3D2D1D0

X X X
BIT SET / RESET
1 = SET
Don’t care
0 = RESET

BIT SELECT
0123456701010101B000110011B10000111
1B2

BIT SET / RESET FLAG


0 = ACTIVE
Caáu hình naøy coøn cho pheùp Set/Reset töøng bit cuûa port C. Töø ñieàu
khieån naøy khaùc vôùi töø ñieàu khieån caáu hình laø bit D7 = 0.
Bit D0 duøng ñeã Set/Reset bit INTE, khi D0 = 1 thì INTE = 1 (cho pheùp ngaét),
khi D0 = 0 thì INTE = 0 (khoâng cho pheùp ngaét). Ba bit D 1, D2, D3 duøng ñeå choïn
moät bit cuûa port C, gaùn möùc Logic cuûa bit D0 cho bit cuûa port ñaõ choïn.
Trong thöïc teá port A vaø port B thöôøng ñöôïc caáu hình vôùi nhieàu Mode
khaùc nhau. Ví duï nhoùm A hoaït ñoäng ôû Mode 2 nhoùm B laøm vieäc ôû Mode 0.
III. THIEÁT KEÁ GIAO TIEÁP VI XÖÛ LYÙ VÔÙI 8255A:
Giao tieáp giöõa 8255A vôùi vi xöû lyù gaàn gioáng nhö vi xöû lyù vôùi boä
nhôù, chæ coù vaøi ñieåm khaùc bieät laø:
Dung löôïng giao tieáp IO cuûa vi xöû lyù thaáp hôn so vôùi boä nhôù, vôùi vi
xöû lyù 8255A coù 16 ñöôøng ñòa chæ A 0 – A15 ñeå giao tieáp vôùi boä nhôù, khi giao
tieáp vôùi IO vi xöû lyù chæ söû duïng 8 ñöôøng ñòa chæ A0 – A7.
Caùc IC giao tieáp IO coù theå thieát keá theo hai kieåu: kieåu IO vaø kieåu boä
nhôù.
1). Kieåu IO:
Khi thieát keá caùc IC giao tieáp IO theo kieåu IO thì vi xöû lyù giao tieáp vôùi
IO thoâng qua hai leänh IN Add – port vaø Out Add – port. Döõ lieäu giao tieáp luoân
chöùa trong thanh ghi A ñòa chæ port (Add – Port) coù ñoä daøi 8 bit.
Khi thieát keá giao tieáp vôùi vi xöû lyù, ngöôøi thieát keá phaûi ñaët ra moät
yeâu caàu cuï theå laø soá löôïng IC giao tieáp laø bao nhieâu. 8255A duøng 8 bit ñòa
chæ thaáp ñeå giao tieáp vôùi IO, neáu moãi moät ñòa chæ truy xuaát moät oâ nhôù IO
thì 8255A coù khaû naêng truy xuaát 256 oâ nhôù IO.
8255A coù hai ñöôøng ñòa chæ ñeã choïn ba port vaø moät thanh ghi ñieàu
khieån vaø coù toång coäng laø 4 oâ nhôù thì soá löôïng IC 8255A coù theå giao tieáp
vôùi vi xöû lyù laø 64.
2). Kieåu boä nhôù:
Khi thieát keá 8255A theo kieåu boä nhôù: veà chöùc naêng cuûa 8255A khoâng
coù gì thay ñoåi, chæ thay ñoåi veà ñòa chæ truy xuaát. Kieåu IO, ñòa chæ cuûa port

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang52
hay thanh ghi coù ñoä daøi 8 bit, kieåu boä nhôù, ñòa chæ cuûa port hay thanh ghi coù
ñoä daøi 16 bit gioáng nhö boä nhôù neân goïi laø kieåu boä nhôù.
Khi thieát keá 8255A theo kieåu boä nhôù thì moãi port hay moãi thanh ghi ñieàu
khieån cuûa 8255A ñöôïc xem laø töøng oâ nhôù. Khi ñoù vi xöû lyù giao tieáp vôùi
8255A gioáng nhö boä nhôù vaø hai leänh IN OUT khoâng coøn taùc duïng.
Kieåu boä nhôù chæ söû duïng trong caùc heä thoáng nhoû, ñôn giaûn.
IV. ÖÙNG DUÏNG CUÛA 8255A:
Vi maïch giao tieáp IO 8255A coù raát nhieàu öùng duïng trong caùc heä thoáng
ñieàu khieån duøng vi xöû lyù, 8255A ñoùng vai troø laø IC giao tieáp giöõa vi xöû
lyù vaø ñoái töôïng ñieàu khieån, ngoaøi ra 8522A coøn coù khaû naêng môû roäng tín
hieäu ñieàu khieån.
Caùc öùng duïng cuûa 8255A laø truyeàn döõ lieäu, giaõi maõ hieån thò, giaûi
maõ baøn phím, giao tieáp ñieàu khieån tuøy theo yeâu caàu.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang53
Chöông IV:
VIMAÏCH GIAO TIEÁP NOÁI TIEÁP 8251

I . Caáu truùc phaàn cöùng cuûa 8251:

1. Sô ñoà khoái:
D0-D7

Traïng thaùi Soá lieäu thu

Soá lieäu
phaùt vaø
leänh

TxD
Reset Bieán ñoåi
Logic
CLK song song-
ñieàu
C/D\ noái tieáp
khieån
RD\ ñoïc TxRDY
WR\ ghi Ñieàu TxE
CS\ khieån TxC\
phaùt

RxRDY
Syndet/Brk
DTR\
Ñieàu RxC\
DSR\
RTS\ khieån thu
Ñieàu
CTS\ khieån RxD
modem Bieán
2. Sô ñoà chaân 8251: ñoåi
noái
tieáp-
song
Hình 4.1 song

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH

Hình 4.2
Luaän vaên toát nghieäp trang54

CS\: chip-choïn vi maïch


RD\: read-ñoïc
WR\: write-ghi
C/D\: control/data\-ñieàu khieån/soá lieäu\
CLK: clock- nhòp
D0-D7: data bus i/o-bus döõ lieäu vaøo/ra
TxC\: transmit clock- nhòp truyeàn
RxC\: receive clock- nhòp nhaän
RST:reset- xoùa
DTR\: data terminal ready- soá lieäu cuûaTBAC saün saøng
DSR\- data set ready – boä soá lieäu saün saøng
RTS\: request to send – yeâu caàu göûi
CTS\: clear to send –xoùa göûi
TXD: transmit data- soá lieäu truyeàn
RxD: receive data – soá lieäu nhaän
TxRDy:transmit ready –saün saøng truyeàn
RxRDy: receive ready –saün saøng nhaän
TxEMTy- transmit register empty- thanh ghi truyeàn roãng
Syn/BRK: Synch/breack detect- ñoàng boä/ phaùt hieän ñöùt ñoaïn tin

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang55
3. Caáu truùc thanh ghi:

TxD\
CS\
Thanh ghi truyeàn
RD\
WR\
C/D\
D0 Thanh ghi ñeäm truyeàn
D1
RXD\
D2 Thanh ghi nhaän
D3
D4
Thanh ghi ñeäm nhaän
D5
D6
D7 Thanh ghi cheá ñoä
CLK
RST
RxRDy
TxRDy Thanh ghi leänh
TxEMTy
VCC
GND

Thanh ghi traïng thaùi

DSR\ DTR\ CTS\ RST\ Syn/BRK TXC\ RXC


Caáu truùc phaàn meàm:
- Thanh ghi ñieàu khieån.
- Thanh ghi traïng thaùi.
Hai thanh ghi treân coù cuøng ñòa chæ vôùi A 0=1, moät duøng ñeå ghi (WR\) leänh
ñieàu khieån vaø moät ñeå ñoïc (RD\) traïng thaùi. Hai thanh ghi ñeäm soá lieäu ghi
vaø ñoïc cuõng coù moät ñòa chæ A0=0) duøng ñeå ghi vaø ñoïc soá lieäu caàn
truyeàn vaø nhaän cuûa KGN.
Caùc leänh cho caùc thanh ghi treân baûng sau:

CE\ C/D\=A0 WR\ RD\ LEÄNH

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang56
0 1 0 1 Ghi vaøo thanh ghi ñieàu khieån (cheá ñoä,
0 1 1 0 leänh)
0 0 0 1 Ñoïc thanh ghi traïng thaùi
0 0 1 0 Ghi soá lieäu vaøo thanh ghi ñeäm truyeàn
1 X X X Ñoïc soá lieäu ôû thanh ghi ñeäm nhaän
Trôû khaùng cao (khoâng duøng)

 Thanh ghi ñieàu khieån:


- duøng ñeå ghi:
+ lôøi ñieàu khieån cheá ñoä.

D D D D D D D D
7 6 5 4 3 2 1 0 toác ñoä truyeàn
00 ñoàng boä
01 khoâng ñoàng boä
x1
10 khoâng ñoàng boä
x16
11khoâng ñoàng boä
x64
Bit chaün leû Ñoâ daøi kyù töï
X0 khoâng kieåm
5bit
tra
01 kieåm tra leû 6bit
10 kieåm tra chaün 7bit
8bit

Ñieàu khieån
khung
00 khoâng gía trò
01 moät bit döøng
Hình 43a 10 1.5 bit döøng
11 2bit döøng

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang57
+ lôøi leänh:
SBR
K
D7 D6 D5 D4 D3 D2 D1 D0

E IR RT ER RxE DT Tx
H S N
R EN

Cho pheùp phaùt


1= cho pheùp
0= caám
DSR SYN DET FE OE PE Tx EM
RxRDy TxRDy
Soá lieäu ñaàu cuoái
Saün saøng,
Chæ 8251 DTR\
saün saøng
nhaän
=1 1 chöõ hay leänh ñeå
Chæ modem Chæ truyeàn
ñaõ thanh ghi Cho pheùp thu
Saün saøng ñeå
bieán 1= cho pheùp RxRDy
truyeàn soá 0= caám RxRDy
lieäu ñoåi song Chæ saün saøng nhaän
soá lieäu ñeå truyeàn cho
song noái VXL
tieáp Göûi tín hieäu caét
Chæ chöõ
ñoàng boä ñaõ roãng 1= ñöa TxD = 0
ñöôïc 8251 0= hoaït ñoäng bình
nhaän thöôøng
Bít baùo sai chaün
leû
Xoaù côø baùo loãi
1=Pe=
xoaù côøcoù sai
1khi
PE, OE, FE
xoaù baèng ER cuûa
leänh

Yeâu caàu phaùt


1= ñöa tín hieäu
RTS/= 0

Bit chæ loãi traøn


Ngaét meàm
1=Khi VXL
xoaù caùcchöa ñoïc
thanh
lôøi tröôùc, lôøi sau
ghi
ñaõ tôùi thì
OE =1 xoaù baèng
Cheá
ER ñoä
cuûabaát ñoàng boä
leänh
1= tìm kyù töï ñoàng boä
Sync
Hình
- Duøng ñeå ñoïc lôøi traïng43b
thaùi:
D7 D6 D5 D4 D3 D2 D1 D0Bit
chæ sai khung
(khoâng ñoàng boä)

khi soá bit döøng


bò sai
FE= 1 xoaù baèng
GVHD: NGUYEÃN ÑÌNH PHUÙ ER =1 VAÊN BÌNH
SVTH: NGOÂ
Hình 4.3c
Luaän vaên toát nghieäp trang58

 Voùi lôøi ñieàu khieån cheá ñoä: hình 4.3a


- Cheá ñoä ñoàng boä: (trong, ngoaøi hai hay moät kyù töï ñoàng boä SYNC) bôûi
noäi dung ghi vaøo D7, D6.
- Toác ñoä truyeàn vôùi giaù trò:
+ D1D0=00: duøng cho cheá ñoä ñoàng boä , toác ñoä nôi thu baèng toác ñoä
nôi phaùt, khoâng coù söï thay ñoåi taàn soá xung nhòp.
+ D1D0=01: duøng cho cheá ñoä khoâng ñoàng boä, toác ñoä giöõa nôi thu vaø
nôi phaùt khoâng ñoåi.
+ D1D0=01: toác ñoä thu = toác ñoä truyeàn X1, töùc toác ñoä thu=toác ñoä
truyeàn.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang59
+D1D0=10: toác ñoä thu =16x toác ñoä truyeàn.
+ D1D0=11: toác ñoä thu =64x toác ñoä truyeàn.
- Ñoä daøi kyù töï, töùc ñoä daøi moät ñôn vò tin SDU vôùi caùc giaù trò D3d2 =
00 (5bit), 01(6bit) 10(7bit) vaø 11(8bit)
- Kieån tra chaün leû D5D4 =X0 9 (khoâng kieåm tra ), 01 (kieåm tra leû),
11(kieåm tra chaün).
- Ñieàu khieån khung, xaùc ñònh soá bit döøng.
Vôùi D7D0 = 01 – moät bit döøng.
D7D6 = 10 – moät bit röôõi döøng.
D7D6 = 11 – hai bit döøng.
 Vôùi lôøi leänh (hình 43b) ta coù theå ghi leänh ñeå:
- Ñieàu khieån modem: DTR(D1=1), RTS(D%=1).
- Xoaù meàm( baèng chöông trình coù IR (D6=1) ñeå xoaù veà 0 caùc thanh ghi
noäi.
- Xoùa côø baùo loãi ER (D4=1).
- Ghi cho pheùp truyeàn TxEN (D0=1) cho pheùp nhaän RxE(D2=1).
- Göûi tín hieäu caét (caùc bit baèng 0-Break) ñeå caét doøng tín hieäu lieân tuïc
ñang truyeàn.
- Tìm kyù töï ñoàng boä EH(D7=1) trong cheá ñoä ñoàng boä.
 Thanh ghi traïng thaùi (hình 43c): duøng ñeå ñoïc.
- Saün saøng truyeàn TxRDY (D0=1), saün saøng nhaän RXRDY(D1=1).
- Thanh ghi ñeäm soá lieäu roãng TxE (D2=1).
- Tuy chæ coù moät ñòa chæ (CS\=0, A1=1) nhöng ta coù theå ghi ñöôïc 2 lôøi ñieàu
khieån cheá ñoä vaø lôøi leänh ôû 2 thanh ghi ñieàu khieån khaùc nhau vì coøn coù
chung moät flip flop noäi ñieàu khieån laàn löôït vaøo hai thanh ghi treân.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang60

III . ÖÙNG DUÏNG 8251:

Giaûi
A 1 – A 11 maõ CS \ GND
ñiaï GND
D 0 –D 7 chæ
D 0 – D7 CRTTxD
Reset TxD
Rest CRTRxD
CLK RxD
CLK
A0 DTR
C/D\
RD \ CRT
RD \
WR \
DSR\
WR\
XöûLyùùng
aét (8259A
INTR RTS\
hai möùc)
INTA \
TxD
VXL TxD 8251 TxD
CTS\
RxRDy
RxD RxD

DTR\ DTR\

VX 8251 8251 VX
L1 DSR\ DSR\ L2

RTS\ RTS\

CTS\ CTS\

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang61

Chöông V:
THIEÁT KEÁ VAØ LÖÏA CHOÏN LINH KIEÄN
___ oOo ___
Sau khi phaân tích moâ hình heä thoáng kit 8086. Nhoùm thöïc hieän baét ñaàu
tính toaùn caùc giaù trò thöïc teá ñeå heä thoáng coù theå hoaït ñoäng ñöôïc. Vieäc
tính toaùn döïa treân cô sôû lyù thuyeát vaø caùc loaïi linh kieän thoâng duïng treân
thò tröôøng.
Nhö ta ñaõ bieát kit 8086 laø heä thoáng phaàn cöùng khoâng theå thay ñoåi
ñöôïc moät caùch deå daøng nhöng phaàn meàm coù theå thay ñoåi ñöôïc cho heä
thoáng hoaït ñoäng moät caùch toái öu. Do ñoù, vieäc thieát keá phaûi caân ñoái sao
cho phaàn meàm khoâng phöùc taïp vaø taän duïng ñöôïc heát chöùc naêng.
1). Boä vi xöû lyù trung taâm vaø maïch choát:
Boä vi xöû lyù 8086 coù taàn soá hoaït ñoäng 8Mhz, coù 20 ñöôøng ñòa chæ
neân coù theå quaûn lyù ñöôïc 1Mbyte boä nhôù vaø coù 16 ñöôøng döõ lieäu.
Do vi xöû lyù söû duïng phöông phaùp ña hôïp 20 bit ñòa chæ vôùi 16 bit döõ
lieäu vaø 4 tín hieäu ñieàu khieån. Vì vaäy nhoùm thöïc hieän choïn IC 74LH573 laø
IC choát ñòa chæ thaáp.
2). Thieát keá boä nhôù vaø giaõi maõ boä nhôù:
Do 8086 coù khaû naêng quaûn lyù 1Mbyte boä nhôù nhöng do öùng duïng thöïc
teá nhoùm chæ choïn vuøng nhôù töø 80000 ñeán FFFFF ñeå choïn vuøng nhôù RAM,
caùc IC ngoaïi vi vaø chöông trình heä thoáng.

O0 CS\ RAM
A16 A CS\ 8255
CS\ 8279
A17 B
A18 C
Vcc E3
8086 E1 O7 CS\ ROM

\
E2
\

Hình V.1: Sô ñoà keát noái vi xöû lyù vôùi giaûi maõ boä
nhôù
3). Thieát keá khoái hieån thò vaø baøn phím:
Vi maïch 8279 coù khaû naêng raát ñaëc bieät: coù khaû naêng vöøa queùt baøn
phím rôøi vöøa hieån thò ñöôïc 16 Led 7 ñoaïn. Do yeâu caàu cuûa heä thoáng kit
8086 nhaäp döõ lieäu vaøo heä thoáng thoâng qua baøn phím cuõng nhö vieäc hieån
thò caùc soá lieäu ra Led neân ôû ñaây nhoùm choïn vi maïch 8279 ñeå thöïc hieän
chöùc naêng naøy.
a). Baøn phím:
Baøn phím khoâng phaûi laø thieát bò ñieän töû maø noù laø nhöõng coâng taéc
thöôøng hôû, noù giuùp ngöôøi söû duïng giao tieáp vôùi heä thoáng. Do yeâu caàu
cuûa heä thoáng neân nhoùm khoâng söû duïng heát 64 phím maø vi maïch 8279
quaûn lyù ñöôïc, cuï theå laø 26 phím.
Ñeå 8279 laøm vieäc queùt phím tröôùc tieân ta phaûi thieát laäp caùc töø
ñieàu khieån gôûi ra 8279, caùc ñöôøng tín hieäu SL3  SL0 duøng ñeå queùt, döõ
lieäu treân ñöôøng naøy coù theå thieát laäp theo hai kieåu Encode vaø Decode. Neáu
thieát laäp theo kieåu Decode thì 4 ñöôøng SL3  SL0 coù theå queùt hieån thò 4 led 7

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang62

ñoaïn maø yeâu caàu cuûa 4 ñöôøng SL3SL0 phaûi ôû cheá ñoä Decode neân ta
phaûi choïn 8279 ôû cheá ñoä Encode sau ñoù môùi giaõi maõ 4 ñöôøng SL3  SL0
thaønh cheá ñoä Decode luùc naøy giaõi maõ töø 4 ñöôøng sang 16 ñöôøng ñeå coù
khaû naêng hieån thò ra 16 Led. Do yeâu caàu cuûa ñeà taøi laø hieån thò ra 8 Led
neân ta choïn IC 74LS138 ñeå giaõi maõ cho vi maïch 8379.
Caùc ngoõ SHIFT vaø CNTL duøng ñeå môû roäng caùc toå hôïp phím. Do
heä thoáng khoâng söû duïng heát phím neân 2 ngoõ nay ñöôïc noái Mass.
 Nguyeân lyù laøm vieäc cuûa 8279 trong vieäc queùt phím:
Ñeå 8279 laøm coâng vieäc queùt phím ta choïn cheá ñoä KKK = 100
(Encode Scan Sensor Matrix) vaø gôûi caùc töø ñieàu khieån naøy 8279 ñeå khôûi taïo
cheá ñoä queùt phím. Caùc ñöôøng SL3  SL0 queùt lieân tuïc qua 74138 ñeå hieån
thò vaø phím aán. Khi coù moät phím aán, 8279 töï ñoäng choáng doäi sau 10,3 ms
vaø kieåm tra moät laàn nöõa ñeå xem phím ñoù coù aán nöõa hay khoâng, neáu coù
thì 8279 thieát laäp maõ cho phím naøy vaø löu tröõ maõ cuûa phím vaøo RAM beân
trong, sau ñoù baùo cho vi xöû lyù bieát coù moät phím taùc ñoäng vaø yeâu caàu vi
xöû lyù nhaäp maõ cho phím naøy baèng caùch taùc ñoäng ñeán tín hieäu ngaét IRQ
hoaëc baèng caùch ñoåi thanh ghi traïng thaùi FiFo laøm cho 3bit NNN seõ khaùc
möùc 000 khi coù moät phím ñöôïc aán.

SL0 A
SL1 B
SL2 C
SL3 74138
Multile
8279 OB0 Digital
Display

RL0 OB3
OA0

RL7 OA3

Coät Coät Haøn


0 7 g0

Haøng
7
Hình V.2: Sô ñoà ma traän queùt phím

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang63
b). Hieån thò:
Boä hieån thò laø phöông tieän giuùp ta xem keát quaû maø nhöõng gì ta yeâu
caàu vi xöû lyù thöïc hieän ñöôïc.
Nguyeân lyù hoaït ñoäng cuûa maïch hieån thò:
Ñeå 8 Led hieån thò theo loái vaøo töø phaûi sang traùi ta choïn cheá ñoä Mode
DD=10 ñeå khôûi taïo 8279 ñeå hieån thò ta gôûi döõ lieäu vaøo A0 vaø 8279 ñem
caát caùc döõ lieäu naøy vaøo 16 oâ nhôù RAM beân trong vaø laàn löôït gôûi ra
ngoaøi Led ñeå hieån thò theo loái vaøo töø phaûi sang traùi maø ta ñaõ ñònh tröôùc,
ñeå xoùa caùc led naøy ngöôøi ta gôûi töø ñieàu khieån C2 vaøo trong thanh ghi ñieàu
khieån. Trong caùc maïch Transistor ñoùng vai troø nhö moät coâng taéc ñoùng môû
caùc Led vaø ñöôïc ñieàu khieån bôûi IC 74138. Caùc Transistor laøm vieäc vôùi taàn
soá lôùn hôn 248 (8 Led) laàn trong giaây ñeå thaáy ñöôïc Led lieân tuïc saùng.

Tính toaùn caùc ñieän trôû hieån thò:


Vcc
R2
A564

R1
a
b
c
d
e
f
g

Ñeå cho Led ñöôïc saùng thì doøng qua noù khoaûng 10mA. Do ñoù, ñeå 7 ñoaïn
saùng thì doøng qua Transistor phaûi laø 80mA
I E max  I C max  8  10mA  80mA
vì vaäy ta coù theå choïn Transistor naøy laø A564 hoaëc A1015. Trong heä
thoáng kit 8086 nhoùm choïn A564 coù heä soá khueách ñaïi  ôû cheá ñoä ñoùng
ngaét khoaûng 40 ñeán 200 laàn. Do ñoù, doøng IBmax khoaûng:
I C max 80
I B max    1mA
 80
 Tính toaùn choïn R1: khi Transistor baûo hoøa VBE=0,7v
U R1  Vcc  0,7    5  0,7 
Do ñoù: R1    4,7 k
IB IB 1
Ñeå tính toaùn cho transistor sôùm baûo hoøa ta choïn R1 nhoû hôn tính toaùn.
Vaäy R1=3,9k
 Tính toaùn R2: khi Transistor daån baûo hoøa ta coù Vcc=0,2 v vaø ñeå Led
saùng thì ñoøi hoûi ñieän aùp rôi treân Led laø 2,5v.
VR 2  5   0,2  2,5  2,3V
Do ñoù: R  VR 2  2,3  28
2
I C max 80

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang64
Ñeå giuùp cho Transistor mau baõo hoøa ta choïn giaù trò R2 lôùn hôn tính
toaùn. Vaäy choïn R2=3.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang65

Phaàn 3
XAÂY DÖÏNG PHAÀN MEÀM HEÄ THOÁNG
___ oOo ___
I. KHAÙI NIEÄM:
Nhö ñaõ bieát, caáu taïo cuûa maùy tính ñöôïc chia laøm hai phaàn: phaàn cöùng
vaø phaàn meàm, phaàn meàm laø caùc chöông trình ñieàu khieån maùy tính ñeå giaûi
quyeát caùc yeâu caàu ñaët ra trong thöïc teá.
Kyõ thuaät xaäy döïng phaàn meàm laø kyõ thuaät laäp trình, ñaây laø moät
ngheä thuaät ñoøi hoûi kyõ naêng vaø saùng taïo nhöng daàn daàn noù ñöôïc kyõ
thuaät hoùa nhaèm ñôn giaûn vaø naâng cao hieäu suaát xaây döïng phaàn meàm.
Laäp trình laø taïo moät chöông trình ñieàu khieån thieát bò baèng moät ngoân
ngöõ naøo ñoù ñeå ñieàu khieån caùch xöû lyù döõ lieäu theo töøng yeâu caàu cuï theå
cuûa baøi toaùn. Vì vaäy, beân caïnh söï hieåu bieát veà cô cheá hoaït ñoäng cuûa
maùy tính ngöôøi laäp trình coøn phaûi naém vöõng caùch toå chöùc döõ lieäu vaø
caùch xöû lyù (thuaät giaûi) döõ lieäu ñoù ñeå ñaït ñöôïc keát quaû mong muoán. Coù
theå noùi chöông trình laø caùch toå chöùc döõ lieäu coäng vôùi thuaät giaûi, treân
thöïc teá coù nhieàu phöông phaùp laäp trình khaùc tuøy thuoäc vaøo:
- Coâng cuï söû duïng: maùy tính thoâng thöôøng, maùy chuyeân duøng, thieát
bò ñieàu khieån trong coâng nghieäp.
- Möùc ñoä chuyeân saâu: laäp trình heä thoáng, laäp trình öùng duïng.
- Ngoân ngöõ söû duïng: ngoân ngöõ maùy, ngoân ngöõ caáp cao.
- Lónh löïc öùng duïng: khoa hoïc kyõ thuaät, quaûn lyù, ñieàu khieån.
1). Thuaät giaûi:
Laø caùch giaûi quyeát vaán ñeà baèng nhöõng thao taùc cuï theå ñöôïc saép
xeáp theo moät trình töï nhaát ñònh.
Trong kyõ thuaät maùy tính, thuaät giaûi laø coát loõi mang tính saùng taïo vieäc
laäp trình. Thuaät giaûi thöôøng ñi keøm vôùi toå chöùc döõ lieäu, baûn thaân thuaät
giaûi laø moät chuyeân ngaønh ñöôïc nghieân cöùu chuyeân saâu vaø khoâng ngöøng
phaùt trieån.
2). Thao taùc:
Coøn goïi laø taùc vuï, leänh hoaëc chæ thò laø moät haønh ñoäng caàn ñöôïc
thöïc hieän bôûi cô cheá thöïc hieän thuaät giaõi. Thao taùc ñöôïc dieãn giaûi bôûi
moät nhoùm töø maø chuû yeáu laø moät ñoäng töø, caàn choïn ñoäng töø chæ daãn
chính xaùc vaø xuùc tích.
Moãi moät thao taùc caàn moät thôøi gian vaø tieâu hao vaät chaát ñeå thöïc
hieän. Thôøi gian vaø tieâu hao phuï thuoäc vaøo töøng thao taùc.
Moãi thao taùc coù theå phaân thaønh caùc thao taùc nhoû hôn. Vaán ñeà laø
choïn thao taùc ôû möùc ñoä chi tieát naøo ñeå trình baøy laø hôïp lyù nhaát. Neáu
thao taùc toång quaùt thì seõ khoù hieåu ngöôïc laïi neáu quaù chi tieát thì seõ raéc
roái deã nhaàm laãn. Caàn choïn thao taùc ôû möùc ñoä toång quaùt nhaát maø ñoái
töôïng söû duïng coù theå hieåu ñöôïc.
Cuøng moät thao taùc nhöng saép ñaët theo trình töï khaùc nhau seõ cho keát
quaû khaùc nhau. Cô caáu trình töï caàn theå hieän trong thao taùc goïi laø caáu truùc
ñieàu khieån.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang66
Caáu truùc tuaàn töï:

Caáu truùc laëp:


Laëp laïi A cho ñeán khi ñieàu kieän C ñuùng, thao taùc phaûi thöïc hieän ít
nhaát moät laàn.

S
C?

Laëp laïi A voâ ñieàu kieän khi cho ñeán khi coù leänh thoaùt.

Neáu ñieàu kieän C ñuùng thì thöïc hieän A (tuøy theo giaù trò cuûa C thao taùc
A coù theå thöïc hieän 0, 1 hoaëc nhieàu laàn).

S
A C?

Ñ
Caáu truùc löïa:
Choïn thöïc hieän hoaëc khoâng thöïc hieän moät thao taùc.

S
A C?

Choïn löïa moät trong hai thao taùc.

Ñ S
C?

Toùm laïi moät Athuaät giaûi toát toái thieåu Bcaàn coù nhöõng ñieàu kieän sau:
- Coâng vieäc phaûi cuï theå vaø thöïc hieän ñöôïc treân maùy tính.
- Soá böôùc thöïc hieän phaûi roõ raøng vaø höõu haïn.
- Coù soá lieäu vaøo.
- Coù soá lieäu ra.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang67
II. XAÂY DÖÏNG CHÖÔNG TRÌNH HEÄ THOÁNG:
1). Giaûi thuaät cuûa heä thoáng kit vi xöû lyù 8086:
Löu ñoà chöông trình chính ñieàu khieån kit 8086:

Begin

Khôûi taïo 8279 - 8251

Khôû taïo ngaên xeáp

Khôiû taïo ñòa chæ ñeå thöïc


hieän chöông trình

Xoùa vuøng nhôù


[FE30H][FE33H]
Goïi chöông trình con hieån thò
Begin
Goïi chöông trình con doø tìm phím
aán
Khôûi taïo ñòa chæ DS

Phím
Khôûi taïo chöùc
thanh ghi ngaên xeáp SS
naêng
vaø SP

Laáy caùc töø ñieàu khieån ñöa


Chöông trình
vaøo convuøng
ñoaïn dòch nhôù
chuyeån
[0002]
data trong10h
oâ nhôù
 sang oâ nhôù
[0002]
37h taïm [0002]
0C2h
Chöông trình  chuyeån
con dòch [0002]data
 nhôù [0002]
90h 8 oâ
vaøo
40h  [0002]

Goïi chöông con xöû lyù caùc phím chöùc


naêng
Löu ñoà chöông trình contaïo
Khôûi khôûi taïo tôùi
DS troû 8279 vaø chuyeån oâ nhôù sang oâ nhôù
vuøng
taïm nhôù RAM( DS8000H)

Naïp EA vaøo vuøng nhôù [FE00]


Naïp 00 vaøo vuøng nhôù töø [FE31H -
FE33H]

Xoùa 4 Led döõ lieäu khi keát thuùc

Goïi chöông trình con hieån thò


GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH

RET
Luaän vaên toát nghieäp trang68

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang69
Chöông trình khôûi taïo 8251
Löu ñoà:

Begin

00h AL

AL  Thanh ghi ñieàu


khieån

Delay

03h  CL

SoSo
saùnh
saùnh
CL=03h
Cl = 00h
?

40h  Thanh ghi leänh

Delay

Naïp lôøi ñieàu khieån

Delay

Ret

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang70

Löu ñoà chöông trình con hieån thò:


Begin

Caát caùc thanh ghi BX, AX, CX

FE38h  vaøo thanh ghi BX


A000h  vaøo thanh ghi CX

Laáy data caát vaøo AL

Caát thanh ghi DS

Laáy data göûi ra hieån thò

Laáy laïi DS

Taêng ñòa chæ leân 1

So saùnh
= 40

Laáy laïi thanh ghi CX, AX, BX,


DS

Ret

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang71
Löu ñoà phím chöùc naêng:
Löu ñoà phím key – up:
Begin

Coù phaûi phím


UP?

Laáy ñòa chæ 4 Led traùi


Jmp X6

Caát moät byte vaøo oâ nhôù

Taêng noäi dung oâ nhôù leân 1

[FE33]  thanh ghi AL


[FE31]  thanh ghi BH
[FE30]  thanh ghi BL

Goïi chöông trình CON4-8

Xoùa 2 vuøng nhôù data


[FE32] vaø [FE33]
Löu ñoà phím key – down: Begin
Jmp X4
Coù phaûi
phím Down khoâng

Laáy ñòa chæ 4 Led traùi

Laáy data

Giaûm noäi dung oâ nhôù ñi 1 Jmp X7

Jmp x4

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang72
Löu ñoà phím key – set:
Begin

Coù phaûi phím


set khoâng

Laáy ñòa chæ 4 Led traùi

Laáy data
Jmp X9 Jmp X8
Löu ñoà phím key – go:

Begin

Coù phaûi
phím go

Thoaùt khoûi
chöông trình Jmp X4

Löu ñoà chöông trình delay:


Begin

Caát CX 72E3  CX

Laëp laïi 72E3

Laáy CX laïi

Ret

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang73
Löu ñoà chöông trình con xöû lyù phím chöùc naêng
Löu ñoà phím key 16
Begin

Call key 23

AL  AH

[FE41]  AL

AL and [FE41]

Keát quaû = 0

Laáy laïi maõ phím

Löu ñoà phím key 23 Ret


Begin

Call key 47

Trao maõ phím sau ñoù taêng phím


leân 1

Keát quaû = 0

[FE41]  AL
[FE41] and AL

Keát quaû coù= 0


khoâng? 0FFh  AH

Giaûm keát quaû ñi 1

Trao laïi maõ phím


Löu ñoà phím key 47

Ret

Begin

CaátÑÌNH
GVHD: NGUYEÃN thanh ghi
PHUÙDS SVTH: NGOÂ VAÊN BÌNH
Sau khi xoùa keát
quaû = 0 chöa
Göûi töø
Laáy maõñieàu
Ñoïc
phím
Laáy
AL khieån
Call
maõ
and
DS
gôûi
Delayvaø
0Fh
phím
laïi ñoïchieån
ra ñeå traïng 0FFh  AL
thaùi
Luaän vaên toát nghieäp trang74

Ret

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang75
Löu ñoà chöông trình chuyeån 4 oâ nhôù thaønh 8 oâ nhôù

Begin

Copy döõ lieäu töø oâ nhôù [FE30]


– [FE33] sang [FE34] –[FE37]

Cho hieån thò 4 Led traùi

Chuyeån 4 bit cao sang 4 bit thaáp

Call 4 - X

Caát AX

Call 4 - X

Kieåm
tra BL =
40h

Chuyeån döõ lieäu vaøo oâ nhôù

Call delay

Ret

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang76
Löu ñoà chöông trình con 4-x
Begin

Xoùa 4 bit cao

Caát thanh ghi DS


Caát thanh ghi BX
Caát thanh ghi AX

Naïp ñòa chæ quaûn lyù maõ

Trao maõ phím vaøo oâ nhôù

Laáy laïi BX
Laáy laïi DS

Laáy döõ lieäu vaø hieån thò

Laäp côø nhôù, quay AL sang traùi 1


voøng

Kieåm tra côø


nhôù=0

Naïp 00h vaøo AL

Caát maõ phím vaøo oâ nhôù

Taêng noäi dung oâ nhôù l

Ret

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang77
2).Chöông trình heä thoáng:
Chöông trình chính (chöông trình monitor):
CODE SEGMENT
ASSUME CS:CODE
ORG 0000H
;KHOI TAO 8279H
MOV AX,0A000H ;
MOV DS,AX ;DIA CHI 8279 CHO DS
MOV AX,8000H ;KHOI TAO NGAN XEP
MOV SS,AX ;
MOV SP,0000H
MOV AL,10H ;DIEU KHIEN
MOV DI,0002H
MOV [DI],AL
MOV AL,37H ;CHIA XUNG CLOCK CUA 8279
MOV [DI],AL
MOV AL,0C2H ;XOA FIFO
MOV [DI],AL
MOV AL,90H ;LOI VAO PHAI
MOV [DI],AL
MOV AL,40H ;DOC FIFO
MOV [DI],AL
;KHÔÛI TAÏO 8251
MOV DX,B0002H
MOV AL,00H
OUT DX,AL
D0: MOV CX,02H
LOOP D0
OUT DX,AL
D1: MOV CX,02H
LOOP D1
OUT DX,AL
D2: MOV CX,02H
LOOP D2
MOV AL,40H
OUT DX,AL
D3: MOV CX,02H
LOOP D3
MOV AL,C9H
OUT DX,AL
D4: MOV CX,02H
LOOP D4
;KHOI TAO DS TRO DEN VUNG DATA CUA RAM
MOV AX,8000H
MOV DS,AX
;KHOI TAO DIA CHI NHAY DE THUC HIEN CT
MOV DI,0FE00H

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang78
MOV AL,0EAH
MOV [DI],AL
INC DI
MOV AL,00H
MOV [DI],AL
INC DI
MOV [DI],AL
;CS MOI = 8000H
INC DI
MOV AL,00H
MOV [DI],AL
INC DI
MOV AL,80H
MOV [DI],AL
;NAP 00 VAO VUNG NHO FE30H DEN FE33H
MOV AL,00
MOV CX,0004H
MOV BX,0FE33H
X1: MOV [BX],AL
DEC BX
LOOP X1
MOV DI,0FE40H
MOV AL,0F0H
MOV [DI],AL ;XOA 4 LED DATA KHI KTAO
CALL CON4_8 ; GOI CTR CHUYEN MA TU 4 SANG 8 VA HIEN
THI
X4: CALL KEY_16
MOV AH,AL ;CAT TAM MA PHIM SANG AH
AND AL,10H ;XOA 4 BIT THAP
JNZ X3 ;NHAY NEU LA PHIM CHUC NANG LON HON 0FH
CALL CONVERT ;LA PHIM NHAP DATA
;TANG BIEN DEM LED LEN 1
MOV DI,0FE40H
MOV AL,[DI]
ROL AL,1
OR AL,0F1H
MOV [DI],AL
;CAT MA PHIM VUA AN TRONG AH
MOV BX,0FE33H
MOV AL,[BX]
OR AL,AH ;OR VOI MA PHIM
MOV [BX],AL
CALL CON4_8 ;GOI CTR CHUYEN MA VA HIEN THI
JMP X4
X3: MOV AL,AH ;X3 VA X5 LA 1
CMP AL,17H
JNZ X6 ;NEU KHONG PHAI LA PHIM KEY_UP

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang79
;CHUONG TRINH PHIM CHUC NANG KEY_UP
MOV DI,0FE30H
MOV BH,[DI] ;LAY DIA 4 LED TRAI
INC DI
MOV BL,[DI]
MOV SI,0FE37H
MOV AL,[SI] ;LAY BYTE DATA
MOV [BX],AL ;CAT 1 BYTE VAO O NHO
INC BX ;TANG DIA CHI LEN 1
X9: MOV SI,0FE33H
MOV AL,[BX] ;LAY NOI DUNG CUA NO
MOV [SI],AL ;GOI VAO AL
MOV [DI],BL ;CAP NHAT LAI DIA CHI
DEC DI
MOV [DI],BH
MOV AL,0F3H
MOV DI,0FE40H
MOV [DI],AL
CALL CON4_8 ;GOI CT CHUYEN MA VA HIEN THI
;RESET LAI BIEN DEM
MOV AL,0F0H
MOV DI,0FE40H
MOV [DI],AL
;XOA 2 OO NHO CHUA DATA 0032H VA 0033H
MOV AL,00H
MOV BX,0FE32H
MOV [BX],AL
INC BX
MOV [BX],AL
JMP X4 ;NHAY VE CT CHINH GOI PHIM
;CHUONG TRINH PHIM CHUC NANG XUONG KEY_DOWN
X6: CMP AL,16H ;
JNZ X7 ;NHAY NEU KHONG PHAI LA KEY_DOWN
MOV DI,0FE30H
MOV BH,[DI]
INC DI
MOV BL,[DI]
DEC BX
JMP X9
;CHUONG TRINH PHIM CHUC NANG S (LOAD DIA CHI)
X7: CMP AL,15H
JNZ X8
MOV DI,0FE32H
MOV BH, [DI]
INC DI
MOV BL, [DI]
MOV DI,0FE31H ;CHUAN BI NHAN DIA CHI MOI

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang80
JMP X9
;CHUONG TRINH PHIM CHUC NANG G
X8: CMP AL,10H ;SO SANH MA PHIM G
JNZ X11 ;NEU KHONG PHAI LA PHIM G
JMP X10
;CHUONG TRINH PHIM CHUC NANG P
X11: CMP AL,12H ;SO SANH MA PHIM P
JNZ X13 ;NEU KHONG PHAI PHIM P
;CHUONG TRINH XU LY MA PHIM P
JMP X14 ;NHAY
X13:

JMP X4

ORG 0200H
X10:

;=========================================
;CHUONG TRINH CON CHUYEN O NHO SANG O NHO TAM
ORG 0300H
CONVERT PROC NEAR
PUSH CX
PUSH AX
MOV DI,0FE32H
MOV AL,[DI]
AND AL,0FH ;XOA 4BIT CAO
MOV CL,04H
ROL AL,CL ;XOAY 4BIT THAP SANG 4 BIT CAO
MOV AH,AL
INC DI ;DI = 0033H
MOV AL,[DI]
MOV CL,04H
ROL AL,CL
MOV [DI],AL ;4 BIT THU 2
DEC DI ;DI = 0032
AND AL,0FH ;SU LY DIGIT THU 2
OR AL,AH
MOV [DI],AL
INC DI ;
MOV AL,[DI] ;
AND AL,0F0H ;XOA LSD
MOV [DI],AL
POP AX ;LAY MA PHIM
POP CX
RET
CONVERT ENDP

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang81
;==========================================
;CHUONG TRINH CON CHUYEN 4 O NGO THANH 8 O NHO
CON4_8 PROC NEAR
MOV DI,0FE34H
MOV SI,0FE30H
MOV CX,0004H
CON_1: MOV AL,[SI]
MOV [DI],AL
INC DI
INC SI
LOOP CON_1
MOV DI,0FE40H
MOV AH,[DI] ;LAY BIEN DEM SO LED HIEN THI
MOV SI,0FE34H ;TUONG DUONG VOI R0
MOV BX,0FE38H ;TUONG DUONG VOI R1
C_1: MOV AL,[SI]
INC SI
PUSH AX
MOV CL,04H
ROL AL,CL ;XU LY 4 BIT CAO LED 8
CALL CON4_X ;GOI CHTR CHUYEN MA
POP AX ;XU LY 4 BIT THAP LED 7
CALL CON4_X
CMP BL,40H ;KIEM TRA XEM HET DATA CHUA
JNZ C_1 ;QUAY LAI NEU CHUA HET
MOV [DI],AH
CALL DISPLAY
RET
CON4_8 ENDP
;==================================================
CON4_X PROC NEAR
AND AL,0FH
PUSH DS
PUSH BX
PUSH AX
MOV AX,0F000H ;NAP DIA CHI QUAN LY MA
MOV DS,AX
MOV BX,0FF00H
POP AX
MOV BL,AL ;TRAO DIA CHI TUONG UNG MA
MOV AL,[BX] ;LAY MA
POP BX
POP DS
MOV DL,AL
MOV AL,[DI] ;LAY BIEN DEM LED HT
STC
RCL AL,1 ;XOAY 1

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang82
MOV [DI],AL ;CAT LAI
MOV AL,DL ;LAY LAI MA
JC CO_1 ;NEU BANG 1 THI HT
MOV AL,00H ;NEU = 0 THI XOA
CO_1: MOV [BX],AL ;CAT MA VAO VUNG NHO HT
INC BX ;CHUAN BI BYTE KE
RET ;TRO VE
CON4_X ENDP
;===============================
;CHUONG TRINH CON HIEN THI
DISPLAY PROC NEAR
PUSH BX
PUSH AX
PUSH CX
PUSH DI
MOV DI,0000H
MOV BX,0FE38H
MOV CX,2000H ;DIA CHI 8279 A0000H
DIS_1: MOV AL,[BX]
PUSH DS
MOV DS,CX
MOV [DI],AL
POP DS
INC BX
CMP BL,40H
JNZ DIS_1
POP DI
POP CX
POP AX
POP BX ;
RET
DISPLAY ENDP
;======================================
KEY_16 PROC NEAR
KEY_61: CALL KEY_23
MOV AH,AL ;R2 THAY CHO AH
MOV DI,0FE41H
MOV AL,[DI]
AND AL,AL
JZ KEY_61
MOV AL,AH
RET
KEY_16 ENDP
;======================================
KEY_23 PROC NEAR
KEY_32: CALL KEY_47
MOV AH,AL ;R2 THAY CHO AH

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang83
MOV DI,0FE41H
INC AL
JZ M1
MOV AL,[DI] ;NEU CO PHIM AN
AND AL,AL
JNZ KEY_32
DEC AL
KE_1: MOV [DI],AL
MOV AL,AH
RET
M1: MOV AH,0FFH
JMP KE_1
KEY_23 ENDP
;======================================
KEY_47 PROC NEAR
PUSH DS
MOV AX,0A000H
MOV DS,AX
MOV DI,0002H
MOV AL,[DI]
AND AL,0FH
JZ M2
MOV DI,0000H
MOV AL,[DI]
MOV DI,0002H
MOV CL,0C2H
MOV [DI],CL
CALL DELAY
POP DS
RET
M2: MOV AL,0FFH
POP DS
RET
KEY_47 ENDP
;==============================
;CHUONG TRINH CON DELAY
DELAY PROC NEAR
PUSH CX
MOV CX,0FFFH
COUNT: LOOP COUNT
POP CX
RET
DELAY ENDP
;==============================
CODE ENDS
END

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang84

Phaàn 4
THI COÂNG


Ñöôïc söï höôùng daãn cuûa thaày Nguyeãn Ñình Phuù, trong suoát thôøi

gian thi coâng toâi thöïc hieän ñöôïc moät soá phaàn vaø traûi qua caùc böôùc

sau:

- Thieát keá vaø veõ maïch in baèng phaàn meàm veõ maïch Eagle.

- Kieãm tra maïch in.

- Raùp vaø haøn linh kieän.

- Kieãm tra maïch.

- Naïp trình ñieàu khieån vaøo Kit.

Qua quaù trình thi coâng maïch toâi caûm nhaän ñöôïc söï lyù thuù vaø töø ñoù

cuõng ruùt ra ñöôïc nhieàu kinh nghieäm cho sau naøy.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang85

HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI




Cuøng vôùi söï tieán boä cuûa khoa hoïc kyõ thuaät, lónh vöïc ñieän töû coù

nhieàu böôùc tieán nhaûy voït vaø coâng ngheä ñoåi môùi lieân tuïc. Ngöôøi thöïc

hieän ñeà taøi thaáy raèng:

- Heä thoáng maø toâi ñaõ thöïc hieän, vi xöû lyù 8086 chöa hoaït ñoäng

heát chöùc naêng cuûa noù.

- Vôùi vieäc giao tieáp qua coång RS232 thì khoaûng caùch truyeàn ñi xa.

- Coù theå keát noái vôùi thieát bò ngoaïi vi thoâng qua giao tieáp 8255A.

- Coù theå thieát keá keát noái vôùi vi ñieàu khieån……

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang86

KEÁT LUAÄN VAØ ÑAÙNH GIAÙ



Sau 8 tuaàn laøm vieäc khaån tröông cuøng vôùi söï höôùng daãn nhieät tình
cuûa thaày Nguyeãn Ñình Phuù. Ñeà taøi “THIEÁT KEÁ VAØ THI COÂNG KIT
VI XÖÛ LYÙ 8086” ñaõ hoaøn thaønh ñuùng thôøi gian qui ñònh. Ñaây laø ñeà taøi
mang tính toång hôïp, keát hôïp giöõa kyõ thuaät ñieän töû vaø kyõ thuaät laäp trình.
Vôùi söï quyeát taâm vaø noã löïc khoâng ngöøng, taäp luaän vaên naøy ñaõ
giuùp cho toâi böôùc ñaàu laøm quen vôùi ñeà taøi khoa hoïc vaø toâi ñaõ thaät söï
tích luõy khaù nhieàu veà kieán thöùc vi xöû lyù, thieát keá maïch vaø kyõ thuaät laäp
trình.
Do kieán thöùc coøn haïn cheá neân luaän vaên chaéc chaén seõ coù sai soùt
nhöng qua quaù trình thöïc hieän luaän vaên toâi nhaän thaáy raèng ñaõ hoïc hoûi
ñöôïc nhieàu ñieàu hay maø trong quaù trình hoïc taäp khoâng caûm nhaän heát ñöôïc.
Qua ñoù, toâi caàn boå sung raát nhieàu veà kieán thöùc nhaát laø moân kyõ thuaät vi
xöû lyù.
Toâi xin chaân thaønh caûm ôn söï giuùp ñôõ taän tình vaø quyù baùu cuûa caùc
thaày-coâ ñaõ taïo nhieàu ñieàu kieän cho toâi hoaøn thaønh toát nhieäm vuï ñöôïc
giao ñuùng thôøi gian qui ñònh.
Toâi raát mong söï ñoùng gôùp yù kieán cuûa quyù thaày – coâ cuøng caùc baïn
sinh vieân thaân meám ñeå taäp ñeà taøi ñöôïc hoaøn haûo hôn.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang87

TAØI LIEÄU THAM KHAÛO




1. The 8086/8088 Family Design, Programming and Interfacing


Taùc giaû: John Uffenbeck
2. Microprocessor and Digital Systems
Taùc giaû: Duhall – 1980
3. Kyõ thuaät vi xöû lyù
Taùc giaû: Vaên Theá Minh
4. Kyõ thuaät vi xöû lyù
Taùc giaû: Traàn Vaên Troïng
5. Lòch söû phaùt trieån vi xöû lyù
Taùc giaû: Nguyeãn Ñình Phuù
6. Sô ñoà chaân linh kieän baùn daãn
Taùc giaû: Döông Minh Trí
7. Phöông phaùp nghieân cöùu khoa hoïc
Taùc giaû:
8. Caáu truùc maùy tính – Taäp 1,2
Taùc giaû: Leâ Anh Vieät
Vaø moät soá taøi lieäu coù lieân quan

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang88

PHUÏ LUÏC
MOÂ TAÛ TAÄP LEÄNH CUÛA VI XÖÛ LYÙ 8086


Coù nhieàu caùch trình baøy taäp leänh cuûa moät vi xöû lyù: trình baøy caùc
leänh theo nhoùm hoaëc theo thöù töï A, B, C. Ñeå tieän cho vieäc tìm kieáp vaø tra
cöùu cuï theå ta choïn caùch trình baøy theo thöù töï A, B, C.
 AAA – ASCII Adjust after Addition (Chænh sau khi coäng hai soá ôû
daïng ASCII):
Döõ lieäu truyeàn töø caùc thieát bò ñaàu cuoái ñeán maùy tính thöôøng ôû
daïng maõ ASCII. Khi ñaõ truyeàn ñi caùc soá ASCII roài, ñoâi khi ta muoán coäng
luoân caùc soá ñoù. Boä vi xöû lyù 8086 cho pheùp ta laøm ñieàu naøy vôùi ñieàu
kieän phaûi chænh laïi keát quaû coù trong AL baèng leäng AAA ñeå thu ñöôïc keát
quaû laø soá BCD khoâng goùi.
Caäp nhaät: AF, CF.
Khoâng xaùc ñònh: OF, PF, SF, ZF.
 AAD – ASCII Adjust before Division (Chænh tröôùc khi chia hai soá ôû
daïng ASCII)
Leänh naøy ñoåi hai soá BCD khoâng goùi ôû Ah vaø Al sang soá heä hai töông
ñöông ñeå taïi AL. Vieäc naøy phaûi thöïc hieän tröôùc khi laøm pheùp chia moät soá
BCD khoâng goùi (goàm hai chöõ soá) ñeå trong AX cho moät soá BCD khoâng goùi
khaùc. Keát quaû vaø soá dö cuõng laø caùc soá BCD khoâng goùi.
Khoâng xaùc ñònh taát caû caùc côø.
 AAM – ASCII Adjust after Multiplication (Chænh sau khi nhaân hai soá
daïng ASCII).
Leänh naøy duøng ñeå ñoåi moät soá heä hai, laø tích cuûa hai soá BCD khoâng
goùi, coù trong AL sang soá BCD khoâng goùi ñeå taïi AX.
Caäp nhaät: PF, SF, ZP
Khoâng xaùc ñònh: AF, CF, OF.
 AAS – ASCII Adjust after Subtraction (Chænh sau khi tröø hai soá daïng
ASCII)
Leänh naøy duøng ñeå ñoåi soá heä hai, laø hieäu cuûa 2 soá BCD khoâng goùi,
coù ôû Al sang soá BCD khoâng goùi.
Caäp nhaät: AF, CF.
Khoâng xaùc ñònh: OF, PF, SF, ZF.
 ADC – Add With Carry (coäng coù nhôù)
Cuù phaùp: ADC Ñích, Goác
Moâ taû: Ñích  Ñích + Goác + CF
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø hai oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn. Ñieàu

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang89
haïn cheá naøy cuõng ñöôïc aùp duïng cho caùc leänh khaùc coù ngöû phaùp töông
töï.
 ADD – Add (Coäng 2 toaùn haïng)
Cuù phaùp: ADD Ñích, Goác
Moâ taû: Ñích  Ñích + Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñònh
ñòa chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng
ñöôïc pheùp ñoàng thôøi laø hai oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn.
Caäp nhaät: AF, CF, OF, PF, SF, ZF
 AND – And Corresponding Bits of Two Operands (Vaø 2 toaùn haïng)
Cuù phaùp: AND Ñích, Goác
Moâ taû: Ñích  Ñích  Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñònh
ñòa chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng
ñöôïc pheùp ñoàng thôøi laø hai oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn.
Pheùp AND thöôøng duøng ñeå che ñi/giöõ laïi moät vaøi bit naøo ñoù cuûa moät
toaùn haïng baèng caùch nhaân logic toaùn haïng ñoù vôùi toaùn haïng töùc thì coù
caùc bit 0 – 1 ôû caùc choå caàn che ñi/giöõ nguyeân töông öùng (toaùn haïng töùc thì
luùc naøycoøn ñöôïc goïi laø maët naï).
Xoùa: CF, OF
Caäp nhaät: PF, SF, ZP.PF chæ coù nghóa khi toaùn haïng laø 8 bit.
Khoâng xaùc ñònh: AF.
 CALL – Call a Procedure (Goïi chöông trình con)
Moâ taû:
Leänh naøy duøng ñeå chuyeån hoaït ñoäng cuûa boä vi xöû lyù töø chöông trình
chính sang chöông trình con. Neáu chöông trình con ôû trong cuøng moät ñoaïn maõ
vôùi chöông trình chính thì ta coù goïi gaàn (near call). Neáu chöông trình chính vaø
chöông trình con ôû hai ñoaïn maõ khaùc nhau thì ta coù goïi xa (far call). Goïi gaàn
vaø goïi xa khaùc nhau veà caùch taïo ra ñòa chæ trôû veà (return address). Ñòa chæ
trôû veà laø ñòa chæ cuûa leänh tieáp ngay sau leänh Call. Khi goïi gaàn thì chæ caàn
caát IP cuûa ñòa chæ trôû veà (vì CS khoâng ñoåi) khi goïi xa thì phaûi caát caû CS
vaø IP cuûa ñòa chæ trôû veà. Ñòa chæ trôø veà ñöôïc töï ñoäng caát taïi ngaên xeáp
khi baét ñaàu thöïc hieän leänh goïi vaø ñöôïc tuï ñoäng laáy ra khi gaêp leänh Ret
(trôû veà chöông trình chính töø chöông trình con) taïi cuoái chöông trình con.
Nhö vaäy, neáu laø goïi gaàn:
 SP  SP – 2 vaø ñòa chæ leänh trôû veà ñöôïc caát vaøo ngaên xeáp
{SP}IP
 IP  ñòa chæ leäch cuûa chöông trình con.
 Khi gaëp leänh Ret taïi cuoái chöông trình con thì seõ coù thao taùc ngöôïc
laïi:
{SP}  IP vaø SP  SP + 2
Coøn neáu goïi xa:
 SP  SP – 2 vaø ñòa chæ leäch cuûa leänh trôû veà ñöôïc caát vaøo ngaên
xeáp: {SP}CS.
 SP  SP – 2 vaø ñòa chæ cô sôû cuûa leänh trôû veà ñöôïc caát vaøo ngaên
xeáp:{SP}IP.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang90

 IP  ñòa chæ leäch cuûa chöông trình con.


CS  ñòa chæ cô sôû cuûa chöông trình con.
 Khi gaëp leänh Ret taïi cuoái chöông trình con thì seõ thao taùc ngöôïc laïi:
{SP}  IP vaø SP  SP + 2.
{SP}  CS vaø SP  SP + 2.
Cuù phaùp: sau ñaây laø caùc ñaïng khaùc nhau cuûa caùc leänh goïi chöông
trình con vaø caùch tính ñòa chæ cuûa chöông trình con:
 CALL Multiple: goïi chöông trình con coù teân teân laø Multiple trong
cuøng ñoaïn maõ vôùi chöông trình chính, chöông trình con naøy naèm trong giôùi
haïn dòch chuyeån –32Kbyte (dòch veà phía ñòa chæ thaáp) hoaëc (32K-1)byte (dòch
veà phía ñòa chæ cao) so vôùi leänh tieáp theo ngay sau leänh CALL. Sau khi caát IP
cuõ (ñòa chæ trôû veà) vaøo ngaên xeáp, IP môùi ñöôïc tính: IP  IP + Dòch chuyeån
.
 CALL Divi: goïi chöông trình con teân Divi ôû ñoaïn maõ khaùc. Trong
chöông trình hôïp ngöõ Divi phaûi ñöôïc khai baùo laø moät chöông trình con ôû xa:
Divi proc far
Ñòa chæ cuûa chöông trình con laø ñòa chæ CS:IP cuûa Divi.
 CALL BX: goïi tröïc tieáp moät chöông trình con cuøng ñoaïn, leänh
ñaàu tieân cuûa chöông trình con dòch chuyeån so vôùi ñaàu ñoaïn baèng noäi dung
cuûa thanh ghi BX, do ñoù IP  BX (SI, DI coù theå duøng thay choå cuûa BX).
 CALL WORD PTR [BX]: goïi chöông trình con khoâng naèm trong
cuøng moät ñoaïn maõ, chöông trình con coù ñòa chæ dòch chuyeån (tính töø leänh
tieáp ngay sau leänh goïi tôùi leänh ñaàu tieân chöông trình con) chöùa trong hai oâ
nhôù do BX vaø BX+1 chæ ra trong ñoaïn DS. Ñòa chæ leäch naøy seõ ñöa vaøo IP
(SI, DI coù theå duøng thay choå cho BX).
 CALL DWORD PTR [BX]: goïi chöông trình con khoâng naèm trong
cuøng moät ñoaïn maõ, chöông trình con coù ñòa chæ CS:IP, giaù trò gaùn cho IP vaø
CS chöùa trong 4 oâ nhôù do BX vaø BX + 1 (cho IP) BX +2 vaø BX + 3 (cho CS)
chæ ra trong ñoaïn DS (SI, DI coù theå duøng thay choã cuûa BX).
 CBW – Convert a Byte to a Word (Chuyeån byte thaønh töø):
Leänh naøy môû roäng bit daáu cuûa AL sang 8 bit cuûa AH. AH luùc naøy
ñöôïc goïi phaàn môû roäng daáu cuûa AL. Ta duøng CBW ñeå môû roäng daáu cho
soá coù daáu naèm trong AL tröôùc khi muoán chia cho moät soá coù daáu 8 bit khaùc
baèng leänh IDIV (leänh chia caùc soá coù daáu) hoaëc tröôùc khi muoán nhaân noù
cho moät soá 16 bit khaùc baèng leänh IMUL (leänh nhaân caùc soá coù daáu).
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 CLC – Clear the Carry Flag (xoùa côø nhôù):
Moâ taû: CF  0
Khoâng taùc ñoäng ñeán caùc côø khaùc.
 CLD – Clear the Direction Flag (Xoùa côø höôùng)
Moâ taû: DF  0
Leänh naøy ñònh höông thao taùc theo chieàu tieán () cho caùc leänh lieân
quan ñeán chuoåi. Caùc thanh ghi lieân quan laø SI vaø DI seõ ñöôïc töï ñoäng taêng
khi laøm vieäc xong vôùi moät phaàn töû cuûa chuoãi.
Khoâng taùc ñoäng ñeán caùc côø khaùc.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang91
 CLI – Clear the Interrupt Flag (Xoùa côø cho pheùp ngaét)
Moâ taû: IF  0
Leänh naøy xoùa côø cho pheùp ngaét. Caùc yeâu caàu ngaét che ñöôïc seõ bò
che.
Khoâng taùc ñoäng ñeán caùc côø khaùc.
 CMC – Complement the Carry Flag (Ñaûo côø nhôù)
Moâ taû: CF  CF
Caäp nhaät: CF
Khoâng taùc ñoäng ñeán caùc côø khaùc.
 CMP – Compare Byte or Word (So saùnh 2 byte hoaëc 2 töø)
Cuù phaùp: CMP Ñích, Goác.
Moâ taû: Ñích, Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñòa chæ theo caùc cheá ñoä
ñòa chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng
ñöôïc pheùp ñoàng thôøi laø 2 oâ nhôù.
Leänh naøy chæ taïo caùc côø, khoâng löu keát quaû so saùnh, sau khi so saùnh
caùc toaùn haïng khoâng bò thay ñoåi. Leänh naøy thöôøng ñöôïc duøng ñeå taïo caùc
côø nhaûy coù ñieàu kieän (nhaûy theo côø).
Caùc côø chính theo quan heä ñích vaø goác khi so saùnh 2 soá khoâng daáu:
CF ZF
Ñích = Goác 0 1
Ñích > Goác 0 0
Ñích < Goác 1 0
Caäp nhaät: AF, CF, OF, PF, SF, ZF.
 CMPS/CMPSB/CMPSW – Compare String Byte or String Words (So
saùnh 2 chuoãi byte hoaëc 2 chuoãi töø).
Cuù phaùp: CMPS Chuoãiñích,Chuoãigoác
CMPSB
CMPSW
Moâ taû: Chuoãi ñích – chuoãi goác
Leänh naøy so saùnh töøng phaàn töû (byte hay töø) cuûa 2 xaâu coù caùc phaàn
töû cuøng loaïi. Leänh chæ taïo caùc côø, khoâng löu keát quaû so saùnh, sau khi so
saùnh caùc toaùn haïng khoâng bò thay ñoåi. Trong leänh naøy ngaàm ñònh caùc
thanh ghi vôùi caùc chöùc naêng:
 DS:SI laø ñòa chæ cuûa phaàn töû so saùnh trong chuoãi goác.
 ES:DI laø ñòa chæ cuûa phaàn töû so sanh trong chuoãi ñích.
 Sau moãi laàn so SI  SI  1, DI  DI  1 hoaëc SI  SI  2, DI  DI 
2 moät caùch töï ñoäng tuøy thuoäc côø höôùng DF laø 0 hay 1 vaø chuoåi laø chuoåi
byte hay chuoãi töø.
Caäp nhaät: AF, CF, OF, PF, SF, ZP.
 CWD – Convert a Word to a Double Word (Chuyeån töø thaønh töø keùp)
Leänh naøy môû roäng bit daáu cuûa AX sang 16 bit cuûa DX. DX luùc naøy
ñöôïc goïi laø phaàn môû roäng daáu cuûa AX. Ta duøng CWD ñeå môû roäng daáu
cho soá coù daáu naèm trong AX tröôùc khi muoán chia noù cho moät soá coù daáu
khaùc baèng leänh IDIV.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang92
 DAA – Decimal Adjust AL after BCD Addition (Chænh AL sau khi coäng
soá BCD)
Leänh naøy duøng ñeå chænh laïi keát quaû (hieän naèm ôû AL) sau pheùp
coäng 2 soá BCD. Lyù do phaûi chænh laïi laïi keát quaû naøy laø do ta duøng boä
ALU cuûa CPU, voán chæ bieát laøm toaùn vôùi heä soá hai, ñeå laøm toaùn vôùi
caùc soá BCD. Leänh DAA chæ taùc ñoäng ñuùng ñeán keát quaû ôû AL ngay sau khi
vöøa thöïc hieän pheùp coäng. Hoaït ñoäng cuûa leänh DAA:
 Neáu 4 bit thaáp cuûa AL lôùn hôn 9 hoaëc AF = 1 thì AL  AL + 6
 Neáu 4 bit cao cuûa AL lôùn hôn 9 hoaëc CF = 1 thì AL  AL + 60H
Caäp nhaät: AF, CF, PF, SF, ZP.
Khoâng xaùc ñònh: OF.
 DAS – Decmal Adjust AL After BCD Subtraction (Chænh AL sau khi
tröø 2 soá BCD)
Leänh naøy duøng ñeå chænh laïi keát quaû (hieän naèm ôû AL) sau pheùp tröø
2 soá BCD. Lyù do phaûi chænh laïi 2 soá naøy do ta ñaõ duøng boä ALU cuûa CPU
voán chæ bieát laøm toaùn vôùi heä soá hai, ñeå laøm toaùn vôùi caùc soá BCD.
Leänh DAS chæ taùc ñoäng ñuùng ñeán keát quaû ôû AL ngay sau khi vöøa thöïc
hieän pheùp tröø. Hoaït ñoäng cuûa leänh DAS:
 Neáu 4 bit thaáp cuûa AL lôùn hôn 9 hoaëc AF = 1 thì AL  AL – 6
 Neáu 4 bit cao cuûa AL lôùn hôn 9 hoaëc CF =1 thì AL  AL – 60H
Caäp nhaät: AF ,CF, PF, SP, ZP.
Khoâng xaùc ñònh: OF
 DEC – Decrecment Destinaion Register or Memory (Giaûm toaùn haïng
ñích ñi 1)
Cuù phaùp: DEC Destination
Moâ taû: Ñích  Ñích – 1
Trong ñoù toaùn haïng ñích coù theå ñöôïc tìm theo caùc cheá ñoä ñònh ñòa chæ
khaùc nhau. Löu yù, laø neáu Ñích – 1 =00H (hoaëc 0000H) thì Ñích – 1 = FFH
(hoaëc FFFFH) maø khoâng aûnh höôûng ñeán côø CF. Leänh naøy coù keát quaû
töông ñöông nhö leänh SUB Ñích nhöng chaïy nhanh hôn.
Caäp nhaät: AF, OF, PF, SF, ZP.
Khoâng taùc ñoäng CF.

 DIV – Unsigned Divide (Chia hai soá khoâng coù daáu)


Cuù phaùp: DIV goác
Trong ñoù toaùn haïng goác laø soá chia vaø coù theå tìm ñöôïc theo caùc cheá
ñoä ñònh ñòa chæ khaùc nhau.
Moâ taû: tuøy theo ñoä daøi cuûa toaùn haïng goác ta coù hai tröôøng hôïp boá
trí pheùp chia, caùc choå deã ngaàm ñònh cho soá bò chia vaø keát quaû.
 Neáu goác laø soá 8 bit: AX/Goác, soá bò chia phaûi laø soá khoâng dau16
bit ñeå trong AX.
Sau khi chia: AL  thöông, AH  soá dö.
 Neáu goác laø soá 16 bit: DXAX/Goác, soá bò chia phaûi laø soá khoâng
daáu 32bit ñeå trong caëp thanh ghi DXAX
Sau khi chia: AX  thöông, DX  soá dö.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang93
Neáu thöông khoâng phaûi laø soá nguyeân noù ñöôïc laøm troøn theo soá
nguyeân saùt döôùi.
Neáu Goác = 0 hoaëc thöông thu ñöôïc lôùn hôn FFH hoaëc FFFFH ( tuøy theo
ñoä daøi cuûa toaùn haïng Goác) thì 8086 seõ thöïc hieän ngaét INT 0.
Khoâng xaùc ñònh: AF, CF, OF, PF, SF, ZP.
 ESC – Escape
Leänh naøy duøng deå truyeàn caùc leänh cho boä ñoàng xöû lyù toaùn hoïc
8087. Boä vi xöû lyù 8086 khi gaëp leänh ESC thì tuøy theo khung caûnh, coù luùc
noù coi ECS nhö leänh NOP (no operation), coù luùc noù truy nhaäp döõ lieäu töø boä
nhôù vaø ñöa ñeán boä ñoàng xöû lyù toaùn hoïa 8087.
 HLT – Halt Processing (Döøng)
Khi gaëp leänh naøy, caùc hoaït ñoäng cuûa 8086 bò taïm döøng vaø boï vi xöû
lyù 8086 böôùc vaøo traïng thaùi döøng. Ñeå thoaùt jhoûi traïng thaùi döøng chæ coù
caùch taùc ñoäng vaøo moät trong nhöõng chaân INTR, NMI, hoaëc Reset c1 boä vi
xöû lyù.
 IDIV – Integer Division (Signed division) (Chia soá coù daáu)
Cuù phaùp: IDIV Goác
Trong ñoù toaùn haïng goác laø soá chìava coù theå tìm ñöôïc theo caùc cheá ñoä
ñònh ñòa chæ khaùc nhau.
Ñaây laø leänh duøng ñeå chia caùc soá nguyeân coù daáu. Choã ñeå ngaàm
ñònh cuûa soá chia, soá bò chia, thöông vaø soá dö gioáng nhö leänh DIV. Chæ coù 2
ñieàu khaùc laø:
 Sau pheùp chia AL chöùa thöông (soá coù daáu), AH chöùa soá dö (soá coù
daáu)
 Daáu cuûa soá dö seõ truøng vôùi daáu cuûa soá bò chia.
 Neáu Goác = 0 hoaëc naèm ngoaøi daûi –128… +127 hoaëc –32768…
+32767 (tuøy theo ñoä daøi cuûa Goác) thì 8086 seõ thöïc hieän leänh ngaét INT 0.
Khoâng xaùc ñònh: AF, CF, OF, PF, SF, ZP.
 IMUL – Integer Multiplication (Multiply Signed Number) (Nhaân soá
coù daáu)
Cuù phaùp: IMUL Goác
Trong ñoù toaùn haïng Goác laø soá nhaân vaø coù theå tìm ñöôïc theo caùc cheá
ñoä ñònh ñòa chæ khaùc nhau.
Moâ taû: tuøy theo ñoä daøi cuûa toaùn haïng Goác ta coù 2 tröôøng hôïp boá trí
pheùp nhaân, choå ñeå ngaàm ñònh cho soá bò nhaân vaø keát quaû:
 Neáu Goác laø soá coù daáu 8 bit: AL  Goác,
soá bò nhaân phaûi laø soá coù daáu 8 bit ñeå trong AL,
sau khi nhaân: AX  tích
 Neáu Goác laø soá coù daáu 16 bit: AX  Goác,
soá bò nhaân phaûi laø soá coù daáu 16 bit ñeå trong AX,
sau khi nhaân: DXAX  tích.
Neáu tích thu ñöôïc nhoû, khoâng ñuû laáp daày heát choå daønh cho noù thì
caùc bit khoâng duøng ñeán ñöôïc thay baèng bit daáu.
Neáu byte cao (hoaëc 16 bit cao) cuûa 16bit (hoaëc 32bit) keát quaû chæ chöùa
caùc giaù trò cuûa daáu thì CF=OF=0.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang94
Neáu byte cao (hoaëc 16 bit cao) cuûa 16 bit (hoaëc 32 bit) keát quaû chöùa moät
phaàn keát quaû thì CF=OF=1.
Nhö vaäy, CF vaø OF seõ baùo cho ta bieát keát quaû caàn ñoä daøi thöïc chaát
laø bao nhieâu.
Caäp nhaät: CF, OF
Khoâng xaùc ñònh: AF, PF, SF, ZP.
 IN – Input data from a Port (Ñoïc döõ lieäu töø coång vaøo thanh Acc)
Cuù phaùp: IN Acc,Port
Moâ taû: Acc  {Port}
Trong ñoù {Port}laø döõ lieäu cuûa coång coù ñòa chæ laø Port. Port laø 8 ñòa
chæ bit cuûa coång, noù coù theå coù caùc giaù trò trong khoaûng 00H … FFH. Nhö
vaäy ta coù theå coù caùc khaû naêng sau:
 Neáu Acc laø AL thì döõ lieäu 8 bit ñöôïc ñöa vaøo töø Port.
 Neáu Acc laø AX thì döõ lieäu 16 bit ñöôïc ñöa vaøo töø Port vaø Port + 1
Coù moät caùch khaùc ñeå bieåu dieãn ñòa chæ coång laø thoâng qua thanh ghi
DX. Khi duøng thanh ghi DX ñeå chöùa ñòa chæ coång ta seõ coù khaû naêng ñòa
chæ hoùa coång meàm deûo hôn. Luùc naøy ñòa chæ coång naèm trong daûi 0000H
…FFFFH vaø ta vieát leänh theo daïng:
IN Acc,DX
Trong ñoù DX phaûi ñöôïc gaùn töø giaù trò öùng vôùi ñòa chæ coång.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 INC – Increment Destination Register or Memory (Taêng toaùn haïng
ñích theâm 1)
Cuù phaùp: INC Ñích
Moâ taû: Ñích  Ñích + 1
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñònh ñòa chæ
khaùc nhau. Löu yù laø neáu Ñích=FFH (hoaëc FFFFH) thì Ñích+1=00H (hoaëc
0000H) maø khoâng aûnh höôûng ñeán côø CF. Leänh naøy cho keát quaû töông
ñöông nhö leänh ADD Ñích,1 nhöng chaïy nhanh hôn.
Caäp nhaät: AF, OF, PF, SF, ZP
Khoâng taùc ñoäng: CF
 INT –Interrupt Program Execution (Ngaét, giaùn ñoïan chöông trình ñang
chaïy)
Cuù phaùp: INT N, N=0…FFH
Moâ taû: Caùc thao taùc cuûa 8086 khi chaïy leänh INT N:
1. SP  SP-2, {SP}  FR
2. IF  0 (caám caùc ngaét khaùc taùc ñoäng), TF  0 (chaïy suoát)
3. SP  SP-2, {SP}  CS.
4. SP  SP-2, {SP}  IP.
5. {N4}  IP, {N4+2}  CS.
Moãi leänh ngaét öùng vôùi moät chöông trình phuïc vuï ngaét khaùc nhö töø
ñòa chæ laáy töø baûng vector ngaét. Baûng naøy goàm 256 vector, chöùa ñòa chæ
cuûa caùc chöông trình phuïc vuï ngaét töông öùng vaø chieám 1Kbyte RAM coù ñòa
chæ thaáp nhaát cuûa boä nhôù. Chöông trình phuïc vuï ngaét cuõng coù theå ñöôïc
goïi laø chöông trình con phuïc vuï ngaét vì caùch thöùc toå chöùc vaø quan heä giöûa

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang95
noù vôùi chöông trình bò ngaét cuõng gioáng nhö caùch thöùc toå chöùc vaø quan heä
giöõa chöông trình chính vaø chöông trình con.
 INTO – Interrupt on Overflow (Ngaét neáu coù traøn)
Neáu coù traøn (OF = 1) thì leänh naøy ngaét coâng vieäc ñang laøm cuûa vi xöû
lyù vaø thöïc hieän leänh ngaét INT 4.
 IRET – Interrupt Return (Trôû veà chöông trình chính töø chöông trình
(con) phuïc vuï ngaét
Nhö ñaõ trình baøy ôû leänh CALL, taïi cuoái chöông trình con phaûi coù leänh
trôû veà (RET) ñeå boä vi xöû lyù töï ñoäng laáy laïi ñòa chæ trôû veà chöông trình
chính. Trong tröôøng hôïp chöông trình con phuïc vuï ngaét, ñeå trôû veà chöông trình
chính vôùi ñaày ñuû thoâng tin caàn thieát veà ñòa chæ vaø traïng thaùi, taát nhieân
cuûng caàn phaûi coù leänh vôùi caùc taùc ñoäng töông öùng: leänh IRET. Leänh
naøy, ngoaøi vieäc töï ñoäng laáy laïi ñòa chæ trôû veà chöông trình chính, coøn laáy
laïi thanh ghi côø ñaõ ñöôïc caát giöõ tröôùc khi chaïy chöông trình con phuïc vuï
ngaét.
 JA/JNBE – Jump if Above/Jump if Not Below or Equal (Nhaûy neáu cao
hôn/Nhaûy neá khoâng thaáp hôn hoaëc baèng)
Cuù phaùp: JA NHAN
JNBE NHAN
Moâ taû: IP  IP + Dòch chuyeån.
Hai leänh treân bieåu dieãn cuøng moät thao taùc: nhaûy (coù ñieàu kieän) tôùi
NHAN neáu CF + ZF = 0. Quan heä “treân”, “cao hôn” (abve) vaø “döôùi”, “thaáp
hôn” (below) laø caùc quan heä daønh cho vieäc so saùnh (do leänh CMP thöïc hieän)
ñoä lôùn cuûa hai soá khoâng daáu. Nhaõn NHAN phaûi naèm cach xa (dòch ñi moät
khoaûng) –128…+127 byte so vôùi leänh tieáp theo sau leänh JA/JNBE. Chöông trình
dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh vò trí dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 JBE/JNA – Jump if Below or Equal/Jump Not Above (Nhaûy neáu thaáp
hôn hoaëc baèng/Nhaûy neáu khoâng cao hôn.
Cuù phaùp: JBE NHAN
JNA NHAN
Moâ taû: IP  IP + Dòch chuyeån
Hai leänh treân bieåu dieån cuøng moät thao taùc: nhaûy coù ñieàu kieän tôùi
NHAN neáu CF + ZF = 1. Quan heä “treân“, “cao hôn” (above) vaø “döôùi”, “thaáp
hôn” (below) laø caùc quan heä daønh cho vieäc so saùnh (do leänh CMP thöïc hieän)
ñoä lôùn cuûa hai soá khoâng daáu. Nhaõn NHAN phaûi naèm cach xa (dòch ñi moät
khoaûng) –128… +127 byte so vôùi leänh tieáp theo sau leänh JBE/JNA. Chöông
trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh vò trí dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JCZX – Jump if CX Register if Zero (Nhaûy neáu noäi dung thanh ñeám
roãng).
Cuù phaùp: JCZX NHAN
Moâ taû: IP  IP + Dòch chuyeån.
Ñaây laø leänh nhaûy (coù ñieàu kieän) tôùi NHAN neáu CX = 0 vaø khoâng
coù lieân heä gì vôùi côø ZF. Nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang96
khoaûng) –128… +127 byte so vôùi leänh tieáp theo sau leänh JCZX. Chöông trình
dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh vò trí dòch chuyeån.
Leänh naøy khoâng aûnh höôûng ñeán caùc côø.
 JE/JZ – Jump if Equal/Jump if Zero (Nhaûy neáu baèng nhau/Nhaûy neáu
keát quaû baèng khoâng)
Cuù phaùp: JE NHAN
JZ NHAN
Moâ taû: IP  IP + Dòch chuyeån
Hai leänh treân bieåu dieãn cuøng moät thao taùc: nhaûy coù ñieàu kieän tôùi
NHAN neáu ZF = 1. Nhaõn NHAN phaûi naèm cach xa (dòch ñi moät khoaûng) –
128…+127 byte so vôùi leänh tieáp theo sau leänh JE/JZ. Chöông trình dòch seõ caên
cöù vaøo vò trí NHAN ñeå xaùc ñònh vò trí dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 JG/JNLE – Jump if Greater than/Jump if Not Less than or Equal:
(Nhaûy neáu lôùn hôn/Nhaûy neáu khoâng beù hôn hoaëc baèng)
Cuù phaùp: JG NHAN
JNLA NHAN
Moâ taû: IP  IP + dòch chuyeån
Hai leänh treân bieåu dieãn cuøng moät thao taùc: nhaûy (coù ñieàu kieän) tôùi
NHAN neáu (SF  OF) + ZF = 0. Quan heä “lôùn hôn” (greater than) vaø “beù hôn”
(less than) laø caùc quan heä daønh cho vieäc so saùnh (do leänh CMP thöïc hieän)
cuûa hai soá coù daáu. Lôùn hôn coù nghiaõ laø döông hôn. Nhaõn NHAN phaûi
naèm caùch xa (dòch ñi moät khoaûng) –128 …+127 byte so vôùi leänh tieáp theo sau
leänh JD/JNLE. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh
giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JGE/JNL – Jump if Greater than or Equal/Jump if Not Less than
(Nhaûy neáu lôùn hôn hoaëc baèng/nhaûy neáu khoâng beù hôn)
Cuù phaùp: JGE NHAN
JNL NHAN
Moâ taû: IP  IP + Dòch chuyeån
Hai leänh treân bieåu dieãn cuøng moät thao taùc: nhaûy (coù ñieàu kieän) tôùi
NHAN neáu (SF  OF) + ZF = 0. Quan heä “lôùn hôn” (greater than) vaø “beù hôn”
(less than) laø caùc quan heä daønh cho vieäc so saùnh (do leänh CMP thöïc hieän)
cuûa hai soá coù daáu. Lôùn hôn coù nghiaõ laø döông hôn. Nhaõn NHAN phaûi
naèm caùch xa (dòch ñi moät khoaûng) –128 …+127 byte so vôùi leänh tieáp theo sau
leänh JGE/JNL. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh
giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JL/JNGE – Jump if Less Than/Jump if Not Greater than or Equal
(Nhaûy neáu beù hôn/nhaûy neáu khoâng lôùn hôn hoaëc baèng)
Cuù phaùp: JL NHAN
JNGE NHAN
Moâ taû: IP  IP + Dòch chuyeån.
Hai leänh treân bieåu dieãn cuøng moät thao taùc: nhaûy (coù ñieàu kieän) tôùi
NHAN neáu (SF  OF) + ZF = 0. Quan heä “lôùn hôn” (greater than) vaø “beù hôn”

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang97
(less than) laø caùc quan heä daønh cho vieäc so saùnh (do leänh CMP thöïc hieän)
cuûa hai soá coù daáu. Lôùn hôn coù nghiaõ laø döông hôn. Nhaõn NHAN phaûi
naèm caùch xa (dòch ñi moät khoaûng) –128 …+127 byte so vôùi leänh tieáp theo sau
leänh JL/JNGE. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh
giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JLE/JNG – jump if Less than or Equal/Jump if Not Greater than
(nhaûy neáu beù hôn hoaëc baèng/Nhaûy neáu khoâng lôùn hôn)
Cuù phaùp: JLE NHAN
JNG NHAN
Moâ taû: IP  IP + Dòch chuyeån
Hai leänh treân bieåu dieãn cuøng moät thao taùc: nhaûy (coù ñieàu kieän) tôùi
NHAN neáu (SF  OF) + ZF = 0. Quan heä “lôùn hôn” (greater than) vaø “beù hôn”
(less than) laø caùc quan heä daønh cho vieäc so saùnh (do leänh CMP thöïc hieän)
cuûa hai soá coù daáu. Lôùn hôn coù nghiaõ laø döông hôn. Nhaõn NHAN phaûi
naèm caùch xa (dòch ñi moät khoaûng) -128 …+127 byte so vôùi leänh tieáp theo sau
leänh JLE/JNG. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh
giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JMP – Unconditional Jump to Specified Destination (Nhaûy khoâng
ñieàu kieän ñeán moät ñích naøo ñoù)
Leänh naøy khieán boä vi xöû lyù 8086 baét ñaàu thöïc hieän moät leänh môùi
ñöôïc moâ taû trong leänh. Leänh naøy coù caùc cheá ñoä ñòa chæ gioáng nhö leänh
CALL vaø noù phaân bieät nhaûy xa vaø nhaûy gaàn. Tuøy thuoäc vaøo ñoä daøi cuûa
böôùc nhaûy chuùng ta phaân bieät 5 kieåu leänh nhaûy khaùc nhau: 3 kieåu nhaûy
gaàn 2 kieåu nhaûy xa vôùi ñoä daøi leänh khaùc nhau. Moãi oâ treân caùc leänh
töông öùng duøng ñeå ghi leänh. nhö vaäy leänh nhaûy coù ñoä daøi töø 2 ñeán 5 byte.
Sau ñaây laø caùc daïng leänh nhaûy khoâng ñieàu kieän:
 JMP NHAN
Leänh môùi baét ñaàu taïi ñòa chæ öùng vôùi nhaõn NHAN. Chöông trình dòch
seõ caên cöù vaøo khoaûng dòch giöõa nhaõn vaø leänh nhaûy ñeå xaùc ñònh xem
ñoù laø:
+ Nhaûy ngaén (short jump):
Trong tröôøng hôïp naøy nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät
khoaûng) nhieàu nhaát laø –128.. + 127 byte so vôùi leänh tieáp theo sau leänh JMP.
Chöông trình dòch caên cöù vaøo vò trí NHAN ñeå xaùc ñònh giaù trò dòch chuyeån
môû roäng daáu cho noù. Sau ñoù:
IP  IP + Dòch chuyeån
Ñaây laø leänh nhaûy tröïc tieáp vì dòch chuyeån ñöôïc ñeå tröïc tieáp trong maõ
leänh.
Ñeå ñònh höôùng cho chöông trình dòch laøm vieäc neân vieát leänh döôùi
daïng:
JMP SHORT NHAN
+ Nhaûy gaàn (near jump):
Trong tröôøng hôïp naøy nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät
khoaûng nhieàu nhaát laø –32768..+32767 byte so vôùi leänh tieáp theo sau leänh

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang98
JMP. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh giaù trò dòch
chuyeån. Sau ñoù:
IP  IP + Dòch chuyeån
Ñaây laø leänh nhaûy tröïc tieáp vì dòch chuyeån ñöôïc ñeå tröïc tieáp trong maõ
leänh.
Ñeå ñònh höôùng cho chöông trình dòch laøm vieäc neân vieát leänh döôùi daïng
:
JMP NEAR NHAN
+ Nhaûy xa (far jump):
Trong tröôøng hôïp naøy nhaõn NHAN naèm ôû ñoaïn maõ khaùc so vôùi leänh
tieáp theo sau leänh JMP. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc
ñònh giaù trò ñòa chæ nhaøy ñeán (CS:IP cuûa NHAN). Sau ñoù:
Nhaûy ngaén:
IP  IP cuûa NHAN
CS  CS cuûa NHAN
Ñaây laø leänh nhaûy tröïc tieáp vì ñòa chæ nhaûy ñeán ñöôïc ñeå tröïc tieáp
trong maõ leänh.
Ñeå ñònh höôùng cho chöông trình dòch laøm vieäc neân vieát leänh döôùi
daïng:
JMP FAR NHAN
NHAN trong tröôøng hôïp naøy phaûi ñöôïc khai laø:
NHAN LABEL FAR
 JMP BX
Ñaây laø leänh nhaûy gaàn tröôùc ñoù BX phaûi chöùa ñòa chæ leäch cuûa leänh
ñònh nhaûy ñeán trong ñoaïn CS. Khi thöïc hieän leänh naøy
IP  BX
Ñaây cuõng laø leänh nhaûy giaùn tieáp vì ñòa chæ leäch naèm trong thanh ghi.
Ñeå ñònh höôùng cho chöông trình dòch laøm vieäc neân vieát leänh döôùi
daïng:
JMP NEAR PTR BX
 JMP [BX]
Ñaây laø leänh nhaûy gaàn IP môùi ñöôïc laáy töø noäi dung 2 oâ nhôù do BX
vaø BX+1 chæ ra cho ñoaïn DS (SI, DI coù theå duøng thay choã cuûa BX).
Ñaây cuõng laø leänh nhaûy giaùn tieáp vì ñòa chæ leäch naèm trong oâ nhôù.
Ñeå ñònh höôùng cho chöông trình dòch laøm vieäc neân vieát leänh döôùi
daïng:
JMP WORD PTR [BX]
Moät bieán daïng khaùc cuûa leänh treân thu ñöôïc khi ta vieát döôùi daïng :
JMP DWORD PTR [BX]
Ñaây laø leänh nhaûy xa öùng. Ñòa chæ nhaûy ñeán öùng vôùi CS:IP, giaù trò
gaùn cho IP vaø CS ñöôïc chöùc trong 4 oâ nhôù do BX vaø BX+1 (cho IP) vaø BX+2
vaø BX+3 (cho CS) chæ ra trong ñoaïn DS (SI, DI coù theå duøng thay choã cuûa
BX).
Ñaây cuõng laø leänh nhaûy giaùn tieáp vì ñòa chæ leäch vaø ñòa chæ cô sôû
naèm trong oâ nhôù.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang99
 JNA – Xem JBE
 JNAE – Xem JB
 JNB – Xem JAE
 JNBE – Xem JA
 JNC – Xem JAE
 JNE/JNZ – Jump if Not Equal/Jump if Not Zero (Nhaûy neáu khoâng
baèng nhau/Nhaûy neáu keát quaû khoâng roãng)
Vieát leänh : JNE NHAN
JNZ NHAN
Moâ taû : IP  IP + Dòch chuyeån
Hai leänh treân bieåu dieãn cuøng moät thao taùc : nhaûy (coù ñieàu kieän) tôùi
NHAN neáu ZF = 0. Nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät khoaûng) –
128…+127 byte so vôùi leänh tieáp theo sau leänh JNE/JNZ. Chöông trình dòch seõ
caên cöù vaøo vò trí NHAN ñeå xaùc ñònh giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JNG – Xem JLE
 JNGE – Xem JL
 JNL – Xem JGE
 JNLE – Xem JG
 JNO – Jump if No Overflow (Nhaûy neáu khoâng traøn)
Vieát leänh: JNO NHAN
Moâ taû: IP  IP + Dòch chuyeån
Ñaây laø leänh nhaûy (coù ñieàu kieän) tôùi NHAN neáu OF=0, töù khoâng
xaûy ra traøn sau khi thöïc hieän caùc pheùp toaùn vôùi caùc soá coù daáu. Nhaõn
NHAN phaûi naèm caùch xa (dòch ñi moät khoaûng) –128…+127 byte so vôùi leänh
tieáp theo sau leänh JNO. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc
ñònh giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 JNZ  Xem JNE
 JO  Jump if Overflow (nhaûy neáu traøn)
Vieát leänh : JO NHAN
Moâ taû : IP  IP + Dòch chuyeån.
Ñaây laø leänh nhaûy (coù ñieàu kieän) tôùi NHAN neáu OF =1, töùc xaûy ra
traøn sau khi thöïc hieän caùc pheùp toaùn vôùi caùc soá coù daáu. Nhaõn NHAN
phaûi naèm caùch xa (dòch ñi moät khoaûng (-128…+127 byte so vôùi leänh tieáp
theo sau leänh JO. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh
giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JP/JPE  Jump if Parity/Jump if Parity Even (Nhaûy neáu parity chaün)
Cuù phaùp: JP NHAN
JPE NHAN
Moâ taû : IP  IP + Dòch chuyeån
Hai leänh treân bieåu dieãn cuøng moät thao taùc : Nhaûy (coù ñieàu kieän) tôùi
NHAN neáu PE=1. Nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät khoaûng) 
128... byte so vôùi leänh tieáp theo sau leänh JP/JPE. Chöông trình dòch seõ caên cöù
vaøo vò trí NHAN ñeå xaùc ñònh giaù trò dòch chuyeån.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang100
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JPE  Xem JP
 JPO  Xem JNP
 JS  Jump if Signed (Jump if Negative) (Nhaûy neáu keát quaû aâm).
Cuù phaùp: JS NHAN
Moâ taû : IP  IP + Dòch chuyeån.
Ñaây laø leänh nhaûy (coù ñieàu kieän) tôùi NHAN SF=1, töùc keát quaû laø
aâm sau khi thöïc hieän caùc pheùp toaùn vôùi caùc soá coù daáu. Nhaõn NHAN
phaûi naèm caùch xa (dòch ñi moät khoaûng) 128…+127 byte so vôùi leänh tieáp
theo sau leänh JS. Chöông trình dòch seõ caên cöù vaøo vò trí NHAN ñeå xaùc ñònh
giaù trò dòch chuyeån.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 JZ  Xem JE
 LAHF  Load AH with the low byte of the Flag Register (Naïp byte
thaáp cuûa thanh côø vaøo AH).
Duøng leänh naøy phoái hôïp vôùi leänh PUSH AX thì coù theå moâ phoûng
leänh PUSH PSW cuûa boä vi xöû lyù 8085 treân 8086 (leänh PUSH PSW cuûa vi
xöû lyù 8085 caát thanh ghi côø vaø Acc cuûa noù vaøo ngaên xeáp).
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 DS  Load Register and DS with Words from Memory Naïp moät töø
(töø boä nhôù) vaøo thanh ghi cho trong leänh vaø moät töø tieáp theo vaøo DS).
Cuù phaùp: LDS Ñích, Goác
Trong ñoù :
+ Ñích laø moät trong caùc thanh ghi : AX, BX, CX, DX, SP, BP, SI, DI.
+ Goác laø oâ nhôù trong ñoaïn DS ñöôïc chæ roõ trong leänh.
Moâ taû : Ñích  Goác, DS  Goác + 2.
Ñaây laø leänh ñeå naïp vaøo thanh ghi ñaõ choïn vaø vaøo DS töø 4 oâ nhôù
lieân tieáp.
Moät trong nhöõng öùng duïng cuûa leänh naøy laø laøm cho SI vaø DS chæ
vaøo ñòa chæ ñaàu cuûa vuøng nhôù chöùa chuoãi goác tröôùc khi duøng ñeán leänh
thao taùc chuoãi.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 LEA  Load Effective Address (Naïp ñòa chæ hieäu duïng vaøo thanh
ghi).
Cuù phaùp: LEA Ñích, Goác
Trong ñoù:
+ Ñích thöôøng laø moät trong caùc thanh ghi: BX, CX, DX, BP, SI, DI.
+ Goác laø teân bieán trong ñoaïn DS ñöôïc chæ roõ leänh hoaëc oâ nhôù cuï
theå.
Moâ taû: Ñích  Ñòa chæ leänh cuûa Goác, hoaëc
Ñích  Ñòa chæ hieäu duïng cuûa goác.
Ñaây laø leänh ñeå tìm ñòa chæ leäch cuûa bieán hoaëc ñòa chæ cuûa oâ nhôù
choïn laøm goác roài naïp vaøo thanh ghi ñaõ choïn
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 LES – Load Register and ES with Words from Memory Naïp moät töø
töø boä nhôù) vaøo thanh ghi cho trong leänh vaø moät töø tieáp theo vaøo ES)

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang101
Cuù phaùp: LES Ñích, Goác
Trong ñoù :
+ Ñích laø moät trong caùc thanh ghi : AX, BX, CX, DX, SP, BP, SI, DI.
+ Goác laø oâ nhôù tong ñoaïn DS ñöôïc chæ roõ trong leänh.
Moâ taû : Ñích  Goác, ES  Goác + 2.
Ñaây laø leänh ñeå naïp vaøo thanh ghi ñaõ choïn vaø vaøo ES töø 4 oâ nhôù
lieân tieáp.
Moät trong nhöõng öùng duïng cuûa leänh naøy laø laøm cho DI vaø ES chæ
vaøo ñòa chæ daáu cuûa vuøng nhôù chöùa chuoãi ñích tröôùc khi duøng ñeán leänh
thao taùc chuoãi.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
Naïp vaøo DI noäi dung 2 oâ nhôù do BX vaø BX + 1 chæ ra naïp vaøo ES noäi
dung 2 oâ nhôù tieáp theo do BX + 2 vaø BX + 3 chæ ra. Caùc oâ nhôù naøy ñeàu
naèm trong ñoaïn döõ lieäu DS vaø chöùa ñòa chæ cuûa chuoåi ñích. Do vaäy sau ñoù
ES:DI chæ vaøo ñaàu chuoåi ñích caàn thao taùc.
 LOCK – Assert Bus Lock Signal (Ñöa ra tín hieäu khoùa bus)
Leänh LOCK duøng ñaët tröôùc caùc leänh maø khi chaïy noù coù nguy cô gaây
loãi do khaû naêng xaûy ra tranh chaáp trong vieäc söû duïng bus giöõa boä vi xöû lyù
8086 vaø caùc boä xöû lyù khaùc trong heä thoáng ña xöû lyù. Neáu coù leänh LOCK
ñaët tröôùc moät leänh naøo ñoù, thì khi chaïy leänh naøy, 8086 ñöa ra tín hieäu khoùa
bus. Tín hieäu naøy seõ noái ra thieát bò ñieàu khieån bus ngoaøi ñeå caám caùc boä
xöû lyù khaùc trong heä thoáng söû duïng bus.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
Leänh XCHG caàn 2 laàn thaâm nhaäp bus ñeå hoaøn taát vieäc thöïc hieän
leänh, do ñoù caàn ñaët sau LOCK ñeå traùnh nguy cô tranh chaáp bus coù theå xaûy
ra trong heä thoáng ña xöû lyù.
 LODS/LODSB/LODSW – Load String Byte/Word into AL/AX (Naïp
vaøo AL/AX 1 phaàn töû cuûa chuoãi byte/töø)
Cuù phaùp: LODS Chuoãi goác
LODSB
LODSW
Moâ taû : AL  Phaàn töû hieän thôøi, SI  SI + tuøy theo DF, neáu laø
chuoãi byte
AX  Phaàn töû hieän thôøi, SI  SI + 2 tuøy theo DF, neáu laø
chuoãi töø
(Phaàn töû hieän thôøi cuûa chuoãi laø do DS : SI hieän thôøi chæ ra)
Leänh LODS naïp vaøo AL/AX 1 bytes/ töø (1 phaàn töû cuûa chuoãi ñaõ ñöôïc
ñònh nghóa tröôùc laø chuoãi goàm caùc byte hoaëc töø do SI chæ ra trong ñoaïn DS,
sau ñoù SI töï ñoäng taêng/giaûm ñeå chæ vaøo phaàn töû tieáp theo tuøy theo côø
höôùng. Khi phaûi dòch leänh LODS Chuoãigoác, chöông trình dòch duøng teân
Chuoãigoác ñeå xaùc ñònh xem luùc khai baùo thì Chuoãigoác coù caùc phaàn töû laø
byte hay töø. Muoân chæ roõ cho chöông trình dòch hôïp ngöõ raèng ta laøm vieäc
vôùi chuoãi caùc byte hoaëc caùc töø, ta cuõng coù theå duøng leänh LODSB hoaëc
LODSW.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang102
 LOOP – Jump to Speciafied Label if CX # O after Autodecrement (laëp
laïi ñoaïn chöông trình do nhaõn chæ ra cho ñeán khi CX = 0.
Cuù phaùp: LOOP NHAN
Moâ taû:
Leänh naøy duøng ñeå laäp laïi ñoaïn chöông trình (goàm caùc leänh naèm trong
khoaûng töø nhaõn NHAN ñeán heát leänh LOOP NHAN) cho ñeán khi soá laàn laëp
CX = 0. Ñieàu naøy coù nghóa laø tröôùc khi vaøo voøng laëp ta phaûi ñöa soá laàn
laëp mong muoán vaøo thanh ghi CX vaø sau moãi laàn thöïc hieän leänh LOOP
NHAN thì ñoàng thôøi CX töï ñoäng giaûm ñi 1 (töùc laø CX  CX – 1)
Nhaõn NHAN phaûi naèm caùch xa dòch ñi moät khoaûng) – 128 byte so vôùi
leänh tieáp theo sau leänh LOOP.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 LOOPE/LOOPZ – Loop White CX # O and ZF = 1 (Laëp laïi ñoaïn
chöông trình do nhaõn chæ ra cho ñeán khi CX=0 hoaëc ZF = 0)
Cuù phaùp: LOOPE NHAN
LOOPZ NHAN
Moâ taû:
Leänh naøy duøng ñeå laäp laïi ñoaïn chöông trình (goàm caùc leänh naèm trong
khoaûn töø nhaõn NHAN ñeán heát leänh LOOPE NHAN hoaëc LOOPZ NHAN) cho
ñeán khi soá laàn laëp CX = 0, hoaëc ZF = 0. Ñieàu naøy coù nghóa laø tröôùc khi
vaøo voøng laëp ta phaûi ñöa soá laàn laëp mong muoán vaøo thanh ghi CX vaø sau
moãi laàn thöïc hieän leänh LOOP NHAN thì ñoàng thôøi CX töï ñoäng giaûm ñi 1
(töùc laø CX  CX – 1)
Nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät khoaûng) –128 byte so vôùi
leänh tieáp theo sau leänh LOOPE / LOOPZ.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 LOOPNE/LOOPNZ – Loop While CX # O and ZF = 0 (Laëp laïi ñoaïn
chöông trình do nhaõn chæ ra cho ñeán khi CX = 0 hoaëc ZF = 1)
Cuù phaùp: LOOPE NHAN
LOOPZ NHAN
Moâ taû:
Leänh naøy duøng ñeå laäp laïi ñoaïn chöông trình (goàm caùc leänh naèm trong
khoaûng töø nhaõn NHAN ñeán heát leänh LOOPNE NHAN hoaëc LOOPNZ NHAN)
cho ñeán khi soá laàn laëp CX = 0 hoaëc ZF = 1. Ñieàu naøy coù nghóa laø tröôùc khi
vaøo voøng laëp ta phaûi ñöa soá laàn laëp mong muoán vaøo thanh ghi CX vaø sau
moãi laàn thöïc hieän leänh LOOP NHAN thì ñoàng thôøi CX töï ñoäng giaûm ñi 1
(töùc laø CX  CX – 1)
Nhaõn NHAN phaûi naèm caùch xa (dòch ñi moät khoaûng) – 128 byte so vôùi
leänh tieáp theo sau leänh LOOPNE/LOOPNZ.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
LOOPNZ – Xem LOOPNE
LOOPZ – Xem LOOPE
 MOV – Move a Word or Byte (Chuyeån moät töø hay moät byte)
Cuù phaùp: MOV Ñích, Goác
Moâ taû : Ñích  Goác

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang103
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi coù cuøng ñoä daøi vaø khoâng ñöôïc pheùp ñoàng
thôøi laø 2 oâ nhôù hoaëc 2 thanh ghi ñoaïn.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 MOVS/MOVSB/MOVSW – Move String Byte or String Word
(Chuyeån 1 phaàn töû cuûa 1 chuoãi sang moät chuoãi khaùc)
Cuù phaùp: MOVS Chuoãiñích, Chuoãigoác
MOVSB
MOVSW
Moâ taû : Phaàn töû Chuoãiñích  Phaàn töû Chuoãigoác
Leänh naøy duøng chuyeån töøng byte hay töøng töø cuûa chuoãi goác sang
chuoãi ñích trong ñoù:
+ DS:SI laø ñòa chæ cuûa phaàn töû trong chuoãi goác.
+ ES:DI laø ñòa chæ cuûa phaàn töû trong chuoãi ñích.
+ Sau moãi laàn chuyeån SI  SI + 1. DI  DI + 1 hoaëc SI  SI + 2. DI 
DI + 2 moät caùch töï ñoäng tuøy thuoäc côø höôùng DF laø 0/1 vaø chuoãi laø chuoãi
byte hoaëc chuoãi töø.
Coù 2 caùch ñeå chæ ra chuoãi byte hoaëc chuoãi töø. Caùch ñaàu tieân laø ta
khai roõ baèng teân chuoãi nguoàn vaø chuoãi ñích laø loaïi gì ngay töø ñaàu chöông
trình. Caùch thöù hai laø ta theâm vaøo leänh MOVS ñuoâi “B” cho chuoãi byte hoaëc
ñuoâi “W” cho chuoãi töø (xem moâ taû caùch söû duïng taïi leänh COMPS).
Leänh MOVS/MOVSB/MOVSW coù theå duøng keøm vôùi leän REPE hoaëc
REPNE ñeå so saùnh taát caû caùc phaàn töû trong chuoãi.
 MUL – Multiply Unsigned Byte or Word (Nhaõn soá khoâng daáu)
Cuù phaùp: MUL Goác
Trong ñoù toaùn haïng Goác laø soá nhaân vaø coù theå tìm ñöôïc theo caùc cheá
ñoä ñòa chæ khaùc nhau.
Moâ taû:
Tuøy theo ñoä daøi cuûa toaùn haïng Goác ta coù 2 tröôøng hôïp toå chöùc
pheùp nhaân, choã ñeå ngaàm ñònh cho soá bò nhaân vaø keát quaû.
+ Neáu Goác laø soá 8 bit : AL x Goác
soá bò nhaân phaûi laø soá 8 bit ñeå trong AL.
sau khi nhaân : AX  tích
+ Neáu Goác laø soá 16 bit : AX x Goác
soá bò nhaân phaûi laø soá 16 bit ñeå trong AX.
sau khi nhaân : DXAX  tích
Neáu byte cao (hoaëc 16 bit cao) cuûa 16 (hoaëc 32) bit keát quaû chöùa 0 thì CF
= OF = 0.
Nhö vaäy caùc côø CF vaø OF seõ baùo cho ta bieát coù theå boû ñi bao nhieâu
soá 0 trong keát quaû.
Caäp nhaät : CF, OF
Khoâng xaùc ñònh : AF, PF, SF, ZP
 NEG – Negate a Operand (Form its 2’s Complement) (Laáy buø hai
cuûa moät toaùn haïng, ñaûo daáu cuûa moät toaùn haïng).
Cuù phaùp: NEG Ñích

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang104
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.
Moâ taû : Ñích  0 - (Ñích)
Ñieàu naøy hoaøn toaøn töông ñöông vôùi vieäc laáy (Ñích + 1) laøm keát quaû.
Neáu ta laáy buø hai cuûa –128 hoaëc –32768 thì ta seõ ñöôïc keát quaû khoâng ñoåi
nhöng côø
OF = 1 ñeå baùo laø keát quaû bò traøn (vì soá döông lôùn nhaát bieåu dieãn ñöôïc laø
+127 vaø +32767)
Caäp nhaät : AF, CF, OF, PF, SF, ZF.
 NOP – No Operation (CPU khoâng laøm gì)
Leänh naøy khoâng thöïc hieän moät coâng vieäc gì ngoaïi tröø vieäc taêng noäi
dung cuûa IP vaø tieâu toán 3 chu kyø ñoàng hoà. Noù thöôøng ñöôïc duøng ñeå tính
thôøi gian trong caùc voøng treã hoaëc ñeå chieám choã cho caùc leänh caàn theâm
vaøo chöông trình sau naøy maø khoâng laøm aûnh höôûng toái ñoä daøi cuûa chöông
trình.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 NOT – Invert Each Bit of an Operand (From its 1’s Complement)
(Laáy buø cuûa moät toaùn haïng, ñaûo bit cuûa moät toaùn haïng)
Cuù phaùp: NOT Ñích
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.
Moâ taû: Ñích  (Ñích)
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 OR – Logically Or Corresponding Bits of Two Operands (Hoaëc 2
toaùn haïng)
Cuù phaùp: OR Ñích, Goác.
Moâ taû: Ñích  Ñích v Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø 2 oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn. Pheùp
OR thöôøng duøng ñeå laäp moät vaøi bit naøo ñoù cuûa toaùn haïng baèng caùch
coäng logic toaùn haïng ñoù vôùi toaùn haïng töùc thôøi coù caùc bit 1 taïi caùc vò trí
töông öùng caàn thieát laäp.
Xoaù: CF, OF
Caäp nhaät : PF, SF, ZP, PF chæ coù nghóa khi toaùn haïng laø 8 bit
Khoâng xaùc ñònh : AF
 OUT – Output a Byte or a Word to a Port (Ñöa döõ lieäu töø Acc ra
coång)
Cuù phaùp: OUT Port, Acc
Moâ taû: Acc  {Port}
Trong ñoù {Port} laø döõ lieäu cuûa coång coù ñòa chæ laø Port. Port laø ñòa
chæ 8 bit cuûa coång, noù coù theå coù caùc giaù trò trong khoaûng 00H…FFH. Nhö
vaäy ta coù theå coù caùc khaû naêng sau:
+ Neáu Acc laø AL thì döõ lieäu 8 bit ñöôïc ñöa ra coång Port
+ Neáu Acc laø AX thì döõ lieäu 16 bit ñöôïc ñöa ra coång Port vaø coång Port
+1

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang105
Coù moät caùch khaùc ñeå bieåu dieãn ñòa chæ coång laø thoâng qua thanh ghi
DX. Khi duøng thanh ghi DX ñeå chöùa ñòa chæ coång ta seõ coù khaû naêng ñòa
chæ hoùa coång meàm deûo hôn. Luùc naøy ñòa chæ coång naèm trong daûi 0000H…
FFFFH vaø ta phaûi vieát leänh theo daïng:
OUT DX, Acc
Trong ñoù DX phaûi ñöôïc gaùn töø tröôùc giaù trò öùng vôùi ñòa chæ coång.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 POP – Pop Word from Top of Stack (Laáy laïi 1 töø vaøo thanh ghi töø
ñænh ngaên xeáp)
Cuù phaùp: POP Ñích
Moâ taû : Ñích  {SP}
SP  SP + 2
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau: coù theå laø caùc thanh ghi ña naêng, thanh ghi ñoaïn (nhöng khoâng
ñöôïc laø thanh ghi ñoaïn maõ CS) hoaëc oâ nhôù. Döõ lieäu ñeå taïi ngaên xeáp
khoâng thay ñoåi. Giaù trò cuûa SS khoâng thay ñoåi.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 POPF – Pop Word from Top of Stack to Flag Register (Laáy 1 töø töø
ñænh ngaên xeáp roài ñöa vaøo thanh côø)
Cuù phaùp: POPF
Moâ taû : RF  {SP}
SP  SP + 2
Sau leänh naøy döõ lieäu ñeå taïi ngaên xeáp khoâng thay ñoåi, SS khoâng thay
ñoåi.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 PUSH – Push Word on the Stack (Caát 1 töø vaøo ngaên xeáp)
Cuù phaùp: Push Goác
Moâ taû : SP  SP – 2
Goác  {SP}
Trong ñoù toaùn haïng goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau: coù theå laø caùc thanh ghi ña naêng, thanh ghi ñoaïn hoaëc oâ nhôù.
Leänh naøy thöôøng duøng vôùi leänh POP nhö laø moät caëp ñoái ngaãu ñeå xöû lyù
caùc döõ lieäu vaø traïng thaùi cuûa chöông trình chính (CTC) khi vaøo/ra chöông
trình con (ctc).
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 PUSHF – Push Flag Register to the Stack (caát thanh côø vaøo ngaên
xeáp)
Cuù phaùp: PUSHF
Moâ taû : SP  SP – 2
RF  {SP}
Döõ lieäu ñeå taïi ngaên xeáp khoâng thay ñoåi. SS khoâng thay ñoåi.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 RCL – rotate though CF to the Left (Quay traùi thoâng qua côø nhôù)
Cuù phaùp: RCL Ñích, CL
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang106
Leänh naøy duøng ñeå quay toaùn haïng sang traùi thoâng qua côø CF. CL phaûi
ñöôïc chöùa saün soá laàn quay mong muoán. Trong tröôøng hôïp quay moät laàn coù
theå vieát tröïc tieáp :
RCL Ñích, 1
(Töø caùc boä vi xöû lyù theá heä sau nhö 80186, 80286 ... thì coù theå vieát
tröïc tieáp kieåu naøy vôùi soá laàn quay lôùn nhaát laø 32). Ta nhaän thaáy neáu soá
laàn quay laø 9 thì keát quaû khoâng thay ñoåi vì caëp CF vaø toaùn haïng quay troøn
ñuùng moät voøng.
Taùc ñoäng vaøo côø : Chæ coù CF vaø OF bò aûnh höôûng
Sau leänh RCL côø CF mang giaù trò cuõ cuûa MSB bò thay ñoåi so vôùi tröôùc
khi quay. Côø OF seõ khoâng ñöôïc xaùc ñònh nhieàu laàn quay.
 RCR – Rotate though CF to the Right (Quay phaûi thoâng qua côø nhôù)
Cuù phaùp: RCR Ñích, CL
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau
Leänh naøy duøng ñeå quay toaùn haïng sang phaûi thoâng qua côø CF, CL
phaûi ñöôïc chöùa saün soá laàn quay mong muoán. Trong tröôøng hôïp quay moät
laàn coù theå vieát tröïc tieáp :
RCR Ñích, 1
(töø caùc boä vi xöû lyù theá heä sau nhö 80186, 80286 ... thì coù theå vieát tröïc
tieáp kieåu naøy vôùi soá laàn quay lôùn nhaát laø 32). Ta nhaän thaáy neáu soá laàn
quay laø 9 thì keát quaû khoâng thay ñoåi vì caëp CF vaø toaùn haïng thanh ghi quay
troøn ñuùng moät voøng
Taùc ñoäng vaøo côø : Chæ coù CF vaø OF bò aûnh höôûng
Sau leänh RCR côø CF mang giaù trò cuõ cuûa LSB, coøn côø OF  1 neáu sau
khi quay 1 laàn maø bit MSB bò thay ñoåi so vôùi tröôùc khi quay. Côø OF seõ
khoâng ñöôïc xaùc ñònh sau nhieàu laàn quay
 REP – Repeat String Instruction until CX = 0 (laëp laïi leänh vieát sau
ñoù cho tôùi khi CX = 0)
Ñaây laø tieáp ñaàu ngöõ duøng ñeå vieát tröôùc caùc leänh thao taùc vôùi
chuoãi döõ lieäu maø ta muoán laëp laïi moät soá laàn. Soá laàn laëp phaûi ñeå tröôùc
trong CX. Khi caùc leänh naøy ñöôïc laëp laïi thì CX töï ñoäng giaûm ñi 1 sau moãi
laàn laëp. Quaù trình seõ keát thuùc khi
CX = 0.
 REPE/REPZ – Repeat String Instruction until CX = 0 or ZF = 0 (Laëp
laïi leänh vieát sau ñoù cho tôùi CX=0 hoaëc ZF=0
Ñaây laø caùc tieáp ñaàu ngöõ duøng ñeå vieát tröôùc caùc leänh thao taùc vôùi
chuoãi döõ lieäu maø ta muoán laëp laïi moät soá laàn. Soá laàn laëp phaûi ñeå tröôùc
trong CX. Khi caùc leänh naøy ñöôïc laëp laïi thì CX töï ñoäng giaûm ñi 1 sau moãi
laàn laëp. Khi duøng REPE/REPZ vôùi leänh so saùnh chuoãi, quaù trình seõ keát
thuùc khi ñeám heát (CX = 0) hoaëc sau khi 2 phaàn töû so saùnh khaùc nhau (ZF =
0).
 REPNE/REPNZ – Repeat String Instruction until CX = 0 or ZF = 1
(laëp laïi leänh vieát sau ñoù cho tôùi khi CX = 0 hoaëc ZF = 1)
Ñaây laø caùc tieáp ñaàu ngöõ duøng ñeå vieát tröôùc caùc leänh thao taùc vôùi
chuoãi döõ lieäu maø ta muoán laëp laïi moät soá laàn. Soá laàn laëp phaûi ñeå tröôùc

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang107
trong CX töï ñoäng giaûm ñi sau moãi laàn laëp. Khi duøng REPNE/REPNZ vôùi
leänh queùt chuoãi, quaù trình seõ keát thuùc khi ñeám heát (CX=0) hoaëc khi Acc
baèng phaàn töû cuûa chuoãi (ZF = 1).
 RET – Return from Procedure to Calling Program (Trôû veà chöông
trình chính töø chöông trình con)
Cuù phaùp: RET hoaïc RET n, n laø soá nguyeân döông
Moâ taû :
RET ñöôïc ñaët taïi cuoái ctc ñeå boä vi xöû lyù laáy laïi ñòa chæ trôû veà (ñòa
chæ cuûa leänh tieáp theo leänh goïi ôû chöông trìng chính), noù ñöôïc töï ñoäng caát
ôû ngaên xeáp khi coù leänh goïi chöông trình con. Tuøy theo loaïi leänh goïi gaàn
hay xa ta cuõng seõ coù caùc xöû lyù khaùc nhau ñoái vôùi ñòa chæ trôû veà (xem
theâm phaàn moâ taû chung vôùi leänh CALL)
Ñaëc bieät neáu ta duøng RET n thì sau khi ñaõ laáy laïi ñöôïc ñòa chæ trôû veà
(chæ coù IP hoaëc coù caû CS vaø IP) thì SP  SP + n (duøng ñeå nhaûy qua maø
khoâng laáy laïi caùc thoâng soá khaùc cuûa chöông trình coøn laïi trong ngaên xeáp)
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 ROL – Rotate All Bits to the Left (Quay voøng sang traùi)
Cuù phaùp: ROL Ñích, CL
Trong ñoù toaùn haïng ñich coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.
Leänh naøy duøng ñeå quay voøng toaùn haïng sang traùi, MSB seõ ñöôïc ñöa
qua côø CF vaø LSB, CL phaûi ñöôïc chöùa saün soá laàn quay mong muoán. Trong
tröôøng hôïp quay moät laàn coù theå vieát tröïc tieáp :
ROL Ñích, 1
(töø caùc boä vi xöû lyù theá heä sau nhö 80186, 80286... thì coù theå vieát tröïc
tieáp kieåu naøy vôùi soá laàn quay lôùn nhaát laø 32). Ta nhaän thaáy neáu CL = 8
vaø toaùn haïng ñeå quay laø 8 bit thì keát quaû khoâng bò thay ñoåi vì toaùn haïng
quay troøn ñuùng moät voøng, coøn neáu: CL = 4 thì 2 nibble cuûa toaùn haïng bò
ñoåi choã.
Taùc ñoäng vaøo côø : Chæ coù CF vaø OF bò aûnh höôûng
Sau leänh ROL côø CF mang giaù trò cuõ cuûa MSB, coøn côø OF  1 neáu
sau khi quay 1 laàn maø bit MSB bò thay ñoåi so vôùi tröôùc khi quay. Côø OF seõ
khoâng ñöôïc xaùc ñònh sau nhieàu laàn quay. Leänh naøy thöôøng duøng ñeå taïo
côø CF töø giaù trò cuûa MSB laøm ñieàu kieän cho caùc leänh nhaûy coù ñieàu
kieän.
 ROR – Rotate All Bits to the Right (Quay voøng sang phaûi)
Cuù phaùp: ROR Ñích, CL
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.
Leänh naøy duøng ñeå quay voøng toaùn haïng sang phaûi, LSB seõ ñöôïc ñöa
qua côø CF, MSB. CL phaûi ñöôïc chöùa saün soá laàn quay mong muoán. Trong
tröôøng hôïp quay moät laàn coù theå vieát tröïc tieáp :
ROR Ñích, 1
(töø caùc boä vi xöû lyù theá heä sau nhö 801286, 80286 ... thì coù theå vieát
tröïc tieáp kieåu naøy vôùi soá laàn quay lôùn nhaát laø 32). Ta nhaän thaáy neáu CL

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang108
= 8 thì keát quaû khoâng bò thay ñoåi vì toaùn haïng quay troøn ñuùng moät voøng,
coøn neáu CL = 4 thì 2 nibble cuûa noù bò ñoåi choã.
Taùc ñoäng vaøo côø : Chæ coù CF vaø OF bò aûnh höôûng
Sau leänh ROR côø CF mang giaù trò cuõ LSB, coøn côø OF  1 neáu sau khi
quay 1 laàn maø bòt MSB bò thay ñoåi so vôùi tröôùc khi quay. Côø OF seõ khoâng
ñöôïc xaùc ñònh nhieàu laàn quay. Leänh naøy thöôøng duøng ñeå taïo côø CF töø
giaù trò cuûa LSB laøm ñieàu kieän cho caùc leänh nhaûy coù ñieàu kieän.
 SAHF – Store AH Register into Low byte of Flag Register (caát thanh
ghi AH vaøo byte thaáp cuûa thanh côø)
Moâ taû : FRL  AH
Duøng leänh naøy phoái hôïp vôùi leänh POP AX thì coù theå moâ phoûng leänh
POP PSW cuûa boä vi xöû lyù 8085 treân 8086
Caäp nhaät : AF, CF, OF, PF, SF, ZP
 SAL – Shift Arithmetically Left (Dòch traùi soá hoïc) / SHL – Shift
(Logically) Left (Dòch traùi logic)
Cuù phaùp: SAL Ñích, CL
SHL Ñích, CL
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau
Hai leänh naøy coù cuøng taùc duïng dòch traùi soá hoïc toaùn haïng (coøn goïi
laø dòch traùi logic ñeå coù leänh ñoái nhau vôùi leänh dòch phaûi logic seõ noùi ôû
phaàn sau). Moãi laàn dòch MSB seõ ñöôïc ñöa qua côø CF vaø 0 ñöa vaøo LSB.
Thao taùc kieåu naøy ñöôïc goïi laø dòch logic. CL phaûi ñöôïc chöùa saün soá laàn
dòch mong muoán. Trong tröôøng hôïp dòch moät laàn coù theå vieát tröïc tieáp :
SAL Ñích, 1
(töø caùc boä vi xöû lyù theá heä sau nhö 80186, 80286 ... thì coù theå vieát tröïc
tieáp kieåu naøy vôùi soá laàn dòch lôùn nhaát laø 32). Ta nhaän thaáy moät laàn dòch
traùi kieåu naøy töông ñöông vôùi moät laàn laøm pheùp nhaân vôùi 2 cuûa soá
khoâng daáu. Vì vaäy ta coù theå laøm pheùp nhaân moät soá vôùi soá nhaân khoâng
daáu töông ñöông vôùi 2 baèng caùc dòch traùi soá hoïc soá bò nhaân i laàn. Chính vì
vaäy thao taùc naøy coøn ñöôïc goïi laø dòch traùi soá hoïc. Trong chöøng möïc nhaát
ñònh leänh naøy chaïy nhanh hôn MUL
Taùc ñoäng vaøo côø :
Sau leänh SAL hoaëc SHL côø CF mang giaù trò cuõ cuûa MSB (vì vaäy leänh
naøy coøn duøng ñeå taïo côø CF töø giaù trò cuûa MSB laøm ñieàu kieän cho caùc
leänh nhaûy coù ñieàu kieän), coøn côø OF  1 neáu sau khi dòch 1 laàn maø bit
MSB bò thay ñoåi so vôùi tröôùc khi dòch. Côø OF seõ khoâng ñöôïc xaùc ñònh sau
nhieàu laàn dòch.
Caäp nhaät : SF, ZF, PF, PF chæ coù yù nghóa khi keát quaû laø 8 bit.
Khoâng xaùc ñònh : AF
 SAR – Shift Arithmetically Right (Dòch phaûi soá hoïc)
Cuù phaùp: SAR Ñích, CL
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.
Leänh naøy coù taùc duïng dòch phaûi soá hoïc toaùn haïng. Sau moãi laàn dòch
MSB seõ ñöôïc giöõ laïi (neáu ta hieåu ñaây laø bit daáu cuûa moät soá coù daáu thì

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang109
daáu luoân khoâng ñoåi sau pheùp dòch phaûi soá hoïc) coøn LSB ñöôïc ñöa vaøo côø
CF. CL phaûi ñöôïc chöùa saün soá laàn dòch mong muoán. Trong tröôøng hôïp dòch
moät laàn coù theå vieát tröïc tieáp:
SAR Ñích, 1
(töø caùc boä vi xöû lyù theá heä sau nhö 80186, 80286 ... thì coù theå vieát tröïc
tieáp kieåu naøy vôùi soá laàn dòch lôùn nhaát laø 32). Ta nhaän thaáy moät laàn dòch
phaûi kieåu naøy töông ñöông vôùi moät laàn laøm pheùp chia cho 2 cuûa soá coù
daáu. Vì vaäy coù theå laøm pheùp chia soá coù daáu cho moät soá khoâng daáu töông
ñöông vôùi 2 baèng caùch dòch phaûi soá hoïc soá bò chia i laàn. Chính vì vaäy thao
taùc naøy coøn ñöôïc goïi laø dòch phaûi soá hoïc.
Taùc ñoäng vaøo côø:
Sau leänh SAR côø CF mang giaù trò cuõ cuûa MSB (vì vaäy leänh naøy coøn
duøng ñeå taïo côø CF töø giaù trò cuûa MSB laøm ñieàu kieän cho caùc leänh nhaûy
coù ñieàu kieän), coøn côø OF  1 neáu sau khi dòch 1 laàn maø bit MSB bò thay
ñoåi so vôùi tröôùc khi dòch. Côø OF seõ khoâng ñöôïc xaùc ñònh sau nhieàu laàn
dòch.
Caäp nhaät: SF, ZF, PF, PF chæ coù yù nghóa khi keát quaû laø 8 bit.
Khoâng xaùc ñònh: AF.
 SBB – Substract with Borrow (Tröø coù möôïn)
Cuù phaùp: SBB Ñích, Goác
Moâ taû : Ñích  Ñích – Goác – CF
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa cuøng moät loaïi döõ lieäu vaø khoâng ñöôïc
pheùp ñoàng thôøi laø 2 oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn.
Caäp nhaät : AF, CF, OF, PF, SF, ZP (AP vaø PF chæ lieân quan ñeán 8 bit
thaáp)
 SCAS/SCASB/SCASW – Scan a String Byte or a String Word (Queùt
chuoãi byte hay chuoãi töø)
Cuù phaùp: SCAS chuoãi ñích
SCASB
SCASW
Moâ taû:
AL – Phaàn töû chuoãi ñích, DI  DI + tuøy theo DF, neáu laø
chuoãi byte
AX – Phaàn töû chuoãi ñích, DI  DI + 2 tuøy theo DF, neáu laø
chuoãi töø
(Phaàn töû chuoãi ñích laø do ES:DI hieän thôøi chæ ra)
Leänh SCAS so saùnh AL hoaëc Ax vôùi töøng byte hay töøng töø cuûa xaâu
ñích chæ ñeå taïo caùc côø, khoâng löu keát quaû so saùnh, caùc toaùn haïng khoâng
bò thay ñoåi. Sau ñoù DI töï ñoäng taêng/giaûm ñeå chæ vaøo phaàn töû tieáp theo
tuøy theo côø höôùng. Khi dòch leänh SCAS Chuoãiñích, chöông trình dòch duøng
teân Chuoãiñích ñeå xaùc ñònh xem luùc khai baùo thì Chuoãiñích coù caùc phaàn töû
laø byte hay töø. Muoán chæ roõ cho chöông trình dòch hôïp ngöõ raèng ta laøm vieäc
vôùi chuoãi byte (chöùc caùc byte) hoaëc chuoãi töø (chöùa caùc töø), ta cuõng coù
theå duøng leänh SCASB hoaëc SCASW. Caùc leänh naøy coøn thöôøng duøng keøm

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang110
vôùi REPNE/REPNZ ñeå laëp laïi vieäc queùt moät soá laàn hoaëc queùt cho tôùi khi
tìm ñöôïc maãu caàn tìm.
Caäp nhaät : AF, CF, OF, PF, SF, ZP
 SHL – Xem SAL
 SHR – Shift (Logically) Right (Dòch phaûi logic)
Cuù phaùp: SHR Ñích, CL
Trong ñoù toaùn haïng ñích coù theå tìm ñöôïc theo caùc cheá ñoä ñòa chæ
khaùc nhau.
Leänh naøy duøng ñeå dòch phaûi logic toaùn haïng. Sau moãi laàn dòch LSB
seõ ñöôïc ñöa qua côø CF vaø 0 ñöa vaøo MSB. Thao taùc kieåu naøy ñöôïc goïi laø
dòch logic. CL phaûi ñöôïc chöùa saün soá laàn dòch mong muoán. Trong tröôøng
hôïp dòch moät laàn coù theå vieát tröïc tieáp:
SHR Ñích, 1
(töø caùc boä vi xöû lyù theá heä sau nhö 80186, 80286 ... thì coù theå vieát tröïc
tieáp kieåu naøy vôùi soá laàn dòch lôùn nhaát laø 32). Ta nhaän thaáy moät laàn dòch
traùi kieåu naøy töông ñöông vôùi moät laàn laøm pheùp chia cho 2 cuûa soá khoâng
daáu. Vì vaäy coù theå laøm pheùp chia soá khoâng daáu cho moät soá khoâng daáu
töông ñöông vôùi 2 baèng caùch dòch phaûi logic soá bò chia i laàn.
Taùc ñoäng vaøo côø :
Sau leänh SHR côø CF mang giaù trò cuõ cuûa LSB (vì vaäy leänh naøy coøn
duøng ñeå taïo côø CF töø giaù trò cuûa LSB laøm ñieàu kieän cho caùc leänh nhaûy
coù ñieàu kieän), coøn côø OF  1 neáu sau khi dòch 1 laàn maø bit MSB bò thay
ñoåi so vôùi tröôùc khi dòch. Côø OF seõ khoâng ñöôïc xaùc ñònh sau nhieàu laàn
dòch
Caäp nhaät: SF, ZF, PF, PF chæ coù yù nghóa khi keát quaû laø 8 bit.
Khoâng xaùc ñònh: AF.
 STC – Set the Carry Flag (Laäp côø nhôù)
Moâ taû: CF  1
Khoâng taùc ñoäng ñeán caùc côø khaùc
 STD – Set the Direction Flag (Laäp côø höôùng)
Moâ taû: DF  1
Leänh naøy ñònh höôùng thao taùc cho caùc leänh laømvieäc vôùi chuoãi theo
chieàu luøi (). Caùc thanh ghi SI vaø DI lieân quan seõ ñöôïc töï ñoäng giaûm khi
laøm vieäc xong vôùi moät phaàn töû cuûa chuoãi.
Khoâng taùc ñoäng ñeán caùc côø khaùc
 STI – Set the Interrupt Flag (Laäp côø cho pheùp ngaét)
Moâ taû: IF  1
Leänh naøy laäp côø cho pheùp ngaét ñeå cho pheùp caùc yeâu caàu ngaét taùc
ñoäng vaøo chaân INTR ñöôïc CPU nhaän bieát. Khi IF = 1 neáu coù tín hieäu INTR
= 1 thì 8086 seõ bò ngaét, noù seõ töï ñoäng caát thanh ghi côø vaø ñòa chæ trôû veà
vaøo ngaên xeáp roài chuyeån sang chaïy chöông trình (con) phuïc vuï ngaét CTPVN.
Taïi cuoái CTPVN seõ coù leänh trôû veà CTC töø CTPVN (IRET) ñeå 8086 laáy laïi
töø ngaên xeáp giaù trò cuûa thanh ghi côø vaø ñòa chæ trôû veà.
Khoâng taùc ñoäng ñeán caùc côø khaùc.
 STOS/STOSB/STOSW – Store AL/AX in String Byte/Word (caát
AL/AX vaøo 1 phaàn töû cuûa chuoãi byte/töø)

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang111
Cuù phaùp: STOS Chuoãiñích
STOSB
STOSW
Moâ taû : AL  Phaàn töû hieän thôøi, DI  DI + tuøy theo DF, neáu laø
chuoãi byte
AX  Phaàn töû hieän thôøi, DI  DI + 2 tuøy theo DF, neáu
laø chuoãi töø
(Phaàn töû chuoãi ñích laø do ES:DI hieän thôøi chæ ra)
Leänh STOS caát AL/AX vaøo 1 byte/töø (1 phaàn töû cuûa chuoãi ñaõ ñöôïc
ñònh nghóa tröôùc laø chuoãi goàm caùc byte hoaëc töø) do DI chæ ra trong ñoaïn ES,
sau ñoù DI töï ñoäng taêng/giaûm ñeå chæ vaøo phaàn töû tieáp theo tuøy theo côø
höôùng. Khi dòch leänh STOS Chuoãiñính, chöông trình dòch duøng teân Chuoãiñích
ñeå xaùc ñònh xem luùc khai baùo thì Chuoãiñích coù caùc phaàn töû laø byte hay
töø. Muoán chæ roõ cho chöông trình dòch hôïp ngöõ raèng ta laøm vieäc vôùi chuoãi
caùc byte hoaëc caùc töø, ta cuõng coù theå duøng leänh STOSB hoaëc STOSW.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
Trong thí duï treân chöông trình dòch hôïp ngöõ seõ duøng teân STR1 ñeå xaùc
ñònh kieåu STR1 laø byte hay laø töø roài töï ñoäng caát AL hay AX vaøo chuoãi.
 SUB – Substract (Tröø 2 toaùn haïng)
Cuù phaùp: SUB Ñích, Goác
Moâ taû : Ñích  Ñích – Goác.
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø 2 oâ nhôù vaø cuõng khoâng ñöôïc thanh ghi ñoaïn.
Caäp nhaät : AF, CFm OFm PFm SF, ZP (AP vaø PF chæ lieân quan ñeá 8 bit
thaáp)
 TEST – And Operands to Update Flag (Vaø 2 toaùn haïng ñeå taïo côø)
Cuù phaùp: TEST Ñích, Goác.
Moâ taû : Ñích ^ Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø 2 oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn. Sau
leänh naøy caùc toaùn haïng khoâng bò thay ñoåi vaø keát quaû khoâng ñöôïc löu
giöõ. Caùc côø ñöôïc taïo ra seõ ñöôïc duøng laøm ñieàu kieän cho caùch leänh nhaûy
coù ñieàu kieän. Leänh nhaø cuõng coù taùc duïng che nhö moät maët naï.
Xoùa: CF, OF
Caäp nhaät: PF, SF, ZP, ZP (PF chæ lieân quan ñeán 8 bit thaáp)
Khoâng xaùc ñònh: AF
 WAIT – Wait for TEST or INTR Signal (Chôø tín hieäu töø chaân TEST
hoaëc INTR)
Moâ taû:
Leänh naøy ñöa vi xöû lyù vaøo traïng thaùi nghæ noù seõ ôû traïng thaùi naøy
cho tôùi khi coù tín hieäu ôû möùc thaáp taùc ñoäng vaøo chaân TEST hoaëc khi coù
tín hieäu ôû möùc cao taùc ñoäng vaøo chaân INTR. Neáu coù yeâu caàu ngaét vaø
yeâu caàu naøy ñöôïc pheùp taùc ñoäng trong khi 8086 ñang ôû traïng thaùi nghæ thì
sau khi thöïc hieän chöông trình phuïc vuï ngaét noù laïi quay veà traïng thaùi nghæ.

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang112
Leänh naøy duøng ñeå ñoàng boä hoaït ñoäng cuûa 8086 vaø caùc boä phaän beân
ngoaøi nhö boä ñoàng xöû lyù toaùn hoïc 8087.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 XCHG – Exchange 2 Operands (Traùo noäi dung 2 toaùn haïng)
Cuù phaùp: XCHG Ñích, Goác.
Moâ taû: Ñích  Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñònh
ñòa chæ nhau, nhöng phaûi chöùa döõ lieäu vaø cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø 2 oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn. Sau
leänh XCHG toaùn haïng naøy chöùa noäi dung cuõ cuûa toaùn haïng kia vaø ngöôïc
laïi.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
 XLAT – Translate a Byte in AL (Noäi dung cuûa AL theo baûng cho
tröôùc)
Cuù phaùp: XLAT
Moâ taû: AL  {AL + BX}
Leänh naøy duøng ñeå ñoåi 8 bit hoaëc ít hôïn töø maõ naøy (goác) sang maõ
khaùc (ñích) theo 1 baûng tra cho saün. Tröôùc khi thöïc hieän leänh ñoåi, baûng tra
phaûi chöùa caùc maõ ñích vaø BX phaûi chöùa ñòa chæ leäch cuûa baûng naøy trong
ñoaïn döõ lieäu, coøn maõ goác (caàn ñoåi) phaûi ñöôïc chöùa trong AL. Khi chaïy
leänh XLAT thì pheùp coäng AL + BX ñöôïc thöïc hieän ñeå taïo ra ñòa chæ oâ nhôù
trong baûng soá maø noäi dung cuûa noù seõ ñöôïc caát trôû laïi vaøo thanh ghi AL.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
 XOR – Exclusive Or Corresponding Bits of Two Operands (Hoaëc loaïi
tröø 2 toaùn haïng)
Cuù phaùp: XOR Ñích, Goác.
Moâ taû : Ñích  Ñích  Goác
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø 2 oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn. Töø
tính chaát cuûa pheùp hoaëc loaïi tröø, ta thaáy neáu toaùn haïng ñích truøng vôùi
toaùn haïng goác thì keát quaû baèng 0, do ñoù leänh naøy coøn ñöôïc duøng ñeå xoùa
veà 0 moät thanh ghi naøo ñoù vaø keøm theo caùc côø CF vaø OF cuõng bò xoùa.
Caäp nhaät: PF, SF, ZP. PF chæ coù nghóa khi toaùn haïng laø 8 bit.
Khoâng xaùc ñònh: AF
Treân ñaây nhoùm thöïc hieän ñaõ giôùi thieäu qua taát caû caùc leänh coù trong
taäp leänh cuûa boä vi xöû lyù 8086, maëc duø trong thöïc teá laäp trình nhieàu khi ta
khoâng söû duïng heát ñöôïc taát caû caùc leänh coù trong taäp leänh naøy. Taäp leänh
cuûa caùc boä vi xöû lyù cao caáp hôn trong hoï 80x86 ngoaøi nhöõng leänh naøy
coøn bao goàm nhieàu leänh khaùc nöõa.
Ta coù theå coi ñaây laø moät ví duï veà taäp leänh cuûa moät boä vi xöû lyù
duøng ñeå cheá taïo ra maùy tính vôùi taäp leänh ñaày ñuû (Complete Instruction Set
Computer, CISC) vôùi ñaëc tröng laø coù raát nhieàu leänh vôùi caùc cheá ñoä ñòa
chæ raát ña daïng, caùc leänh coù ñoä daøi khaùc nhau vaø thôøi gian ñeå thöïc hieän
cuõng khaùc nhau. Boä vi xöû lyù vì theá thöôøng coù caáu truùc raát phöùc taïp.
Theá maø treân thöïc teá, trong caùc chöông trình hôïp ngöõ ñeå giaûi quyeát caùc

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH


Luaän vaên toát nghieäp trang113
coâng vieäc cuï theå, thöôøng coù nhieàu leänh ñöôïc duøng vôùi taàn suaát lôùn
nhöng cuõng coù nhöõng leänh raát ít khi hoaëc thaäm chí khoâng heà söû duïng.
Ñaây cuõng chính laø lyù do ñeå caùc nhaø saûn xuaát cho ra ñôøi caùc boä vi xöû lyù
coù caáu truùc caûi tieán theo höôùng ñôn giaûn hoùa vôùi taäp leänh raát hieäu duïng
(coù soá leänh ít hôn vôùi cheá ñoä ñòa chæ ñôn giaûn, caùc leänh coù ñoä daøi
thoáng nhaát vaø coù thôøi gian thöïc hieän nhö nhau) nhöng laïi coù khaû naêng thöïc
hieän leänh nhanh hôn gaáp boäi so vôùi loaïi CISC. Ñoù laø caùc boä vi xöû lyù
duøng laøm CPU cho caùc maùy tính vôùi taäp leänh ruùt goïn (Reduced Instruction
Set Computer, RISC).

GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH

You might also like