intTypePromotion=1

Kỹ thuật vi xử lý - Chương 2

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:17

0
339
lượt xem
108
download

Kỹ thuật vi xử lý - Chương 2

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bộ vi xử lý 8088 của Intel 1. Giới thiệu hoạt động của bộ vi xử lý 8088 a. Giới thiệu chung Bộ vi xử lý 8088 thuộc họ vi xử lý của Intel. Điển hình: 8085 là bộ vi xử lý 8 bit. 8086 là bộ vi xử lý 16 bit hoàn chỉnh. 8088 là bộ vi xử lý 16 bit trong/ 8 bit ngoài. Các đặc tính kỹ thuật chủ yếu: Số thanh ghi: 14 thanhg ghi 16 bit Bus địa chỉ: 20 bit Bus dữ liệu: 16 (8086) và 8 (8088) Tập lệnh: 115 (là số...

Chủ đề:
Lưu

Nội dung Text: Kỹ thuật vi xử lý - Chương 2

  1. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp Ch−¬ng 2 Bé vi xö lý 8088 cña Intel 1. Giíi thiÖu ho¹t ®éng cña bé vi xö lý 8088 a. Giíi thiÖu chung Bé vi xö lý 8088 thuéc hä vi xö lý cña Intel. §iÓn h×nh: 8085 lµ bé vi xö lý 8 bit. 8086 lµ bé vi xö lý 16 bit hoµn chØnh. 8088 lµ bé vi xö lý 16 bit trong/ 8 bit ngoµi. C¸c ®Æc tÝnh kü thuËt chñ yÕu: Sè thanh ghi: 14 thanhg ghi 16 bit - Bus ®Þa chØ: 20 bit - Bus d÷ liÖu: 16 (8086) vµ 8 (8088) - TËp lÖnh: 115 (lµ sè lÖnh ®−îc c«ng bè trong nhiÒu tµi liÖu) - Tèc ®é chuÈn: 4.77 MHz - Sè ch©n cña bé vi xö lý: 40 - Bé vi xö lý 8086 cña Intel ®−îc ph¸t triÓn tõ n¨m 1978 vµo ®−a vµo thÞ tr−êng tõ n¨m 1980. §©y lµ bé vi xö lý 16 bit b¸n hoµn chØnh, c¸c thanh ghi bªn trong lµ 16 bit vµ nã xö lý 16 bit d÷ liÖu cïng mét lóc, 8086 liªn hÖ víi kªnh sè liÖu bªn ngoµi b»ng bus d÷ liÖu 16 bit vµ bus ®Þa chØ lµ 20 bit. Bé vi xö lý 8088 ra ®êi sau 8086, nã cã cÊu tróc bªn trong vµ tËp lÖnh hoµn toµn gièng cña 8086, chØ kh¸c 8086 ë kªnh truyÒn d÷ liÖu víi bªn ngoµi. 8088 sö dông kªnh d÷ liÖu 8 bit nªn viÖc truyÒn d÷ liÖu gi÷a c¸c thanh ghi trong nã víi bé nhí chËm h¬n so víi 8086. §©y lµ mét b−íc lïi vÒ kü thuËt nh−ng ®em l¹i nhiÒu lîi Ých vÒ kinh tÕ. T¹i thêi ®iÓm lÞch sö ®ã, bus DataMaster 8 bit ®ang ®−îc sö dông réng r·i trªn thÞ tr−êng, nhiÒu lo¹i card më réng vµ c¸c chip hç trî cã s½n trªn thÞ tr−êng lµ lo¹i 8 bit nªn gi¸ thÊp h¬n lo¹i 16 bit t−¬ng øng. ViÖc sö dông bus d÷ liÖu 8 bit gióp cho ng−êi sö dông khi n©ng cÊp m¸y cã thÓ tËn dông ®−îc c¸c card 8 bit trong c¸c m¸y cò còng nh− chØ ph¶i mua míi víi gi¸ thÊp. §ång thêi còng gióp cho c¸c nhµ s¶n xuÊt c¸c m¸y t−¬ng thÝch víi IBM PC cã thªm nhiÒu c¬ héi lùa chän s¶n phÈm cña c¸c h·ng kh¸c nhau. ChiÕn l−îc ph¸t triÓn cã tÝnh kÕ thõa nh− vËy ®· gãp phÇn lµm cho kh¸ch hµng cña IBM ngµy mét gia t¨ng. Chän bé vi xö lý 8088 ®Ó nghiªn cøu v×: TËp lÖnh chung cho c¸c bé vi xö lý nãi trªn. - TÝnh phøc t¹p võa ph¶i, phï hîp víi nh÷ng ng−êi míi t×m hiÓu. - b. CÊu tróc vµ ho¹t ®éng cña bé VXL 8088 Sù ho¹t ®éng cña bé vi xö lý 8088/8086 thùc sù lµ viÖc thùc hiÖn lÆp ®i lÆp l¹i 3 thao t¸c chÝnh lµ lÊy lÖnh (fetch), gi¶i m· lÖnh (decode) vµ thùc hiÖn (execute). S¬ ®å khèi cña bé vi xö lý 8088/8086 nh− h×nh vÏ víi 2 ®¬n vÞ chÝnh: EU (Execution Unit): §¬n vÞ (khèi) thùc hiÖn lÖnh. - BIU (Bus Interface Unit): §¬n vÞ giao tiÕp bus (khèi t−¬ng thÝch bus) ®Ó ®iÒu - khiÓn bus hiÖu qu¶ h¬n. EU §¬n vÞ EU cña 8088 vµ 8086 gièng nhau, bao gåm ALU, thanh ghi cê, c¸c thanh ghi ®Öm vµ c¸c thanh ghi ®a n¨ng. C¸c bus d÷ liÖu bªn trong cña EU ®Òu lµ 16 bit. EU kh«ng nèi trùc tiÕp víi bªn ngoµi, nã nhËn lÖnh tõ hµng ®îi lÖnh bªn trong NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 11
  2. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp BUI. NÕu lµ lÖnh cÇn truy nhËp bé nhí hoÆc cæng vµo/ra (I/O port - thiÕt bÞ ngo¹i vi) th× EU yªu cÇu BIU lÊy hoÆc göi d÷ liÖu. TÊt c¶ c¸c ®Þa chØ mµ EU thao t¸c ®Òu lµ 16 bit, khi göi sang BIU th× BIU sÏ thùc hiÖn tÝnh to¸n ®Ó t¹o ®Þa chØ vËt lý 20 bit vµ ph¸t ra c¸c ch©n ®Þa chØ cña chip. Bus ®Þa chØ (20 BIU EU AX BX c¸c thanh ghi CX DX Bus d÷ liÖu CS SP (8 bit) c¸c thanh DS BP c¸c thanh ghi ghi SS SI Bus trong ®o¹n con trá 8 bit d÷ liÖu ES DI 20 bit ®Þa IP chØ Bus d÷ liÖu Logic ALU(16bit) ®iÒu khiÓn c¸c thanh ghi BUS t¹m BUS ngoµi Khèi ®iÒu khiÓn cña §Öm lÖnh (hµng ®îi lÖnh) (6 byte cho 8086) thanh ghi cê AH AL AX: Accumulator BH BL BX: Base CH CL CX: Count DH DL DX: Data General Registers SP Stack Pointer BP Base Pointer SI Source Index DI Destination Index IP Instruction Pointer FLAGS Status flags CS Code Segment DS Segment Data Segment SS Registers Stack Segment ES Extra Segment H×nh vÏ: Bé vi xö lý 8088 vµ tËp thanh ghi 12 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  3. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp C¸c thanh ghi trong Cã 8 thanh ghi, lµ thµnh phÇn nhí cã tèc ®é truy nhËp rÊt cao. Bao gåm c¸c thanh ghi ®a n¨ng Ax, Bx, Cx, Dx. Mçi thanh ghi 16 bit cã thÓ ®−îc ph©n chia thµnh 2 thanh ghi 8 bit lµm viÖc ®éc lËp nhau. + AX (Accumulator, Acc): Thanh chøa, chøa t¹m thêi d÷ liÖu (to¸n h¹ng, kÕt qu¶ phÐp to¸n nh− nh©n, chia vµ ®−îc coi lµ Acc). AX cã thÓ ®−îc ph©n chia thµnh AH : PhÇn cao. AL : PhÇn thÊp. + BX (Base): Thanh ghi c¬ së, th−êng ®−îc dïng ®Ó chøa ®Þa chØ c¬ së cÇn truy nhËp trong lÖnh XLAT. BX cã thÓ ®−îc ph©n chia thµnh BH : PhÇn cao. BL : PhÇn thÊp + CX (Count): Bé ®Õm, th−êng ®−îc dïng ®Ó ®Õm sè lÇn lÆp cña c«ng viÖc (sè lÇn lÆp trong c¸c vßng lÆp). CX cã thÓ ®−îc ph©n chia thµnh CH : PhÇn cao. CL : PhÇn thÊp. CX th−êng ®−îc dïng ®Ó chøa sè lÇn lÆp trong c¸c lÖnh LOOP, cßn CL th−êng chøa sè lÇn dÞch hoÆc quay trong c¸c lÖnh dÞch quay thanh ghi. + DX (Data): Thanh ghi ®÷ liÖu, sö dông ®Ó chøa to¸n h¹ng, kÕt qu¶. DX cïng AX dïng ®Ó chøa to¸n h¹ng hoÆc kÕt qu¶ cña c¸c phÐp nh©n, chia sè 16 bit. DX cßn chøa ®Þa chØ cæng trong c¸c lÖnh vµo ra trùc tiÕp (IN, OUT). DX cã thÓ ®−îc ph©n chia thµnh DH : PhÇn cao. DL : PhÇn thÊp. C¸c thanh ghi con trá, chØ sè • C¸c thanh ghi SP, BP lµ c¸c thanh ghi con trá kh«ng t¸ch rêi. + SP (Stack Pointer): Thanh ghi con trá ng¨n xÕp, trá vµo ®Ønh hiÖn thêi cña ng¨n xÕp n»m trong ®o¹n ng¨n xÕp SS (Nã lu«n kÕt hîp víi thanh ghi SS). Ta cã ®Þa chØ logic SS: SP. Sau mçi thao t¸c cÊt mét word vµo stack (thao t¸c Push) th× SP tù ®éng gi¶m 2 ®¬n vÞ, cßn sau thao t¸c lÊy mét word ra khái stack (thao t¸c Pop), SP ®−îc tù ®éng t¨ng 2 ®¬n vÞ. + BP (Base stack Pointer): Con trá c¬ së, lu«n trá vµo mét d÷ liÖu cô thÓ n»m trong ®o¹n ng¨n xÕp SS. Ta cã ®Þa chØ logic SS: BP. + SI (Source Index): Thanh ghi chØ sè nguån (hay nguån), chØ vµo d÷ liÖu n»m trong ®o¹n DS. Ta cã ®Þa chØ logic DS: SI. + DI (Destination Index): Thanh ghi chØ sè ®Ých, chØ d÷ liÖu trong ®o¹n DS. Ta cã ®Þa chØ logic DS: DI. Ta cã c¸c cÆp SP, BP ®i víi SS vµ SI, DI ®i víi DS. Trong c¸c lÖnh thao t¸c víi d÷ liÖu kiÓu chuçi th× cÆp ES:DI lu«n øng víi ®Þa chØ cña phÇn tö thuéc chuçi ®Ých cßn cÆp DS:SI øng víi ®Þa chØ cña phÇn tö thuéc chuçi nguån. Khèi ALU • Lµm nhiÖm vô thùc hiÖn c¸c lÖnh sè häc vµ logic. + Sè häc: +, -, *, /, so s¸nh, ®¶o dÊu. + Logic: Phñ ®Þnh (NOT): NOT 0 = 1, NOT 1 = 0 Tæng qu¸t: NOT A , lµ phÐp ®¶o tõng bit cña A (8, 16 bit). Vµ (AND) A AND B , thùc hiÖn AND tõng cÆp bit mét cña A vµ B (8, 16 bit). NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 13
  4. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp VÝ dô: A =1011 0100 B =1101 0011 A AND B =1001 0000 HoÆc (OR) A OR B, thùc hiÖn OR tõng cÆp bit cña A vµ B (8, 16 bit). VÝ dô: A =1011 0100 B =1101 0011 A OR B =1111 0111 Céng modul (XOR – eXclusive OR) a ⊕ b = a.b + a.b VÝ dô: A =1011 0100 B =1101 0011 A XOR B =1001 0000 Thanh ghi cê: • §©y lµ thanh ghi 16 bit, mçi bit ®−îc sö dông ®Ó thÓ hiÖn mét tr¹ng th¸i cña bé vi xö lý t¹i mét thêi ®iÓm nhÊt ®Þnh trong qu¸ tr×nh thùc hiÖn ch−¬ng tr×nh (d·y c¸c c©u lÖnh), nh−ng chØ dïng 9 bit ®èi víi bé vi xö lý 8088/8086. Mçi bit ®ã ®−îc gäi lµ mét cê (flag). Gi¸ trÞ cña mçi cê ®−îc biÓu diÔn b»ng c¸c ký hiÖu gîi nhí nh− c¸ch biÓu diÔn cña ch−¬ng tr×nh Debug cña DOS. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X x x O D I TS Z x A x P x C C¸c cê cña bé vi xö lý 8085 (x: Kh«ng ®−îc ®Þnh nghÜa (don't care), víi 8 bit thÊp lµ c¸c cê cña bé vi xö lý 8085) H×nh vÏ: S¬ ®å thanh ghi cê cña 8088/86 o Cê tr¹ng th¸i: BiÓu diÔn tr¹ng th¸i phÐp to¸n võa thùc hiÖn. CF (Carry Flag): Cê nhí (cê trµn). CF = 1 (CY - CarrY) khi kÕt qu¶ phÐp to¸n v−ît (trµn) khu«n khæ biÓu diÔn (cã nhí (m−în) lªn trªn (tõ) MSB), CF = 0 (NC - No Carry) trong tr−êng hîp ng−îc l¹i. Cê nµy th−êng ®−îc sö dông khi thùc hiÖn c¸c phÐp céng, trõ c¸c sè nhiÒu byte. VÝ dô: 1011 0001 + 0110 1001 1 0001 1010 PF (Parity Flag): Cê ch½n lÎ. PF = 1 (PE - Parity Even) khi sè bit 1 trong kÕt qu¶ phÐp to¸n (hay c¸c phÐp vËn chuyÓn d÷ liÖu) lµ ch½n, PF = 0 (PO - Parity Old) trong tr−êng hîp ng−îc l¹i. AF (Carry Flag): Cê nhí phô (trµn phô - cê bæ trî). Cê nµy cã ý nghÜa khi ta lµm viÖc víi sè BCD. AF = 1 (AC - Auxiliary Carry) khi cã nhí hoÆc m−în tõ mét sè BCD thÊp (4 bit thÊp) sang mét sè BCD cao (4 bit cao) vµ AF = 0 (NA - No Auxiliary carry) trong tr−êng hîp ng−îc l¹i. SF (Sign Flag): Cê dÊu. Trong bé vi xö lý 8088/8086 c¸c sè ©m ®−îc biÓu diÔn d−íi d¹ng sè bï 2, nªn ph¶i dïng cê SF ®Ó chØ thÞ dÊu cña kÕt qu¶. 14 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  5. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp SF = 1 (NG - NeGative), khi kÕt qu¶ phÐp to¸n lµ mét sè ©m, SF = 0 (PL- PLus) trong tr−êng hîp ng−îc l¹i. ZF (Zero Flag): Cê rçng. ZF = 1 (ZR - ZeRo) khi kÕt qu¶ phÐp to¸n = 0, ZF = 0 (NZ-Non Zero) trong tr−êng hîp ng−îc l¹i. OF (Overflow Flag): Cê trµn. OF = 1 (OV-OVerflow) khi kÕt qu¶ lµ sè bï 2 v−ît khu«n khæ biÓu diÔn (trµn sè häc, hay nãi c¸ch kh¸c: khi céng hai sè cïng dÊu mµ kÕt qu¶ lµ mét sè tr¸i dÊu th× OF = 1), OF = 0 (NV-Non oVerflow) trong tr−êng hîp ng−îc l¹i (cê nµy lµm viÖc víi sè cã dÊu). o Cê ®iÒu khiÓn Cê tr¹ng th¸i phô thuéc kÕt qu¶ phÐp to¸n, cßn víi cê ®iÒu khiÓn ta cã thÓ thiÕt lËp nhê lÖnh. IF (Interrupt Flag): Cê ng¾t. IF = 1 (EI-Enable Interrup), CPU cho phÐp ng¾t, IF = 0 (DI-Disable Interrup) CPU kh«ng cho phÐp ng¾t (cÊm) c¸c lo¹i ng¾t che ®−îc (Maskable).. TF (Trap Flag): Cê bÉy. TF = 1 CPU lµm viÖc trong chÕ ®é ch¹y tõng lÖnh, th−êng dïng ®Ó gì rèi ch−¬ng tr×nh (debug). Sau khi thùc hiÖn xong mçi lÖnh, bé vi xö lý sÏ ph¸t ra mét lÖnh ng¾t (INT) ®Ó cã kiÓm tra ch−¬ng tr×nh. DF (Direction Flag): Cê h−íng. §iÒu khiÓn h−íng xö lý ®èi víi thao t¸c chuçi. DF = 1 (DN-DowN) th× c¸c lÖnh vËn chuyÓn d÷ liÖu hay xö lý chuçi sÏ thao t¸c lïi tõ ph¶i ®Õn tr¸i (®Þa chØ cao ®Õn ®Þa chØ thÊp). DF=0 (UP) trong tr−êng hîp ng−îc l¹i (thao t¸c c¸c phÇn tö tõ ®Þa chØ thÊp ®Õn ®Þa chØ cao). Cê nµy th−êng ®−îc lËp bëi ch−¬ng tr×nh cña ng−êi sö dông khi cã c¸c lÖnh thao t¸c chuçi. tiÕn (thuËn – theo chiÒu t¨ng ®Þa chØ) lïi (ng−îc – theo chiÒu gi¶m ®Þa chØ) BIU Hµng ®îi: Lµ tËp thanh ghi • Víi 8086 hµng ®îi lÖnh lµ 6 byte, 8088 hµng ®îi lÖnh lµ 4 byte nªn chøa ®−îc tèi ®a lµ 4 lÖnh. CPU chøa tËp thanh ghi theo kiÓu LIFO. C¬ chÕ: + §äc lÖnh (lÊy lÖnh) + Gi¶i m· lÖnh + Thùc hiÖn Hµng ®îi lÖnh Thanh ghi IP: Thanh ghi con trá lÖnh, trá vµo lÖnh tiÕp theo • chuÈn bÞ ®−îc thùc hiÖn n»m trong ®o¹n CS (CS: IP). Sau khi ®äc 1 byte, IP tù ®éng t¨ng thªm 1. Nh− vËy thùc tÕ th× cÆp CS:IP míi lµ con trá lÖnh v× nã chøa ®Þa chØ ®Çy ®ñ cña mét lÖnh trong bé nhí. Thanh ghi ®o¹n: • + CS (Code Segment): Thanh ghi ®o¹n m·, lµ thanh ghi ®Þa chØ ®o¹n m· lÖnh, chøa ®Þa chØ c¬ së (®Þa chØ ®o¹n) cña ch−¬ng tr×nh ®ang thùc hiÖn. NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 15
  6. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp + DS (Data Segment): Thanh ghi ®o¹n d÷ liÖu, lµ thanh ghi ®Þa chØ ®o¹n d÷ liÖu, chøa ®Þa chØ ®o¹n cña vïng d÷ liÖu mµ ch−¬ng tr×nh ®ang thùc hiÖn sö dông. Vïng nµy th−êng chøa c¸c biÕn cña ch−¬ng tr×nh. + SS (Stack Segment): Thanh ghi ®o¹n ng¨n xÕp, lµ thanh ghi ®Þa chØ ®o¹n bé nhí ng¨n xÕp (stack) cña ch−¬ng tr×nh ®ang ch¹y. + ES (Extra Segment): Thanh ghi ®o¹n d÷ liÖu phô, lµ thanh ghi ®Þa chØ ®o¹n d÷ liÖu bæ sung mµ ch−¬ng tr×nh ®ang thùc hiÖn sö dông. Vïng nµy còng th−êng chøa c¸c biÕn cña ch−¬ng tr×nh. 8088 cã 20 bit ®Þa chØ, trong khi ®ã c¸c thanh ghi qu¶n lý bé nhí lµ 16 bit. §Ó x¸c ®Þnh mét ng¨n nhí cã ®Þa chØ 20 bit, dïng 2 thanh ghi 16 bit ®Ó x¸c ®Þnh ®Þa chØ. §Þa chØ lu«n n»m trong mét thanh ghi gäi lµ ®Þa chØ ®o¹n. §Þa chØ lÖch (offset) trong mét thanh ghi kh¸c (Ax, Bx, Cx, ...). §Þa chØ logic: DS:SI DS:DI DS:XX §Þa vËt lý (ph¶i lµ sè 20 bit) ®−îc x¸c ®Þnh nh− sau: §Þa vËt lý = ®Þa chØ ®o¹n * 16 + ®Þa chØ lÖch VÝ dô: DS = 4000h, SI = 3F4Dh §Þa chØ logic cña ng¨n nhí: 4000:3F4D §Þa chØ vËt lÝ cña ng¨n nhí: DS * 16 + SI = 40000 + 3F4D = 43F4Dh T¹i mét thêi ®iÓm CPU qu¶n lý ®−îc 4 ®o¹n nhí (DS, SS, CS, ES) , nã cã thÓ ®ång thêi truy nhËp 4 ®o¹n ®ã. Bé nhí ®−îc chia thµnh nhiÒu ®o¹n. Mçi ®o¹n cã kÝch th−íc tèi ®a lµ 64 KB. VËy ta cã 16 ®o¹n t¸ch rêi vµ ®Þa chØ lÖch thay ®æi tõ 0000 H ®Õn FFFFh. NÕu ®Þa chØ ®o¹n thay ®æi tõ 0000h ®Õn FFFFh th× cã 64 K®o¹n. Khi nµy c¸c ®o¹n bao trïm lªn nhau. 2 ®o¹n kÒ nhau sÏ c¸c nhau 16 Byte (Paragraph). Khi khëi ®éng m¸y (hoÆc Reset) CS ®−îc n¹p gi¸ trÞ F000h, IP ®−îc n¹p gi¸ trÞ FFF0h. §Þa chØ nµy thuéc ®o¹n cuèi, n¬i ®Æt ROM khëi ®éng. §Þa chØ vËt lý = F000h*16 + FFF0h = F0000h + FFF0h = FFFF0h c. Bé vi xö lý 8086 vµ 8088 2. ChÕ ®é ®Þa chØ cña 8088 a. C¸ch m· ho¸ lÖnh cña bé VXL 8088/88 b. ChÕ ®é ®Þa chØ thanh ghi Dïng thanh ghi nh− lµ c¸c to¸n h¹ng chøa d÷ liÖu cÇn thao t¸c, tèc ®é thùc hiÖn lÖnh rÊt nhanh v× CPU kh«ng mÊt thêi gian t×m kiÕm d÷ liÖu. VÝ dô: MOV AL, BL ; AL:= BL MOV DS, BX ; DS:= BX ADD AL, DL ; AL:= AL + DL c. ChÕ ®é ®Þa chØ tøc th× + To¸n h¹ng ®Ých lµ thanh ghi, hoÆc « nhí. + To¸n h¹ng nguån lµ 1 gi¸ trÞ cô thÓ (h»ng sè). 16 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  7. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp VÝ dô: MOV AL, 0Dh ;AL:=0Dh LÖnh nµy th−êng ®−îc dïng ®Ó n¹p d÷ liÖu cÇn thao t¸c vµo thanh ghi nµo ®ã. d. ChÕ ®é ®Þa chØ tùc tiÕp - Mét to¸n h¹ng lµ ®Þa chØ offset cña « nhí chøa gi¸ trÞ cÇn thao t¸c. - To¸n h¹ng kia lµ thanh ghi (kh«ng ®−îc lµ « nhí). VÝ dô: MOV AL, [04FCh] ; ®−a vµo thanh ghi AL néi dung « nhí cã ®Þa chØ logic DS:04FCh. e. ChÕ ®é ®Þa chØ gi¸n tiÕp qua thanh ghi Mét to¸n h¹ng lµ thanh ghi chøa ®Þa chØ offset cña ng¨n nhí chøa gi¸ trÞ cÇn - thao t¸c. - To¸n h¹ng kia lµ thanh ghi (kh«ng ®−îc lµ ng¨n nhí). VÝ dô: MOV [BX], AL ; §−a néi dung thanh ghi AL vµo ng¨n nhí cã ®Þa chØ offset n»m trong thanh ghi BX. f. ChÕ ®é ®Þa chØ t−¬ng ®èi c¬ së Thanh ghi BX, BP vµ c¸c h»ng sè lµ gi¸ trÞ dÞch chuyÓn ®Ó x¸c ®Þnh ng¨n nhí - trong DS, SS chøa gi¸ trÞ cÇn thao t¸c. VÝ dô: MOV [BX + N], CL ; §−a néi dung thanh ghi CL vµo ng¨n nhí cã ®Þa chØ offset BX + N (DS:BX + N) MOV AL, [BP + N] ; §−a néi ng¨n nhí cã ®Þa chØ offset BP + N vµo thanh ghi AL (SS:BP + N) g. ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè Thanh ghi DI, SI vµ c¸c h»ng sè lµ gi¸ trÞ dÞch chuyÓn ®Ó x¸c ®Þnh ng¨n nhí - chøa gi¸ trÞ trong DS cÇn thao t¸c. VÝ dô: MOV [SI + N], AH ; §−a néi dung thanh ghi AH vµo ng¨n nhí cã ®Þa chØ offset t¹i SI + N (DS:SI + N). MOV CL, [DI + N] ; §−a néi dung ng¨n nhí cã ®Þa chØ offset t¹i DI + N (DS:DI + N) vµo thanh ghi CL. h. ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè c¬ së ChÕ ®é ®Þa chØ nµy lµ sù kÕt hîp c¶ 2 chÕ ®é ®Þa chØ trªn. Dïng c¶ thanh ghi c¬ - së vµ thanh ghi chØ sè ®Ó tÝnh ®Þa chØ to¸n h¹ng. VÝ dô: MOV [BX + SI + N], AX ;§−a néi dung thanh ghi AX vµo ng¨n ;nhí cã ®Þa chØ offset t¹i BX + SI + N (DS:BX + SI + N). MOV CL, [BP + DI + N] ;§−a néi dung ng¨n nhí cã ®Þa chØ ;offset t¹i BP + DI + N (DS:BP + DI + N) ;vµo thanh ghi CL. NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 17
  8. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp 3. M« t¶ tËp lÖnh cña 8088 TËp lÖnh cña bé vi xö lý 8088 nãi chung ®−îc chia M· lÖnh ®Ých, nguån thµnh 6 nhãm, víi 5 nhãm thao t¸c d÷ liÖu vµ 1 nhãm ®Æc biÖt (gåm c¸c chØ thÞ ®Ó ®iÒu khiÓn). Mét lÖnh th−êng cã cÊu tróc nh− sau: a. Nhãm lÖnh chuyÓn d÷ liÖu Nhãm nµy thùc hiÖn vËn chuyÓn d÷ liÖu (sao chÐp - copy) tõ n¬i nµy ®Õn n¬i kh¸c. + MOV ®Ých, nguån (Move a Word or Byte) LÖnh thùc hiÖn chuyÓn d÷ liÖu tõ nguån tíi ®Ých (®Ých nguån), d÷ liÖu cã thÓ lµ mét byte hoÆc mét word (tõ). C¸c to¸n h¹gn cã thÓ ®−îc t×m thÊy qua c¸c chÕ ®é ®Þa chØ kh¸c nhau. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + LDS ®Ých, nguån (Load Register and DS with Word from Memory) LÖnh thùc hiÖn n¹p mét word tõ bé nhí vµo thanh ghi cho trong lÖnh vµ mét word tiÕp theo vµo thanh ghi DS (®Ých nguån, DS nguån+2). øng dông: th−êng n¹p ®Þa chØ ®Çu cña vïng nhí chøa chuçi nguån vµo SI vµ DS tr−íc khi dïng ®Õn lÖnh thao t¸c chuçi. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. VÝ dô: LDS SI, Str ;LÖnh n¹p vµo SI néi dung 2 « nhí Str vµ Str+1, råi n¹p vµo ;DS néi dung 2 « nhí Str+2 vµ Str+3, c¸c « nhí n»m trong DS. + LEA ®Ých, nguån (Load Effective Address) LÖnh thùc hiÖn n¹p ®Þa chØ hiÖu dông vµo thanh ghi. To¸n h¹ng '®Ých' th−êng lµ mét trong c¸c thanh ghi: BX, CX, DX, BP, SI, DI. To¸n h¹ng 'nguån' lµ tªn biÕn trong ®o¹n DS ®−îc chØ ra trong lÖnh hoÆc « nhí cô thÓ. ®Ých ®Þa chØ lÖch cña nguån (®Ých @nguån) ®Ých ®Þa chØ hiÖu dông cña nguån LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. VÝ dô: LEA DX, Str ;LÖnh n¹p ®Þa chØ offset cña Str vµo DX LEA CX, [BX] ;LÖnh n¹p ®Þa chØ hiÖu dông (EA-Effective Address) ;EA = BX LEA CX, [BX][DI] ;LÖnh n¹p ®Þa chØ hiÖu dông EA = BX + DI + LES ®Ých, nguån LÖnh nµy gièng lÖnh LDS nh−ng 2 byte tiÕp theo ®−îc n¹p vµo thanh ghi ES. øng dông: th−êng n¹p vµo DI vµ ES ®Þa chØ ®Çu cña vïng nhí chøa chuçi tr−íc khi thùc hiÖn c¸c lÖnh thao t¸c chuçi. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. VÝ dô: LES DI, Str ;LÖnh n¹p ®Þa chØ offset cña Str vµo DX 18 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  9. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp + IN Acc, Port (Input data from a port) §äc d÷ liÖu tõ cæng vµo/ra vµo thanh ghi Acc (Acc {Port}). Víi {Port} lµ d÷ liÖu cña cæng cã ®Þa chØ lµ Port (lµ ®Þa chØ 8 bit = 00h..FFh). Acc lµ AL ®äc 8 bit tõ cæng Port, lµ AX ®äc 16 bit tõ cæng Port vµ Port+1. Th−êng dïng DX ®Ó chøa ®Þa chØ cæng cã thÓ cã ®Þa chØ tõ 0000h..FFFFh ViÕt lÖnh: IN Acc, DX LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. VÝ dô: MOV DX, 07F8h IN AL, DX ;§äc 1 byte tõ cæng cã ®Þa chØ 07F8h + OUT Acc, Port (Output a byte or a word to a port) §−a d÷ liÖu tõ thanh ghi Acc ®Õn cæng vµo/ra. Acc Port. LÖnh nµy thao t¸c ng−îc l¹i víi lÖnh IN, tÝnh chÊt hoµn toµn t−¬ng tù. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + STC (Set the Carry fag): LËp cê nhí: CF 1 LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê kh¸c. + STD (Set the Direcion flag): LËp cê h−íng: DF 1 LÖnh nµy ®Þnh h−íng thao t¸c cho c¸c lÖnh lµm viÖc víi chuçi theo chiÒu lïi ( ). C¸c thanh ghi liªn quan: SI, DI sÏ ®−îc tù ®éng gi¶m khi lµm viÖc xong víi 1 phÇn tö cña chuçi. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + STC (Set the Interrupt fag): LËp cê cho phÐp ng¾t: IF 1 LÖnh lËp IF ®Ó cho c¸c yªu cÇu ng¾t t¸c ®éng vµo ch©n INTR ®−îc CPU nhËn biÕt. IF=1, INTR=1 CPU bÞ ng¾t, cÊt thanh ghi cê, ®Þa chØ trë vÒ vµo Stack råi thùc hiÖn ch−¬ng tr×nh con phôc vô ng¾t. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê kh¸c. + CLC (Clear the Carry flag): Xo¸ cê nhí: CF 0. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê kh¸c. + CLD (Clear the Direction flag): Xo¸ cê h−íng: DF 0. LÖnh ®Þnh h−íng thao t¸c cho c¸c lÖnh lµm viÖc víi chuçi theo chiÒu tiÕn ( ). C¸c thanh ghi liªn quan: SI, DI sÏ tù ®éng t¨ng 1 khi lµm viÖc xong víi mét phÇn tö d÷ liÖu cña chuçi. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê kh¸c. + CLI (Clear the Interrupt flag): Xo¸ cê cho phÐp ng¾t: IF 0. Khi thùc hiÖn lÖnh nµy, c¸c ng¾t che ®−îc sÏ bÞ che. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê kh¸c. + CMC (Complement the Carry flag): §¶o cê nhí: CF CF LÖnh chØ cËp nhËt CF, kh«ng t¸c ®éng ®Õn c¸c cê kh¸c. + PUSH nguån Push Word on the Stack: CÊt 1 tõ vµo ng¨n xÕp SP SP-2 {SP} nguån To¸n h¹ng nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau. LÖnh nµy th−êng ®i cÆp víi lÖnh POP. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + POP ®Ých Pop Word from top of Stack: LÊy 1 word tõ ®Ønh ng¨n xÕp vµo thanh ghi ®Ých {SP} SP SP+2 To¸n h¹ng ®Ých t×m ®−îc theo c¸c chÕ ®é ®Þa chØ (kh«ng ®−îc lµ thanh ghi ®o¹n m·: CS). D÷ liÖu ®Ó t¹i ng¨n xÕp kh«ng thay ®æi. SS kh«ng thay ®æi. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 19
  10. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp + POPF Pop Word from top of Stack to Flag register: LÊy 1 word tõ ®Ønh ng¨n xÕp vµo thanh ghi cê. RF {SP} SP SP+2 D÷ liÖu ®Ó t¹i ng¨n xÕp kh«ng thay ®æi. SS kh«ng thay ®æi. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. b. Nhãm lÖnh sè häc + ADC ®Ých, nguån Add with carry: céng 2 to¸n h¹ng cã nhí ®Ých ®Ých+nguån+CF C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (cïng kiÓu). Kh«ng ®−îc lµ 2 « nhí vµ kh«ng ®−îc lµ thanh ghi ®o¹n. §iÒu nµy ¸p dông hÇu hÕt cho tÊt c¶ c¸c lÖnh sè häc cã có ph¸p t−¬ng tù. LÖnh cËp nhËt c¸c cê: AF, CF, OF, PF, SF, ZF. + ADD ®Ých, nguån ;Add: céng 2 to¸n h¹ng cã nhí ®Ých ®Ých+nguån C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (cïng kiÓu). Kh«ng ®−îc lµ 2 « nhí vµ kh«ng ®−îc lµ thanh ghi ®o¹n. (TÝnh chÊt gièng víi lÖnh ADC). LÖnh cËp nhËt c¸c cê: AF, CF, OF, PF, SF, ZF. + SBB ®Ých, nguån Substract with Borrow: Trõ cã m−în ®Ých ®Ých-nguån-CF C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (cïng kiÓu). Kh«ng ®−îc lµ 2 « nhí vµ kh«ng ®−îc lµ thanh ghi ®o¹n. (TÝnh chÊt gièng víi lÖnh ADC). LÖnh cËp nhËt c¸c cê: AF, CF, OF, PF, SF, ZF. AF, PF chØ liªn quan ®Õn 8 bit thÊp + SUB ®Ých, nguån Substract: Trõ 2 to¸n h¹ng ®Ých ®Ých-nguån C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (cïng kiÓu). Kh«ng ®−îc lµ 2 « nhí vµ kh«ng ®−îc lµ thanh ghi ®o¹n. (TÝnh chÊt gièng víi lÖnh ADC). LÖnh cËp nhËt c¸c cê: AF, CF, OF, PF, SF, ZF. AF, PF chØ liªn quan ®Õn 8 bit thÊp Chó ý: C¸c vÝ dô cho c¸c lÖnh ADC, ADD, SBB, SUB cã thÓ tham kh¶o trong tµi liÖu Kü thuËt Vi xö lý - V¨n ThÕ Minh. + MUL nguån (Multiply Unsigned Byte or Word) Nh©n sè kh«ng dÊu. To¸n h¹ng 'nguån' lµ sè nh©n, t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. Tuú theo ®é dµi (kÝch th−íc) cña to¸n h¹ng 'nguån' mµ ta cã c¸c tr−êng hîp sau: o 'nguån' lµ 8 bit (1 byte): AX AL*nguån, sè bÞ nh©n ph¶i lµ sè 8 bit ®Ó trong thanh ghi AL. o 'nguån' lµ 16 bit (2 byte): DXAX AX*nguån, sè bÞ nh©n ph¶i lµ sè 16 bit ®Ó trong thanh ghi AX. 20 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  11. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp NÕu byte cao (hoÆc 16 bit cao) cña 16 (hoÆc 32) bit kÕt qu¶ chøa 0 th× CF=OF=0. VËy CF, OF cho ta biÕt cã thÓ bá ®i bao nhiªu bit 0 trong kÕt qu¶ cña lÖnh nh©n nµy. LÖnh cËp nhËt: CF, OF Kh«ng x¸c ®Þnh: AF, PF, SF, ZF + DIV nguån (Unsigned Divide) Chia sè kh«ng dÊu. To¸n h¹ng 'nguån' lµ sè chia, t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. Tuú theo ®é dµi (kÝch th−íc) cña to¸n h¹ng 'nguån' mµ ta cã c¸c tr−êng hîp sau: o 'nguån' lµ 8 bit (1 byte): AL lÊy nguyªn(AX/nguån) AH lÊy d−(AX/nguån) Sè bÞ chia ph¶i lµ sè 16 bit ®Ó trong thanh ghi AX. o 'nguån' lµ 16 bit (2 byte):AX lÊy nguyªn(DXAX/nguån) DX lÊy d−(DXAX/nguån) Sè bÞ chia ph¶i lµ sè 32 bit ®Ó theo thø tù trong cÆp thanh ghi DXAX. PhÇn nguyªn ®−îc lÊy lµm trßn xuèng theo sè nguyªn s¸t d−íi. NÕu 'nguån' = 0 hoÆc th−¬ng lín h¬n FFh (hoÆc FFFFh tuú theo ®é dµi to¸n h¹ng 'nguån') th× 8088/8086 thùc hiÖn ng¾t INT 0. Kh«ng x¸c ®Þnh c¸c cê: AF, CF, OF, PF, SF, ZF. + IMUL nguån (Integer Multiplication (Multiply signed Number)) Nh©n sè cã dÊu. To¸n h¹ng 'nguån' lµ sè nh©n, cã thÓ t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. Tuú theo ®é dµi (kÝch th−íc) to¸n h¹ng 'nguån' mµ ta cã c¸c tr−êng hîp sau: o 'nguån' lµ 8 bit (1 byte): AX AL*nguån, sè bÞ nh©n ph¶i lµ sè 8 bit cã dÊu ®Ó trong thanh ghi AL. o 'nguån' lµ 16 bit (2 byte): DXAX AX*nguån, sè bÞ nh©n ph¶i lµ sè 16 bit cã dÊu ®Ó trong thanh ghi AX. NÕu tÝch thu ®−îc nhá, kh«ng lÊp ®Çy ®−îc hÕt c¸c chç dµnh cho nã th× c¸c bit kh«ng dïng ®Õn ®−îc thay b»ng bit dÊu. NÕu byte cao (hoÆc 16 bit cao) cña 16 bit (hoÆc 32 bit) kÕt qu¶ chØ chøa c¸c gi¸ trÞ cña dÊu th× CF=OF=0. NÕu byte cao (hoÆc 16 bit cao) cña 16 bit (hoÆc 32 bit) kÕt qu¶ chØ chøa mét phÇn kÕt qu¶ th× CF=OF=0. VËy CF, OF: cho ta biÕt kÕt qu¶ cã ®é dµi thùc chÊt lµ bao nhiªu. LÖnh cËp nhËt: CF, OF. Kh«ng x¸c ®Þnh: AF, PF, SF, ZF. + IDIV nguån (Integer Division (Signed Divide)) Chia sè cã dÊu. To¸n h¹ng 'nguån' lµ sè chia, cã thÓ t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. LÖnh nµy dïng ®Ó chia c¸c sè nguyªn cã dÊu. Chç ®Ó ngÇm ®Þnh cña sè chia, sè bÞ chia, th−¬ng vµ phÇn d− gièng nh− cña lÖnh DIV ®· giíi thiÖu trªn. ChØ kh¸c lµ: o AL chøa th−¬ng (sè cã dÊu), AH chøa phÇn d− (sè cã dÊu). DÊu cña sè d− trïng víi dÊu cña sè bÞ chia (AX hoÆc DXAX) o NÕu 'nguån' = 0 hoÆc th−¬ng n»m ngoµi -128..127 (hoÆc ngoµi - 32768..32767 tuú ®é dµi (kÝch th−íc) cña to¸n h¹ng 'nguån') th× 8088/8086 thùc hiÖn lÖnh INT 0. + NEG ®Ých (Negative a Operand (From its 2's Complement)) §¶o dÊu mét to¸n h¹ng (lÊy bï 2 cña mét to¸n h¹ng). To¸n h¹ng ®Ých cã thÓ t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. ®Ých 0-®Ých = ®Ých+1 (not ®Ých +1) LÖnh cËp nhËt: AF, CF, OF, PF, SF, ZF. + INC ®Ých (Increment Destination register or Memory) NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 21
  12. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp T¨ng to¸n h¹ng ®Ých lªn 1. To¸n h¹ng ®Ých cã thÓ t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. ®Ých ®Ých+1 NÕu ®Ých = FFh (hoÆc FFFFh) th× ®Ých-1 = 00h (hoÆc 0000h) mµ kh«ng ¶nh h−ëng cê CF. LÖnh nµy t−¬ng ®−¬ng ADD ®Ých,1. LÖnh cËp nhËt: AF, OF, PF, SF, ZF Kh«ng x¸c ®Þnh CF + DEC ®Ých (Decrement Destination register or Memory) Gi¶m to¸n h¹ng ®Ých ®i 1. To¸n h¹ng ®Ých cã thÓ t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. ®Ých ®Ých-1 NÕu ®Ých = 00h (hoÆc 0000h) th× ®Ých-1 = FFh (hoÆc FFFFh) mµ kh«ng ¶nh h−ëng cê CF. LÖnh nµy t−¬ng ®−¬ng ADD ®Ých,1. LÖnh cËp nhËt: AF, OF, PF, SF, ZF Kh«ng x¸c ®Þnh CF + XCHG ®Ých, nguån (Exchange 2 Operands) Ho¸n ®æi néi dung 2 to¸n h¹ng. ®Ých nguån C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cã cïng ®é dµi (kÝch th−íc-kiÓu). Kh«ng ®−îc ®ång thêi lµ 2 « nhí, kh«ng ®−îc lµ thanh ghi ®o¹n. Sau khi thùc hiÖn XCHG th× to¸n h¹ng nµy chøa néi dung cò cña to¸n h¹ng kia vµ ng−îc l¹i. LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. LÖnh nµy thuéc nhãm lÖnh vËn chuyÓn d÷ liÖu. c. Nhãm lÖnh logic, dÞch vµ quay C¸c lÖnh logic + NOT ®Ých (Invert Each bit of an Operand (From its 1's Complement)) LÖnh lÊy bï 1 cña mét to¸n h¹ng (®¶o bit cña mét to¸n h¹ng). To¸n h¹ng ®Ých t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. ®Ých ®Ých LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + AND ®Ých, nguån (And Corresponding bits of Two Operand) Vµ 2 to¸n h¹ng. ®Ých ®Ých∧nguån C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (kÝch th−íc), kh«ng ®−îc lµ 2 « nhí, kh«ng ®−îc lµ thanh ghi ®o¹n øng dông: Th−êng dïng lÖnh AND ®Ó 'che' ®i (gi÷ l¹i) mét sè bit nµo ®ã cña to¸n h¹ng b»ng c¸ch nh©n logic (AND) to¸n h¹ng ®ã víi mét to¸n h¹ng tøc th× cã c¸c bit 0, 1 ë c¸c vÞ trÝ cÇn 'che' (gi÷ l¹i). To¸n h¹ng tøc th× lóc nµy gäi lµ mÆt n¹. LÖnh xo¸ cê CF, OF. CËp nhËt: PF, SF, ZF (PF chØ cã nghÜa khi to¸n h¹ng 8 bit), kh«ng x¸c ®Þnh cê AF. + OR ®Ých, nguån (Logically Or Corresponding bits of Two Operands) HoÆc 2 to¸n h¹ng. ®Ých ®Ých∨nguån C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (kÝch th−íc), kh«ng ®−îc lµ 2 « nhí, kh«ng ®−îc lµ thanh ghi ®o¹n øng dông: Th−êng dïng lÖnh Or ®Ó lËp mét sè bit nµo ®ã cña to¸n h¹ng b»ng c¸ch céng logic (Or) to¸n h¹ng ®ã víi mét to¸n h¹ng tøc th× cã c¸c bit 0, 1 ë c¸c vÞ trÝ cÇn lËp. 22 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  13. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp LÖnh xo¸ cê CF, OF. CËp nhËt: PF, SF, ZF (PF chØ cã nghÜa khi to¸n h¹ng 8 bit), kh«ng x¸c ®Þnh cê AF. + XOR ®Ých, nguån (Exclusive Or Corresponding bits of Two Operands) HoÆc lo¹i trõ 2 to¸n h¹ng. ®Ých ®Ých⊕nguån C¸c to¸n h¹ng ®Ých, nguån t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cïng ®é dµi (kÝch th−íc), kh«ng ®−îc lµ 2 « nhí, kh«ng ®−îc lµ thanh ghi ®o¹n. Theo tÝnh chÊt cña phÐp hoÆc lo¹i trõ, nÕu to¸n h¹ng ®Ých trïng to¸n h¹ng gèc th× kÕt qu¶ b»ng kh«ng (kÕt qu¶ = 0) vµ c¸c cê CF, OF còng bÞ xo¸. øng dông: LÖnh th−êng ®−îc dïng xo¸ vÒ 0 m«t thanh ghi nµo ®ã. LÖnh xo¸ cê CF, OF. CËp nhËt: PF, SF, ZF (PF chØ cã nghÜa khi to¸n h¹ng 8 bit), kh«ng x¸c ®Þnh cê AF. C¸c lÖnh dÞch, quay + SAL ®Ých, CL (Shift Arithmetically Left): DÞch tr¸i sè häc. + SHL ®Ých, CL (Shift (Logically) Left): DÞch tr¸i logic. To¸n h¹ng ®Ých t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. Hai lÖnh nµy cã cïng t¸c ®éng lµ dÞch tr¸i sè häc (cßn gäi lµ dÞch tr¸i logic). Mçi lÇn dÞch MSB ®−îc ®−a qua cê CF vµ gi¸ trÞ 0 ®−îc ®−a vµo LSB, thao t¸c nh− vËy ®−îc gäi lµ dÞch logic. CL ph¶i chøa s½n sè lÇn dÞch mong muèn. Trong tr−êng hîp muèn dÞch 1 lÇn, ta viÕt lÖnh trùc tiÕp: SAL ®Ých, 1 øng dông: Mçi lÇn dÞch, t−¬ng ®−¬ng viÖc CF LBS MSB nh©n to¸n h¹ng víi 2 cña sè kh«ng dÊu. VËy nÕu muèn nh©n mét sè kh«ng dÊu víi 2i th× ta dÞch tr¸i 0 sè bÞ nh©n ®i i lÇn. Nãi chung lÖnh nµy ch¹y nhanh h¬n lÖnh MUL. Cê OF 1 nÕu khi dÞch mét lÇn mµ MSB thay ®æi. Kh«ng x¸c ®Þnh (kh«ng ®óng) sau nhiÒu lÇn dÞch. CF MSB sau mçi lÇn dÞch, v× vËy lÖnh nµy cßn dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña MSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. CËp nhËt: SF, PF, ZF (PF chØ cã nghÜa khi to¸n h¹ng lµ 8 bit) Kh«ng x¸c ®Þnh AF. + SAR ®Ých, CL (Shift Arithmetically Right): DÞch ph¶i sè häc. To¸n h¹ng ®Ých t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. LÖnh cã t¸c dông dÞch ph¶i sè häc to¸n h¹ng. Sau mçi lÇn dÞch MSB ®−îc gi÷ l¹i, LSB ®−îc ®−a vµo cê CF. CL chøa s½n sè lÇn dÞch. Trong tr−êng hîp muèn dÞch 1 lÇn, ta viÕt lÖnh trùc tiÕp: SAR ®Ých, 1 øng dông: Sau mçi lÇn dÞch, t−¬ng ®−¬ng viÖc CF LBS MSB chia to¸n h¹ng víi 2 cña sè cã dÊu. VËy nÕu muèn chia mét sè cã dÊu víi 2i th× ta dÞch ph¶i sè bÞ chia ®i i lÇn (v× vËy gäi lµ dÞch ph¶i sè häc). Nãi chung lÖnh nµy ch¹y nhanh h¬n lÖnh IDIV. Cê OF 1 nÕu khi dÞch mét lÇn mµ LSB thay ®æi. Kh«ng x¸c ®Þnh (kh«ng ®óng) sau nhiÒu lÇn dÞch. CF LSB sau mçi lÇn dÞch, v× vËy lÖnh nµy cßn dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña LSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. CËp nhËt: SF, PF, ZF (PF chØ cã nghÜa khi to¸n h¹ng lµ 8 bit) Kh«ng x¸c ®Þnh AF. + SHR ®Ých, CL (Shift (Logically) Right): DÞch ph¶i logic. LBS CF MSB 0 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 23
  14. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp To¸n h¹ng ®Ých ®−îc t×m theo c¸c chÕ ®é ®Þa chØ. LÖnh cã t¸c ®éng gièng c¸c lÖnh SAL, SHL nh−ng theo chiÒu ng−îc l¹i. + ROL ®Ých, CL (Rotate All Bits to the Left): Quay vßng sang tr¸i. To¸n h¹ng ®Ých t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. LÖnh cã t¸c dông quay vßng to¸n h¹ng sang tr¸i. MSB CF LBS MSB ®−îc ®−a qua cê CF vµ LSB. CL ph¶i chøa s½n sè lÇn quay. Trong tr−êng hîp muèn quay 1 lÇn, ta viÕt lÖnh trùc tiÕp: ROL ®Ých, 1 Ta thÊy, nÕu CL=8 vµ to¸n h¹ng ®Ých lµ 8 bit th× kÕt qu¶ kh«ng bÞ thay ®æi v× to¸n h¹ng quay trßn ®óng 1 vßng, cßn nÕu CL=4 th× 2 nibble cña to¸n h¹ng bÞ ®æi chç cho nhau. Cê OF 1 nÕu khi quay mét lÇn mµ MSB thay ®æi. Kh«ng x¸c ®Þnh (kh«ng ®óng) sau nhiÒu lÇn quay. CF MSB sau mçi lÇn quay, v× vËy lÖnh nµy cßn dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña MSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. CËp nhËt: CF, OF (chØ 2 cê nµy bÞ ¶nh h−ëng) LBS CF MSB Kh«ng x¸c ®Þnh AF. + ROR ®Ých, CL (Rotate All Bits to the Left) Quay vßng sang ph¶i. To¸n h¹ng ®Ých t×m ®−îc theo c¸c chÕ ®é ®Þa chØ. LÖnh cã t¸c dông quay vßng to¸n h¹ng sang ph¶i. LSB ®−îc ®−a qua cê CF vµ MSB. CL ph¶i chøa s½n sè lÇn quay (t¸c ®éng cña lÖnh nµy gièng lÖnh ROL nh−ng theo chiÒu ng−îc l¹i). + RCL ®Ých, CL (Rotate though CF to the Left): Quay tr¸i qua cê CF. LÖnh nµy cã thÓ quay to¸n h¹ng sang tr¸i th«ng CF LBS MSB qua cê CF, CL ph¶i chøa s½n sè lÇn quay. Trong tr−êng hîp muèn quay 1 lÇn, ta viÕt lÖnh trùc tiÕp: RCL ®Ých, 1 Ta thÊy, nÕu CL=9 vµ to¸n h¹ng ®Ých lµ 8 bit th× kÕt qu¶ kh«ng bÞ thay ®æi v× CF cïng víi to¸n h¹ng thanh ghi (8 bit) quay ®óng mét vßng. Cê OF 1 nÕu khi quay mét lÇn mµ LSB thay ®æi. Kh«ng x¸c ®Þnh (kh«ng ®óng) sau nhiÒu lÇn quay. CF MSB sau mçi lÇn quay. CËp nhËt: CF, OF (chØ 2 cê nµy bÞ ¶nh h−ëng). + RCR ®Ých, CL (Rotate though CF to the Right): Quay ph¶i qua cê CF. LÖnh nµy cã thÓ quay to¸n h¹ng sang ph¶i th«ng LBS CF MSB qua cê CF, CL ph¶i chøa s½n sè lÇn quay. Trong tr−êng hîp muèn quay 1 lÇn, ta viÕt lÖnh trùc tiÕp: RCR ®Ých, 1 Ta thÊy, nÕu CL=9 vµ to¸n h¹ng ®Ých lµ 8 bit th× kÕt qu¶ kh«ng bÞ thay ®æi v× CF cïng víi to¸n h¹ng thanh ghi (8 bit) quay ®óng mét vßng. Cê OF 1 nÕu khi quay mét lÇn mµ MSB thay ®æi. Kh«ng x¸c ®Þnh (kh«ng ®óng) sau nhiÒu lÇn quay. CF LSB sau mçi lÇn quay. CËp nhËt: CF, OF (chØ 2 cê nµy bÞ ¶nh h−ëng). d. Nhãm lÖnh so s¸nh + CMP ®Ých, gèc (Compare Byte or Word): So s¸nh 2 byte hay 2 tõ (word). 24 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  15. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp ®Ých-gèc; To¸n h¹ng ®Ých, gèc t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cã cïng ®é dµi (kÝch th−íc). Kh«ng ®−îc (®ång thêi) lµ 2 « nhí, kh«ng ®−îc lµ thanh ghi ®o¹n. LÖnh chØ t¹o cê, kh«ng l−u kÕt qu¶ so s¸nh vµ To¸n h¹ng CF ZF kh«ng lµm thay ®æi gi¸ trÞ c¸c to¸n h¹ng. LÖnh nµy ®Ých = gèc 0 1 th−êng dïng kÌm víi c¸c lÖnh nh¶y cã ®iÒu kiÖn (nh¶y ®Ých > gèc 0 0 theo cê). ®Ých < gèc 1 0 Khi so s¸nh 2 sè kh«ng dÊu, ta cã quan hÖ nh− b¶ng bªn. LÖnh cËp nhËt: AF, CF, OF, PF, SF, ZF. + TEST ®Ých, gèc (And Operands to Update Flag): Vµ 2 to¸n h¹ng ®Ó t¹o cê. ®Ých∧gèc; To¸n h¹ng ®Ých, gèc t×m ®−îc theo c¸c chÕ ®é ®Þa chØ, ph¶i chøa d÷ liÖu cã cïng ®é dµi (kÝch th−íc). Kh«ng ®−îc (®ång thêi) lµ 2 « nhí, kh«ng ®−îc lµ thanh ghi ®o¹n. LÖnh chØ t¹o cê, kh«ng l−u kÕt qu¶. Sau lÖnh nµy gi¸ trÞ c¸c to¸n h¹ng kh«ng bÞ thay ®æi. C¸c cê ®−îc t¹o lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. LÖnh xo¸ cê CF, OF. CËp nhËt: PF, SF, ZF (PF chØ liªn quan ®Õn 8 bit thÊp), kh«ng x¸c ®Þnh cê AF. e. Nhãm lÖnh rÏ nh¸nh (nh¶y), lÆp ViÖc sö dông nhãm c¸c lÖnh nh¶y cã thÓ lµm thay ®æi tÝnh tuÇn tù cña c¸c c©u lÖnh hîp ng÷. LÖnh nh¶y kh«ng ®iÒu kiÖn + JMP Nh·n (Uncondition Jump to Specified Destination) Nh¶y (v« ®iÒu kiÖn) ®Õn ®Ých Nh·n LÖnh míi b¾t ®Çu t¹i ®Þa chØ øng víi nh·n 'Nh·n'. LÖnh Jmp cã thÓ nh¶y lªn (vÒ phÝa ®Þa chØ thÊp) hoÆc nh¶y xuèng (vÒ phÝa ®Þa chØ cao) vµ cã thÓ nh¶y xa ®−îc tèi ®a 1/2 ®o¹n (64Kbyte) LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. LÖnh nh¶y cã ®iÒu kiÖn (nh¶y khi tho¶ m·n mét sè ®iÒu kiÖn) Nh¾c l¹i mét sè tõ tiÕng Anh A: Above (trªn) Z: Zero (kh«ng) S: Signed B: Below (d−íi) G: Greater (lín h¬n) PO: Parity Old N: Not (phñ ®Þnh – kh«ng) L: Less (nhá h¬n) PE: Parity Even E: Equal (b»ng) P: Parity C: Carry (nhí) O: Overflow + JA/JNBE (CF+ZF = 0, so s¸nh kh«ng dÊu) + JAE/JNB/JNC (CF = 0, so s¸nh kh«ng dÊu) + JB/JC/JNAE (CF = 1, so s¸nh kh«ng dÊu) + JCXZ (CX = 0, kh«ng so s¸nh) + JE/JZ (ZF = 1, so s¸nh kh«ng dÊu ) + JG/JNLE ((SF⊕OF)+ZF = 0, so s¸nh cã dÊu ) + JGE/JNL ((SF⊕OF) = 0, so s¸nh cã dÊu ) + JL/JNGE ((SF⊕OF) = 1, so s¸nh cã dÊu ) + JLE/JNG ((SF⊕OF)+ZF = 1, so s¸nh cã dÊu ) + JNE/JNZ (ZF = 0, so s¸nh kh«ng dÊu ) + JNO (OF = 0) NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 25
  16. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp + JNP/JPO (PF = 0) + JNS (SF = 0) + JO (OF = 1) + JP/JPE (PE = 1) + JS (SF = 1) (Chó ý: C¸c lÖnh nh¶y trªn kh«ng t¸c ®éng ®Õn c¸c cê) C¸c lÖnh lÆp + LOOP NHAN (Jump to Specified Label if CX0 after autodecrement) LÆp l¹i ®o¹n ch−¬ng tr×nh do NHAN chØ ra cho ®Õn khi CX=0. LÖnh nµy dïng ®Ó thùc hiÖn lÆp l¹i ®o¹n ch−¬ng tr×nh trong kho¶ng tõ NHAN ®Õn hÕt lÖnh LOOP NHAN cho ®Õn khi sè lÇn lÆp CX=0. Sè lÇn lÆp CX ph¶i ®−îc n¹p s½n tõ tr−íc. Sau mçi lÇn thùc hiÖn lÖnh LOOP NHAN th× CX tù ®éng gi¶m 1 (CX CX-1). LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + LOOPE/LOOPZ NHAN (Loop while CX0 and ZF=1) LÖnh thùc hiÖn lÆp ®o¹n ch−¬ng tr×nh do NHAN chØ ra cho ®Õn khi CX=0 hoÆc ZF=0. Sè lÇn lÆp CX ph¶i ®−îc n¹p tõ tr−íc. Sau mçi lÇn lÆp th× CX tù ®éng gi¶m 1 (CX CX-1). LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + LOOPNE/LOOPNZ NHAN (Loop while CX0 and ZF=0) LÖnh thùc hiÖn lÆp ®o¹n ch−¬ng tr×nh do NHAN chØ ra cho ®Õn khi CX=0 hoÆc ZF=1. Sè lÇn lÆp CX ph¶i ®−îc n¹p tõ tr−íc. Sau mçi lÇn lÆp th× CX tù ®éng gi¶m 1 (CX CX-1). LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + REP (Repeat string instruction until CX=0) Thùc hiÖn lÆp l¹i lÖnh ®øng sau ®ã cho ®Õn khi CX=0. §©y lµ –tiÕp ®Çu ng÷– dïng ®Ó viÕt tr−íc c¸c lÖnh thao t¸c víi chuçi mµ ta muèn lÆp l¹i mét sè lÇn. Sè lÇn lÆp CX ph¶i ®−îc n¹p tõ tr−íc. Sau mçi lÇn lÆp th× CX tù ®éng gi¶m 1 (CX CX-1). + REPE/REPZ (Repeat string instruction until CX=0 or ZF=0) LÆp l¹i lÖnh viÕt sau ®ã cho ®Õn khi CX=0 hoÆc ZF=0 + REPNE/REPNZ (Repeat string instruction until CX=0 or ZF=1) LÆp l¹i lÖnh viÕt sau ®ã cho ®Õn khi CX=0 hoÆc ZF=1 f. Nhãm c¸c lÖnh ®Æc biÖt + CALL TEN_ctc LÖnh gäi ch−¬ng tr×nh con cã tªn lµ TEN_ctc trong cïng ®o¹n m· víi ch−¬ng tr×nh chÝnh. Ch−¬ng tr×nh nµy ph¶i n»m trong giíi h¹n dÞch chuyÓn – 32Kbyte..32Kbyte-1 so víi lÖnh tiÕp theo ngay sau lÖnh CALL. Sau khi cÊt IP vµo Stack, IP IP+DÞch chuyÓn. NÕu ch−¬ng tr×nh con n»m ë ®o¹n m· kh¸c th× trong ch−¬ng tr×nh hîp ng÷ TEN_ctc ph¶i ®−îc khai b¸o lµ mét ch−¬ng tr×nh con ë xa. TEN_ctc Proc Far + HTL (Hall Processing): Dõng Khi gÆp lÖnh nµy c¸c ho¹t ®éng cña 8088 bÞ t¹m dõng (b−íc vµo tr¹ng th¸i dõng) cho ®Õn khi cã t¸c ®éng vµo ch©n INTR, NMI hoÆc Reset cña nã. + INT N (Interrupt Program Execution): Ng¾t, gi¸n ®o¹n ch−¬ng tr×nh ®ang ch¹y. (N=00h..FFh, gäi lµ sè hiÖu ng¾t) Khi gÆp lÖnh nµy, 8088 thùc hiÖn c¸c thao t¸c sau: o SP SP-2, {SP} FR o IF 0 (cÊm ng¾t), TF 0 (ch¹y suèt) o SP SP-2, {SP} CS 26 NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh
  17. http://www.ebook.edu.vn Tr−êng ®¹i häc kü thuËt C«ng NghiÖp o SP SP-2, {SP} IP o IP {N*4}, CS {N*4+2} VÝ dô: Víi N=5 th× CS {0016h} IP {0014h} + INTO (Interrupt on Overflow): Ng¾t nÕu cã trµn. NÕu OF=1 th× lÖnh ng¾t c«ng viÖc ®ang lµm cña bé vi xö lý vµ thùc hiÖn lÖnh ng¾t INT 4. + IRET(Interrupt Return) Trë vÒ ch−¬ng tr×nh chÝnh (CTC) tõ ch−¬ng tr×nh con phôc vô ng¾t (ISR – Interrup Service Routin). T¹i cuèi ISR ph¶i cã lÖnh IRET ®Ó bé vi xö lý tù ®éng lÊy l¹i ®Þa chØ trë vÒ CTC vµ lÊy l¹i thanh ghi cê. + RET(Return from Procedure to Calling Program): Trë vÒ CTC tõ ctc ViÕt lÖnh: RET hoÆc RET n (n: nguyªn, d−¬ng) LÖnh RET ®−îc ®Æt t¹i cuèi ch−¬ng tr×nh con ®Ó bé vi xö lý biÕt tù ®éng lÊy l¹i ®Þa chØ trë vÒ ch−¬ng tr×nh chÝnh. NÕu dïng lÖnh RET n th× sau khi lÊy l¹i ®Þa chØ trë vÒ (chØ cã IP hoÆc cã c¶ IP vµ CS) th× SP SP+n (dïng ®Ó nh¶y qua, kh«ng muèn lÊy l¹i c¸c th«ng sè kh¸c cña ch−¬ng tr×nh cßn l¹i trong stack). LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê. + WAIT (Wait for TEST or INTR signal): Chê tÝn hiÖu tõ ch©n TEST hoÆc ch©n INTR LÖnh ®−a bé vi xö lý vµo tr¹ng th¸i nghØ cho ®Õn khi cã tÝn hiÖu møc thÊp t¸c ®éng vµo ch©n TEST hoÆc tÝn hiÖu møc cao t¸c ®éng vµo ch©n INTR. NÕu cã yªu cÇu ng¾t vµ yªu cÇu ng¾t nµy ®−îc chÊp nhËn khi 8088 ®ang ë tr¹ng th¸i nghØ th× sau khi thùc hiÖn xong ISR t−¬ng øng, 8088 l¹i trë l¹i tr¹ng th¸i nghØ. + NOP (No Operation): CPU kh«ng lµm g× c¶ LÖnh nµy kh«ng lµm g×, nã chØ t¨ng gi¸ trÞ cña thanh ghi IP vµ tiªu tèn 3 chu kú ®ång hå (xung clock). LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê øng dông: Th−êng ®−îc tÝnh thêi gian trong c¸c vßng trÔ chÝnh x¸c. NguyÔn TiÕn Duy – Trung t©m Kü thuËt m¸y tÝnh – Bé m«n Kü thuËt m¸y tÝnh 27
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2