Thiết kế – thi công kit vi xử lý 8086

GIỚI THIỆU CHUNG CHƯƠNG DẪN NHẬP ___ oOo ___ Ngày nay, trên thế giới khoa học kỹ thuật phát triển nhanh chóng, đặc biệt là ngành điện_điện tử. Những tiến bộ này ngày càng được ứng dụng rộng rãi trong công nghiệp cũng như trong đời sống sinh hoạt hằng ngày của con người. Hệ thống vi xử lý hay còn gọi là máy tính điện tử là một trong những ứng dụng đó, nó là thiết bị xử lý thông tin, điều khiển các thiết bị bên ngoài hay các thiết bị công nghiệp một cách tự động. Trước nhu cầu thực tế, kit vi xử lý là một công cụ dạy và học không những giúp cho sinh viên nghiên cứu học tập, mà còn có thể ứng dụng mô phỏng hoạt động của một máy tính điện tử, đưa những tiến bộ của khoa học kỹ thuật dẫn vào đời sống hiện đại. Trong khả năng và kiến thức đã học, tôi quyết tâm thực hiện đề tài: “THIẾT KẾ – THI CÔNG KIT VI XỬ LÝ 8086” để đáp ứng nhu cầu trên. Vi xử lý là một hệ thống số dựa trên cơ sở linh kiện chủ yếu là bộ vi xử lý (CPU). Tùy thuộc vào cấu trúc của bộ vi xử lý riêng biệt và phần điều khiển mà ta có thể bao gồm nhiều loại vi mạch. Dưới sự điều khiển bằng chương trình một bộ vi xử lý thực hiện các phép tính số học và logic, đồng thời tạo ra những tín hiệu điều khiển cho bộ nhớ và thiết bị vào ra. Những mệnh lệnh này gọi là chương trình nguồn và được chứa trong bộ nhớ chỉ đọc (ROM), khi mất điện dữ liệu trong bộ nhớ này không bị mất, khi Reset máy chương trình này sẽ thi hành trước tiên khởi tạo cho máy làm việc. Khi làm việc CPU đọc những lệnh đó ra rồi thực hiện chúng. Do đó ta có thể nói bộ vi xử lý là cấu trúc phần cứng được xử lý bằng phần mềm. Đề tài này không chỉ giúp cho sinh viên hòan thành luận văn tốt nghiệp mà còn hình thành trong mỗi sinh viên những kinh nghiệm, sáng tạo và năng động. Sau này đề tài sẽ kết hợp với các ngành chuyên môn khác để phát triển mô hình này được hoàn thiện hơn.

doc115 trang | Chia sẻ: banmai | Lượt xem: 2148 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu 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
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. 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: SP ¬ SP-2, {SP} ¬ FR IF ¬ 0 (caám caùc ngaét khaùc taùc ñoäng), TF ¬ 0 (chaïy suoát) SP ¬ SP-2, {SP} ¬ CS. SP ¬ SP-2, {SP} ¬ IP. {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. 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 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ôø. 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 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 Ñ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 ñ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 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ôø. 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á 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öø. 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ôø 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 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 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) 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) 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. 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 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ì 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ôø. 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ôø. 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ù 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:

  • docLUANVAN.DOC
  • doc~$UANVAN.DOC
Tài liệu liên quan