Với lời lệnh (hình 43b) ta có thể ghi lệnh để:
- Điều khiể n modem:DTR(D1=1), RTS(D%=1).
- Xoá mềm( bằng chương trình có IR (D6=1) để xoá về 0 các thanh ghi nội.
- Xóa cờ báo lỗiER (D4=1) .
- Ghi cho phép truyền TxEN (D0=1) cho phép nhận RxE(D2=1).
- Gửi tín hiệu cắt (các bit bằng 0-Break) để cắt dòng tín hiệu liê n tục đang
truyền.
- Tìm ký tự đồ ng bộ EH(D7=1) trong chế độ đồng bộ.
· Thanh ghi trạng thái (hình 43c): dùng để đọc.
- Sẵn sàng truyền TxRDY (D0=1), sẵn sà ng nhậ n RXRDY(D1=1).
- Thanh ghi đệm số liệ u rỗng TxE (D2=1).
- Tuy chỉ có một địa chỉ (CS\=0, A1=1) nhưng ta có thể ghi đượ c 2 lời điều khiển
chế độ và lời lệnh ở 2 thanh ghi điều khiển khá c nhau vì còn có chung một flip
flop nội điều khiể n lần lượt và o hai thanh ghi trên.
114 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2385 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế thi công Kit vi xử lý 8086, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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ôø.
v 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.
Luaän vaên toát nghieäp trang95
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Caäp nhaät: AF, OF, PF, SF, ZP
Khoâng taùc ñoäng: CF
v 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 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.
v 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.
v 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.
v 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ôø
Luaän vaên toát nghieäp trang96
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
v 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ôø.
v 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 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ôø.
v 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ôø
v 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.
Luaän vaên toát nghieäp trang97
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
v 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ôø.
v 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” (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ôø.
v 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ôø.
v 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
Luaän vaên toát nghieäp trang98
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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 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
Luaän vaên toát nghieäp trang99
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Ñ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ôø.
v JNA – Xem JBE
v JNAE – Xem JB
v JNB – Xem JAE
v JNBE – Xem JA
v JNC – Xem JAE
v 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ôø.
v JNG – Xem JLE
v JNGE – Xem JL
v JNL – Xem JGE
v JNLE – Xem JG
v 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
Luaän vaên toát nghieäp trang100
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
ñ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ôø
v JNZ - Xem JNE
v 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ôø.
v 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.
Leänh naøy khoâng taùc ñoäng ñeán caùc côø.
v JPE - Xem JP
v JPO - Xem JNP
v 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ôø.
v JZ - Xem JE
v 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ôø.
v 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
Luaän vaên toát nghieäp trang101
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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ôø.
v 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ôø
v 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)
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.
v 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ôø.
Luaän vaên toát nghieäp trang102
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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ù.
v 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ôø
v 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ôø
v 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á
Luaän vaên toát nghieäp trang103
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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ôø.
v 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
v 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
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ôø.
v 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öø.
Luaän vaên toát nghieäp trang104
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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.
v 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
v 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
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.
v 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ôø
Luaän vaên toát nghieäp trang105
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
v 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ôø.
v 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
v 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
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ôø.
v 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
Luaän vaên toát nghieäp trang106
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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ôø.
v 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ôø.
v 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ôø
v 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ôø.
v 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.
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.
v 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
Luaän vaên toát nghieäp trang107
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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
v 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.
v 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).
v 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 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).
v 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)
Luaän vaên toát nghieäp trang108
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Leänh naøy khoâng taùc ñoäng ñeán caùc côø
v 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.
v 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 = 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.
v 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
v SAL – Shift Arithmetically Left (Dòch traùi soá hoïc) / SHL – Shift
(Logically) Left (Dòch traùi logic)
Luaän vaên toát nghieäp trang109
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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
v 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ì 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.
Luaän vaên toát nghieäp trang110
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Khoâng xaùc ñònh: AF.
v 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)
v 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
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
v SHL – Xem SAL
v 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
Luaän vaên toát nghieäp trang111
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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.
v 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
v 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
v 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.
v 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öø)
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ì
Luaän vaên toát nghieäp trang112
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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.
v 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)
v 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
v 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æ. 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ôø.
v 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â
Luaän vaên toát nghieäp trang113
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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ôø.
v 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ôø
v 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 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ù
Luaän vaên toát nghieäp trang114
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
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).
Các file đính kèm theo tài liệu này:
- Luận văn tốt nghiệp-VXL Intel 8086.pdf