Trước hết cần nói rỏ lý do tại sao ở đây ta lại chọn đích danh bộ vi zử láy 8088 để tìm hiểu mà không phải là bộ vi xử lý nào khác ( điều mà nhiều người khác phải làm ). Thứ nhất, đây là bộ vi xử lý nổi tiếng một thời thuộc họ 80x86 của Intel, nó được sử dụng trong nhiều lĩnh vực khác nhau, nhất là trong các máy IBM PC /XT. Các bộ vi xử lý thuộc họ này sẽ còn được sủ dụng rộng rãi trong hàng chục năm nữa, và vi tính kế thừa của các sản phẩm trong họ 80x86., các chương trình viết cho 8088 vẫn có thể chạy trên các hệ thống tiên tiến sau này. Thứ hai, về góc độ sư phạm thì đây là bộ vi xử lý khá đơn giản và vì việc dạy hiểu nó là tương đối dể đối với những người mới bắt đầu thâm nhập vào lĩnh vực này.
65 trang |
Chia sẻ: haohao89 | Lượt xem: 1895 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Bộ vi xử lý Intel 8088, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHÖÔNG 3
BOÄ VI XÖÛ LYÙ INTEL 8088
Sau khi ñaõ tìm hieåu qua veà caáu truùc cuûa heä vi xöû lyù. Trong chöông naøy ta seõ ñi saâu tìm hieåu moït boävi xöû lyù cuï theå vaø raát ñieån hình: boä vi xöû lyù cuûa Intel.
Tröôùc heát caàn noùi roû lyù do taïi sao ôû ñaâyta laïi choïn ñích danh boä vi zöû laùy 8088 ñeå tìm hieåu maø khoâng phaûi laø boä vi xöû lyù naøo khaùc ( ñieàu maø nhieàu ngöôøi khaùc phaûi laøm ). Thöù nhaát, ñaây laø boä vi xöû lyù noåi tieáng moät thôøi thuoäc hoï 80x86 cuûa Intel, noù ñöôïc söû duïng trong nhieàu lónh vöïc khaùc nhau, nhaát laø trong caùc maùy IBM PC /XT. Caùc boä vi xöû lyù thuoäc hoï naøy seõ coøn ñöôïc suû duïng roäng raõi trong haøng chuïc naêm nöõa, vaø vi tính keá thöøa cuûa caùc saûn phaåm trong hoï 80x86., caùc chöông trình vieát cho8088 vaãn coù theå chaïy treân caùc heä thoáng tieân tieán sau naøy. Thöù hai, veà goùc ñoä sö phaïm thì ñaây laø boä vi xöû lyù khaù ñôn giaûn vaø vì vieäc daïy hieåu noù laø töông ñoái deå ñoái vôùi nhöõng ngöôøi môùi baét ñaàu thaâm nhaäp vaøo lónh vöïc naøy. Thöù ba, caùc hoïvi xöû lyù tuy coù khaùc nhau nhöng xeùt cho cuøng cuõng coù khaù nhieàu ñieåm chuû yeáu raát gioáng nhau. Do ñoù moät khi ñaõ naém ñöôïc caùc vaán ñeà kyû thuaät cuûa8088, ta seõ coù cô sôû ñeå naém baét caùc kyû thuaät cuûa caùc boä vi xöû lyù khaùc cuøng trong hoï Intel 80x86 hoaëc cuûa caùc hoï khaùc.
Giôùi thieäu caáu truùc beân trong vaøhoaït ñoäng cuûa boä vi xöû lyù 8088.
Tröôùc khi giôùi thieäu taäp leänh vaø caùch thöùc laäp trình cho boävi xöû lyù8088 hoaït ñoäng ta caàn phaûi tìm hieåu kyõ caáu truùc beân trong cuûa noù.
Treân hình 3.1 laø sô ñoà khoái caáu truùc beân trong caûu boä vi xöû lyù Intel 8088:
1.1.BIU Vaø EU
theo sô ñoà khoái treân hình 3.1 ta thaáy beân trong CPU 8088 coù 2 khoái chính: khoái phoái gheùp ( bus interface unit, BIU ) vaøkhoái thöïc hieän leänh ( execution unit, EU ). Vieäc chia CPU ra thaønh 2 phaàn laøm vieäc ñoàng thôøi coù lieân heä vôùi nhau qua ñeäm leänh laøm taêng ñaùng keå toác ñoä xöû lyù cuûa CPU. Caùc bus beân trong CPU coù nhieäm vuï chuyeån taûi tín hieäu cuûa caùc khoái khaùc. Trong soá caùc bus ñoù coù bus döõ lieäu 16 bit cuûa ALU, bus caùc tín hieäu ñieàu khieån ôû EU vaø bus trong cuûa heä thoáng ôû BIU. Tröôùc khi ñi ra bus ngoaøi hoaëc ñivaøo bus trong cuûa boä vi xöû l, caùc tín hieäu truyeàn treân bus thöôøng ñöôïc cho ñi qua caùc boä ñeäm ñeå naâng cao tính töông thích cho noái gheùp hoaëc naâng cao phoái gheùp.
BIU ñöa ra ñòa chæ, ñoïc maõ leänh töø boä nhôù, ñoïc / ghi döõ lieäu töø vaøo coång hoaëc boä nhôù. Noùi caùch khaùc BIU chòu traùch nhieäm ñöa ñòa chæ ra bus vaø trao ñoåi döõ lieäu vôùi bus.
Trong EU ta thaáy coù moät khoái ñieàu khieån ( control unit, CU ). Chính taïi beân trong khoái ñieàu khieån naøy coù maïch giaûi maõ leänh. Maõ leänh ñoïc vaøo töø boä nhôù ñöôïc ñöa ñeán ñaàu vaøo cuûa boä giaûi maõ, caùc thoâng tin thu ñöôïc töø ñaàu ra cuûa noù seõ ñöôïc ñöa ñeán maïch taïo xung ñieàu khieån, keát quaû laø tu thu ñöôïc caùc daõy xung khaùc nhau ( tuyø theo maõ leänh ) ñeå ñieàu khieån hoaït ñoäng cuûa caùc boä phaän beân trong vaø beân ngoaøi CPU. Trong khoái EU coøn coù khoái soá hoïc vaø loâgic ( arithmetic anh logic unit. ALU ) duøng ñeå thöïc hieän caùc thao taùc khaùc nhau vôùi caùc toaùn haïng cuûa leänh. Toùm laïi, khi CPU hoaït ñoäng EU seõ cung caáp thoâng tin veà ñòa chæ cho BIU ñeå khoái naøy ñoïc leänh vaø döõ lieäu, coøn baûn thaân noù thì ñoïc leänh vaø giaûi maõ leänh.
Trong BIU coøn coù moät boä nhôù ñeäm leänh vôùi dung löôïng 4 byte duøng ñeå chöùa caùc maõ leänh ñoïc ñöôïc naèm saün ñeå chôø EU xöû lyù ( trong taøi lieäu cuûa Intel boä ñeäm leänh naøy coøn ñöôïc goïi laø haøng ñôïi leänh ). Ñaây laø moät caáu truùc môùi ñöôïc caáy vaøo boä vi xöû lyù 8086x88 do vieäc Intel ñöa cô cheá xöû lyù xen keû lieân tuïc, doøng maõ leänh ( instruction pipelining ) vaøo öùng duïng trong caùc boä vi xöû lyù theá heä môùi. Pipeline laø moät cô cheá ñaõ ñöôïc öùng duïng töø nhöõng naêm 60 töø caùc maùy lôùn. Nhaân ñaây ta seõ giôùi thieäu sô qua moät chuùt veà cô cheá naøy.
Trong caùc boä vi xöû lyù ôû caùc theá heä tröôùc ( nhö ôû 8085 chaúng haïn ), thoâng thöôøng hoaït ñoäng cuûa CPU goàm 3 giai ñoaïn: ñoïc maõ leänh ( oâpcde fetch ), giaûi maõ leänh ( ñecode ) vaø thöïc hieän leänh ( execution ). Trong moät thôøi ñieåm nhaát ñònh, CPU theá heä naøy chæ coù theå thöïc hieän moät trong ba coâng vieäc noùi treân vaø vì vaäy tuyø theo töøng giai ñoaïn seõ coù nhöõng boä phaän nhaát ñònh cuûa CPU ôû traïng thaùi nhaøn roãi. Chaúng haïn, khi CPU giaûi maõ leänh hoaëc khi noù ñang thöïc hieän nhöõng leänh khoâng lieân quan ñeán bus ( thao taùc noäi boä ) thì caùc bus khoâng ñöôïc duøng vaøo vieäc gì daãn ñeán tình traïng laõng phí khaû naêng cuûa chuùng ( hình 3.2 ). Trong khi ñoù töø boä vi xöû lyù 8086/88, Intel söû duïng cô cheá xöû lyù xen keû lieân tuïc doøng maõ leänh thì CPU ñöôïc chia thaønh 2 khoái vaø coù söï phaân chia coâng vieäc cho töøng khoái: vieäc ñoïc maõ leänh laø do khoái BIU thöïc hieän, vieäc giaûi maõ leänh vaø thöïc hieän leänh laø do khoái EU ñaûm nhieäm. Caùc khoái chöùc naêng naøy coù khaû naêng laøm vieäc ñoàng thôøi vaø caùc bus seõ lieân tuïc söû duïng: trong khi EU laáy maõ leänh töø boä ñeäm 4 byte ñeå giaûi maõ hoaëc thöïc hieän caùc thao taùc noäi boä thì BIU vaãn coù theå ñoïc maõ leänh töø boä nhôù chính roài ñaët chuùng vaøo boä nhôù ñeäm leänh ñaõ noùi. Boä ñeäm leänh naøy laøm vieäc theo kieåu “ vaøo tröôùc – ra tröôùc “ (first in-first out, FIFO ), nghóa laø byte naøo ñöôïc caát vaøo ñeäm tröôùc seõ ñöôïc laáy ra xöû lyù tröôùc. Neáu coù söï vaøo/ra lieân tuïc cuûa doøng maõ leänh trong boä ñeäm naøy thì coù nghóa laø coù söï phoái hôïp hoaït ñoäng hieäu quaû giöõa hai khoái EU vaø BIU theo cô cheá xöû lyù xen keû lieân tuïc doøng maõ leänh ñeå laøm taêng toác ñoä xöû lyù toång theå. Kyõ thuaät xöû lyù xen keû lieân tuïc doøng maõ leänh seõ khoâng coøn taùc duïng taêng toác ñoä xöû lyù chung cuûa CPU nöõa neáu nhö trong ñeäm leänh coù chöùa caùc maõ leänh cuûa caùc leänh CALL ( goïi chöông trình con ) hoaêc JMP ( nhaûy ), bôûi vì luùc caùc leänh naøy noäi dung cuûa boä ñeäm seõ bò xoaù vaø thay theá vaøo ñoù laø noäi dung môùi ñöôïc naïp bôûi caùc maõ leänh môùi do leänh nhaûy hoaëc goïi quyeát ñònh. Vieäc naøy tieâu toán nhieàu thôøi gian hôn so vôùi tröôøng hôïp trong ñeäm chæ coù maõ leänh cuûa caùc leänh tuaàn töï
Trong boä vi xöû lyù 8088 ta coøn thaéy coù caùc thanh ghi 16 bit naèm trong caû hai khoái BIU vaø EU, ngoaøi ra cuõng coù moät soá thanh ghi 8 hoaëc 16 bit taïi EU. Ta seõ laàn löôït giôùi thieäu caùc thanh ghi noùi treân cuøng chöùc naêng chính cuûa chuùng.
*caùc thanh ghi ñoaïn
Khoái BIU ñöa ra treân bus ñòa chæ 20 bit ñòa chæ, nhö vaäy 8088 coù khaû naêng phaân bieät ra ñöôïc 220 = 1.048.576 = 1M oâ nhôù hay 1Mbyte, vì caùc boä nhôù noùi chung toå chöùc theo byte. Noùi caùch khaùc: khoâng gian ñòa chæ cuûa 8088 laø 1Mbyte. Trong khoâng gian 1Mbyte boä nhôù caàn ñöôïc chia thaønh caùc vuøng khaùc nhau ( ñieàu naøy raát coù lôïi khi laøm vieäc ôû cheá ñoä nhieàu ngöôøi söû duïng hoaëc ña nhieäm ) daønh rieâng ñeå:
Chöùa maõ chöông trình.
Chöùa döõ lieäu vaø keát quaû khoâng gian cuûa chöông trình.
Taïo ra moät vuøng nhôù ñaëc bieät goïi laø ngaên xeáp ( stack ) duøng vaøo vieäc quaûn lyù caùc thoâng soá cuûa boä vi xöû lyù khi goïi chöông trình con hoaëc trôû veà töø chöông trình con.
Trong thöïc teá boä vi xöû lyù 8088 coù caùc thanh ghi 16 bit lieân quan ñeán ñòa chæ ñaàu cuûa caùc vuøng ( caùc ñoaïn ) keå treân vaø chuùng ñöôïc goïi laø caùc thanh ghi ñoaïn ( Segment Registers ). Ñoù laø thanh ghi ñoaïn maõ CS ( Code-Segment ), thanh ghi ñoaïn döõ lieäu DS ( Data sement ). Thanh ghi ñoaïn ngaên xeáp SS ( Stack segment ) vaø thanh ghi ñoaïn döõ lieäu phuï ES ( Extra segment ). Caùc thanh ghi ñoaïn 16 bit naøy chæ ra ñòa chæ ñaàu cuûa boán ñoaïn trong boä nhôù, dung löôïng lôùn nhaát cuûa moãi ñoaïn nhôù naøy laø 64 Kbyte vaø taïi moät thôøi ñieåm nhaát ñònh boä vi xöû lyù chæ laøm vieäc ñöôïc vôùi boán ñoaïn nhôù 64 Kbyte naøy. Vieäc thay ñoåi giaù trò cuûa caùc thanh ghi ñoaïn laøm cho caùc ñoaïn coù theå dòch chuyeån linh hoaït trong phaïm vi khoâng gian 1 Mbyte, vì vaäy caùc ñoaïn naøy coù theå naèm caùch nhau khi thoâng tin caàn löu trong chuùng ñoøi hoûi dung löôïng ñuû 64 Kbyte hoaëc cuõng coù theå naèm truøm nhau do coù nhöõng ñoaïn khoâng caàn duøng heát ñoaïn daøi 64 Kbyte vaø vì vaäy nhöõng ñoaïn khaùc coù theå baét ñaàu noái tieáp ngay sau ñoù. Ñieàu naøy cuõng cho pheùp ta truy nhaäp vaøo baát kyø ñoaïn nhôù ( 64 Kbyte ) naøo naèm trong toaøn boä khoâng gian 1 Kbyte.
Noäi dung caùc thanh ghi ñoaïn seõ xaùc ñònh ñòa chæ cuûa oâ nhôù naèm ôû ñaàu ñoaïn. Ñòa chæ naøy coøn goïi laø ñòa chæ cô sôû. Ñòa chæ cuûa caùc oâ nhôù khaùc naèm trong ñoaïn tính ñöôïc baèng caùch coäng theâm vaøo ñòa chæ cô sôû moät giaù trò goïi laø ñòa chæ leäch hay ñoä leäch ( Offset ), goïi nhö theá vì noù öùng vôùi khoaûng leäch cuûa toaï ñoä moät oâ nhôù cuï theå naøo ñoù so vôùi oâ ñaàu ñoaïn. Ñoä leäch naøy ñöôïc xaùc ñònh bôûi caùc thanh ghi 16 bit khaùc ñoùng vai troø thanh ghi leäch ( Offset register ) maø ta seõ noùi ñeán sau. Cuï theå, ñeå xaùc ñònh ñòa chæ vaät lyù 20 bit cuûa moät oâ nhôù naøo ñoù trong moät ñoaïn baát kyø. CPU 8088 phaûi duøng ñeán 2 thanh ghi 16 bit ( moät thanh ghi ñeå chöùa ñòa chæ cô sôû, coøn thanh kia chöùa ñoä leäch ) vaø töø noäi dung cuûa caëp thanh ghi ñoù taïo ra ñòa chæ vaät lyù theo coâng thöùc sau:
Ñòachævaätlyù=Thanhghiñoanx16+Thanhghileäch
Vieäc duøng 2 thanh ghi ñeå ghi nhôù thoâng tin veà ñòa chæ thöïc chaát ñeå taïo ra moät loaïi ñòa chæ goïi laø ñòa chæ logic vaø ñöôïc kyù hieäu nhö sau:
Thanhghiñoaïn: Thanhghileäch hay segment: offset
Ñòa chæ kieåu segment: offset laø logic vì noù toàn taïi döôùi daïng giaù trò cuûa caùc thanh ghi cuï theå beân troâng CPU vaø ghi caàn thieát truy caäp oâ nhôù naøo ñoù thì noù phaûi ñöôïc ñoåi ra ñòa chæ vaät lyù ñeå roài ñöôïc ñöa leân bus ñòa chæ. Vieäc chuyeån ñoåi naøy do moät boä taïo ñòa chæ thöïc hieän (phaàn töû treân hình 3.1).
Ví duï: caëp CS:IP seõ chæ ra ñòa chæ cuûa leänh saép thöïc hieän trong ñoaïn maõ. Taïi moät thôøi ñieåm naøo ñoù ta coù CS = F00H vaø IP = FFFOH thì
CS:IP~FOOOHx16 + FFFOH = FOOOOH + FFFOH = FFFFOH
Ñòa chæ FFFFOH chính laø ñòa chæ khôûi ñoäng cuûa 8088 daáu ~ ôû ñaây laø ñeå chæ söï töông öùng. Ñòa chæ caùc oâ nhôù thuoäc caùc ñoaïn khaùc cuõng coù theå tính ñöôïc theo caùch töông töï nhö vaäy. Töø nay khi caàn noùi ñeán ñeán ñòa chæ cuûa moät oâ nhôù ta coù theå söû duïng caû ñòa chæ logic laãn ñòa chæ vaät lyù vì bao giôø cuõng toàn taïi söï töông öùng giöõa hai loaïi ñòa chæ naøy ( thoâng qua boä taïo ñòa chæ ).
Tröôùc khi noùi ñeán caùc thanh ghi khaùc ta noùi theâm chuùt ít veà tính ña trò cuûa caùc thanh ghi ñoaïn vaø thanh ghi leäch trong ñòa chæ logic öùng vôùi moät ñòa chæ vaät lyù. Ñieàu naøy cuõng noùi leân tính linh hoaït cuûa cô cheá segment offset trong vieäc ñònh ñòa chæ cuûa 8086/ 88. Nhìn vaøo giaù trò cuoái cuøng cuûa ñòa chæ vaät lyù ta thaáy coù theå taïo ra ñòa chæ ñoù töø nhieàu giaù trò khaùc nhau cuûa thanh ghi ñoaïn vaø thanh ghi leäch
Ví duï: Ñòa chæ vaät lyù 12345H coù theå ñöôïc taïo ra töø caùc giaù trò:
Thanh ghi ñoaïn Thanh ghi leäch
1000H 2345H
1200H 0345H
1004H 2305H
0300H E345H
… …
*Caùc thanh ghi ña naêng
trong khoái EU coù boán thanh ghi ña naêng 16 bit AX, BX, CX, DX. Ñieàu ñaëc bieät laø khi caàn chöùa caùc döõ lieäu 8 bit thì moãi thanh ghi coù theå taùch ra thaønh hai thanh ghi 8 bit cao vaø thaáp ñeå laøm vieäc ñoäc laäp, ñoù laø caùc taäp thanh ghi AH vaø AL, BH vaø BL, CH vaø CL, DH vaø DL ( trong ñoù H chæ phaàn cao, L chæ phaàn thaáp ). Moãi thanh ghi coù theå duøng moät caùch vaïn naêng ñeå chöùa caùc taäp döõ lieäu khaùc nhau nhöng cuõng coù coâng vieäc ñaëc bieät nhaát ñònh chæ thao taùc vôùi moät vaøi thanh ghi naøo ñoù vaø chính vì vaäy caùc thanh ghi thöôøng ñöôïc gan cho nhöõng caùi teân ñaëc bieät raát coù yù nghóa.
Cuï theå:
AX ( accumulator, acc ): thanh chöùa. Caùc keát quûa cuûa caùc thao taùc thöôøng ñöôïc chöùa ôû ñaây ( keát quaû cuûa pheùp nhaân, chia ). Neáu keát quaû laø 8 bit thì thanh ghi AL ñöôïc coi laø acc.
BX ( base ): thanh ghi cô sôû thöôøng chöùa ñòa chæ cô sôû cuûa moät baûng duøng trong leänh XLAT.
CX ( count ): boä ñeám. CX thöôøng ñöôïc duøng ñeå chöùa soá laàn laëp trong tröôøng hôïp caùc leänh LOOP ( laëp ), coøn CL thöôøng cho ta soá laàn dòch hoaëc quay trong caùc leänh dòch hoaëc quay thanh ghi.
DX ( data ): thanh ghi döõ lieäu DX cuøng BX tham gia caùc thao taùc cuûa pheùp nhaân hoaëc chia caùc soá 16 bit. DX thöôøng duøng ñeå chöùa ñòa chæ cuûa caùc coång trong caùc leänh vaøo/ ra döõ lieäu tröïc tieáp.
*Caùc thanh ghi con troû vaø chæ soá
Trong 8088 coøn coù ba thanh ghi con troû vaø hai thanh ghi chæ soá 16 bit. Caùc thanh ghi naøy ( tröø IP ) ñeàu coù theå ñöôïc duøng nhö caùc thanh ghi ña naêng, nhöng öùng duïng chính cuûa moãi thanh ghi laø chuùng ñöôïc ngaàm ñònh nhö laø thanh ghi leäch cho caùc ñoaïn töông öùng. Cuï theå:
IP: con troû leänh ( Instruction pointer ). IP luoân troû vaøo leänh tieáp theo seõ ñöôïc thöïc hieän naèm trong ñoaïn maõ CS. Ñòa chæ ñaày ñuû cuûa leänh tieáp theo naøy öùng vôùi CS:IP vaø ñöôïc xaùc ñònh theo caùch ñaõ noùi ôû treân.
BP: con troû cô sôû ( base pointer ). BP luoân troû vaøo moät döõ lieäu naèm trong ñoaïn ngaên xeáp SS. Ñòa chæ ñaày ñuû cuûa moät phaàn töû trong ñoaïn ngaên xeáp öùng vôùi SS:BP vaø ñöôïc xaùc ñònh theo caùch ñaõ noùi ôû treân.
SP: con troû ngaên xeáp ( stack pointer ). SP luoân troû vaøo ñænh hieän thôøi cuûa ngaên xeáp naèm trong ñoaïn ngaên xeáp SS. Ñòa chæ ñænh ngaên xeáp öùng vôùi SS:SP vaø ñöôïc xaùc ñònh theo caùch ñaõ noùi ôû treân.
SI: chæ soá goác hay nguoàn ( source index ). SI chæ vaøo döõ lieäu trong ñoaïn döõ lieäu DS maø ñòa chæ cuï theå ñaày ñuû öùng vôùi DS:SI vaø ñöôïc xaùc ñònh theo caùch ñaõ noùi ôû treân.
DI: chæ soá ñích ( destination index ). DI chæ vaøo döõ lieäu trong ñoaïn döõ lieäu DS maø ñòa chæ cuï theå ñaày ñuû öùng vôùi DS:DI vaø ñöôïc xaùc ñònh theo caùch ñaõ noùi ôû treân.
Rieâng trong caùc leänh thoa taùc vôùi döõ lieäu kieåu chuoåi thì caëp ES:DI luoân öùng vôùi ñòa chæ cuûa phaàn töû thuoäc chuoãi ñích coøn caëp DS:SI öùng vôùi ñòa chæ cuûa phaàn töû thuoäc chuoãi goác.
*Thanh ghi côø FR ( flag register )
Ñaây laø thanh ghi khaù ñaëc bieät trong CPU, moãi bit cuûa noù ñöôïc duøng ñeå phaûn aùnh moät traïng thaùi nhaát ñònh cuûa keát quaû pheùp toaùn do ALU thöïc hieän hoaëc moät traïng thaùi hoaït ñoäng cuûa EU. Döïa vaøo caùc côø naøy ngöôøi laäp trình coù theå coù caùc leänh thích hôïp tieáp theo cho boä vi xöû lyù ( caùc leänh nhaûy coù ñieàu kieän ). Thanh ghi côø goàm 16 bit nhöng ngöôøi ta chæ duøng heát 9 bit cuûa noù ñeå laøm caùc bit côø ( hình 3.3 ).
Caùc côø cuï theå
C hoaëc CF ( carry flag ): côø nhôù. CF = 1 khi coù nhôù hoaëc muôïn töø MSSP.
P hoaëc PF ( parity flag ): côø parity. PF phaûn aùnh tính chaün leû ( parity ) cuûa toång soá bit 1 coù trong keát quaû. Côø PF =1 khi toång soá bit trong keát quaû laø chaün ( even parity, parity chaün ). Ôûñaây ta taïm duøng parity daïng nguyeân goác ñeå traùnh söï luûng cuûng khi phaûi dòch cuïm töø “ even parity “ thaønh tính chaün leû chaün hoaëc “ odd party “ thaønh tính chaün leû leû.
A hoaëc AF ( auxilialyry carry flag ): côø nhôù phuï raát coù yù nghóa khi ta laøm vieäc vôùi caùc soá BCD.AF = 1 khi coù nhôù hoaëc muôïn töø moät soá BCD thaáp ( 4 bit thaáp ) sang moät soá BCD cao ( 4 bit cao ).
Z hoaëc ZF ( zero flag ): côø roãng. ZF =1 khi keát quaû = 0.
S hoaëc SF ( sign flag ): côø daáu. SF = 1 khi keát quaû aâm.
O hoaëc OF ( over flow flag ): coø traøn. OF = 1 khi keát quaû laø moät soá buø 2 vöôït qua ngoaøi giôùi haïn bieåu dieãn daønh cho noù.
Treân ñaây laø 6 bit côø traïng thaùi phaûn aùnh caùc traïng thaùi khaùc nhau cuûa keát sau moät thao taùc naøo ñoù, trong ñoù 5 bit côø ñaàu thuoäc byte thaáp cuûa thanh côø laø caùc côø gioáng nhö cuûa boä vi xöû lyù 8 bit 8085 cuûa Intel. Chuùng ñöôïc laëp hoaëc xoaù tuyø theo caùc ñieàu kieän cuï theå sau caùc thao taùc cuûa ALU. Ngoaøi ra, boä vi xöû lyù 8088 coøn coù caùc côø ñieàu khieån sau ñaây ( caùc côø naøy ñöôïc laäp hoaëc xoaù baèng caùc leänh rieâng ):
T hoaëc TF ( trap flag ): côø baåy. TF = 1 thì CPU laøm vieäc ôû cheá ñoä chaïy töøng leänh ( cheá ñoä naøy duøng khi caàn tìm loãi trong moät chöông trình ).
I hoaëc IF ( interrupt enable flag ): côø cho pheùp ngaét. IF = 1 thì CPU cho pheùp caùc yeâu caàu ngaét ( che ñöôïc ) ñöôïc taùc ñoäng.
D hoaëc DF ( direction flag ): côø höôùng. DF = 1 khi CPU laøm vieäc vôùi chuoåi kyù töï theo thöù töï töø phaûi sang traùi ( vì vaäy D chính laø côø luøi )
YÙ nghóa cuûa caùc côø ñaõ khaù roõ raøng. Rieâng côø traøn caàn phaûi laøm roõ hôn ñeå ta hieåu ñöôïc baûn chaát vaø cô cheá laøm vieäc cuûa noù. Côø traøn thöôøng ñöôïc duøng ñeán khi ta laøm vieäc vôùi soá buø 2 coù daáu. Ñeå cho vieäc giaûi thích ñöôïc ñôn giaûn, ñaàu tieân giaû thieát ta laøm vieäc vôùi soá buø 2 daøi 8 bit, keát quaû ñeå ôû AL ( xem hình 3.4 ). Goïi C67 laø côø nhôù töø bit 6 ( B6 ) leân bit 7 ( B7 ), trong ñoù B7 laø MSB vaø cuõng chính laø bit daáu ( SF ) cuûa AL. Ta coù theå chöùng minh ñöôïc raèng quan heä giöõa côø OF vôùi caùc côø CF vaø C67 tuaân theo phöông trình sau:
OF = CF C67.
Nghóa laø khi thöïc hieän caùc pheùp toaùn vôùi soá buø 2 coù daáu, hieän töôïng traøn seõ xaûy ra ( côø OF = 1 ) neáu coù nhôù töø MSB ( taát laø SF ) sang CF nhöng laïi khoâng coù nhôù vaøo chính noù ( SF ) hoaëc ngöôïc laïi. Ñieàu naøy coù theå toång quaùt hoaù cho caùc tröôøng hôïp laøm vieäc vôùi soá buø 2 coù daáu vôùi ñoä daøi 16/32 bit.
8086 vaø 8088
Tröôùc khi keát thuùc phaàn moâ taû caáu truùc cuûa boä vi xöû lyù ñeå ñi vaøo giôùi thieâu taäp leänh cuûa 8088 ta noùi qua moät chuùt veà söï gioáng nhau vaøkhaùc nhau giöõa 8088 vaø 8086 laø boä vi xöû lyù 16 bit hoaøn chænh, coøn 8088 laø boä vi xöû lyù vôùi 16 bit döõ lieäu beân trong ( gioáng nhö 8086 ), nhöng khi ra ngoaøi bus döõ lieäu cuûa noù chæ coøn 8 bit. Caáu truùc beân trong cuûa 8088 vaø 8086 gioáng nhau veà cô baûn, ngoaøi tröø hai ñieåm. Ñieåm khaùc nhau ñaàu tieân laø ôû ñoä daøi boä nhôù ñeäm leänh ( haøng ñôïi leänh ) ñoä daøi naøy ôû 8088 laø 4 byte coøn ôû 8086 laø 6 byte; ñieàu naøy seõ coù aûnh höôûng ít nhieàu ñeán söï khaùc bieät veà söï toác ñoä xöû lyù cuûa hai boä CPU. Ñieåm khaùc nhau thöù hai laø ôû kích thöôùc cuûa bus döõ lieäu: ôû 8088 laø 8 bit coøn ôû 8086 laø 16 bit ( trong khi ALU vaø caùc thanh ghi cuûa hai boä CPU vaãn coù ñoä daøi nhö nhau. Ñieàu naøy coù aûnh höôûng nhieàu ñeán coâng naêng ( Perfomance ) vaø giaù thaønh cuûa heä thoáng xaây döïng treân cô sôû caùc boä vi xöû lyù naøy. Ñoái vôùi 8086 do bus döõ lieäu laø 16 bit noù coù theå ñoïc/ghi ñöôïc moät töø naèm ôû hai oâ nhôù thaúng haøng ( moät töø trong boä nhôù ñöôïc coi laø xeáp thaúng haøng khi ôû ñòa chæ chaün laøbyte thaáp, ôû ñòa chæ leû laø byte cao ) trong moät chu kyø ñoïc/ghi: coøn ôû 8088 do bus döõ lieäu chæ coù 8 bit neân ñoïc/ghi moät töø naèm ôû hai oâ nhôù thaúng haøng ( naèm lieân tieáp nhö treân ) noù phaûi thöïc hieän trong hai chu kyø ñoïc/ghi. Buø laïi nhöôïc ñieåm veà toác ñoä, 8088 coù giaù reû vaøduøng ñeå taïo ra caùc heä thoáng vôùi giaù phaûi chaêng vì noù deå phoái gheùp vôùi caùc thieát bò ngoaïi vi 8 bit ñang thònh haønh luùc ñoù. Ñieàu khaùc nhau nöõa taát yeáu phaûi xaûy ra laø söï khaùc nhau trong vieäc boá trí caùc chaân ôû hai vi maïch nhö treân hình 3.5 ( xem theâm phaàn giôùi thieäu cuï theå caùc tín hieäu taïi caùc chaân ôû chöông V ).
Maëc duø coù nhöõng ñieåm khaùc nhau ñaõ neâu, nhöng vì nhöõng ñieåm gioáng nhau laø raát cô baûn vaø vì hai boä vi xöû lyù coù taäp leänh gioáng nhau neân veà quan ñieåm laäp trình thì chuùng laø töông ñöông
2.Caùch maõ hoaù leänh cuûaboä vi xöû lyù 8088
Leänh cuûaboä vi xöû lyù ñöôïc ghi baèng caùc kyù töï döôùi daï