184
1 Ng« Diªn TËp (Chñ biªn) Ph¹m Xu©n Kh¸nh - Vò Trung Kiªn KiÒu Xu©n Thùc Gi¸o tr×nh Gi¸o tr×nh Gi¸o tr×nh Gi¸o tr×nh Vi xö lý cÊu tróc m¸y tÝnh (Dïng cho sinh viªn Cao ®¼ng kü thuËt) Nhμ xuÊt b¶n gi¸o dôc

vµ cÊu tróc m¸y tÝnh€¦ ·

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: vµ cÊu tróc m¸y tÝnh€¦ ·

1

Ng« Diªn TËp (Chñ biªn)

Ph¹m Xu©n Kh¸nh − Vò Trung Kiªn

KiÒu Xu©n Thùc

Gi¸o tr×nhGi¸o tr×nhGi¸o tr×nhGi¸o tr×nh

Vi xö lý cÊu tróc m¸y tÝnh (Dïng cho sinh viªn Cao ®¼ng kü thuËt)

Nhµ xuÊt b¶n gi¸o dôc

Page 2: vµ cÊu tróc m¸y tÝnh€¦ ·

2

B¶n quyÒn thuéc HEVOBCO – Nhµ xuÊt b¶n Gi¸o dôc

192 – 2007/CXB/3 – 411/GD M· sè: 7B678M7 – DAI

Page 3: vµ cÊu tróc m¸y tÝnh€¦ ·

3

Lêi nãi ®ÇuLêi nãi ®ÇuLêi nãi ®ÇuLêi nãi ®Çu

Ngµy nay, nhu cÇu häc tËp vµ nghiªn cøu øng dông c«ng nghÖ Vi xö lý ngµy cµng t¨ng tr−ëng m¹nh mÏ. C¸c c«ng tr×nh nghiªn cøu vµ øng dông c«ng nghÖ Vi xö lý ®Òu rÊt phong phó vµ ®a d¹ng. V× vËy, néi dung cña gi¸o tr×nh nµy còng ®−îc bæ sung vµ cËp nhËt nh÷ng kiÕn thøc míi cña c«ng nghÖ Vi xö lý cho phï hîp víi nhu cÇu cña ng−êi häc.

Gi¸o tr×nh dïng cho sinh viªn chuyªn ngµnh §iÖn tö viÔn th«ng vµ Tù ®éng ho¸. Néi dung cña cuèn s¸ch ®Ò cËp ®Õn c¸c kh¸i niÖm c¬ b¶n vÒ vi xö lý. Mét sè kh¸i niÖm míi, quan träng ®· ®−îc ph¸t triÓn, nh−ng c¸c kh¸i niÖm c¬ b¶n, ®¹i c−¬ng hÇu nh− vÉn ®−îc gi÷ nguyªn vµ ®−îc tr×nh bµy mét c¸ch tinh tÕ h¬n, c« ®äng h¬n ®Ó néi dung trë nªn dÔ hiÓu, dÔ tiÕp thu, cã tÝnh s− ph¹m vµ nhÊn m¹nh nh÷ng kh¸i niÖm quan träng. Ngoµi ra, gi¸o tr×nh cßn cung cÊp mét l−îng vÝ dô, bµi tËp ®¸ng kÓ, trî gióp sinh viªn trong qu¸ tr×nh «n tËp tù kiÓm tra kiÕn thøc. §iÒu nµy lµ rÊt cÇn thiÕt v× chóng ®ãng vai trß quan träng trong viÖc minh ho¹, gi¶i thÝch c¸c kh¸i niÖm c¬ së. §Ó n¾m ®−îc néi dung cuèn s¸ch còng nh− gi¶i ®−îc c¸c bµi tËp cuèi ch−¬ng, ®éc gi¶ cÇn n¾m ®−îc c¸c kiÕn thøc c¬ b¶n vÒ to¸n cao cÊp

Do thêi gian biªn so¹n ng¾n vµ thêi l−îng cã h¹n nªn mÆc dï cã nhiÒu cè g¾ng, cuèn Gi¸o tr×nh Linh kiÖn ®iÖn tö ch¾c ch¾n cßn nhiÒu vÊn ®Ò cÇn bæ sung, hoµn thiÖn. Mong b¹n ®äc gãp ý x©y dùng, mäi ý kiÕn xin göi vÒ ®Þa chØ: C«ng ty Cæ phÇn S¸ch §¹i häc – D¹y nghÒ, 25 Hµn Thuyªn, Hµ Néi.

C¸c t¸c gi¶

Page 4: vµ cÊu tróc m¸y tÝnh€¦ ·

4

Ch−¬ng 1. Ch−¬ng 1. Ch−¬ng 1. Ch−¬ng 1. Tæng quan vÒ vi xö lý vµ m¸y tÝnh

1.1. C¸c hÖ ®Õm vµ viÖc m· ho¸ th«ng tin

1.1.1. C¸c hÖ ®Õm

1.1.1.1. HÖ thËp ph©n

Hµng ngµy, chóng ta th−êng dïng hÖ thËp ph©n (hÖ ®Õm c¬ sè m−êi) ®Ó biÓu diÔn c¸c gi¸ trÞ sè. Trong hÖ nµy chóng ta dïng c¸c sè trong ph¹m vi tõ 0 ®Õn 9 ®Ó biÓu diÔn c¸c gi¸ trÞ. HÖ thËp ph©n lµ mét hÖ ®Õm phô thuéc vÞ trÝ, cã nghÜa lµ mçi ch÷ sè g¾n liÒn víi mét luü thõa 10 víi sè mò phô thuéc vµo vÞ trÝ cña con sè ®ã trong sè ®−îc biÓu diÔn. VÝ dô sè 1234 sÏ b»ng 1 ngh×n, 2 tr¨m, 3 chôc vµ 4 ®¬n vÞ:

1234 = 1.103 + 2.102 + 3.101 + 4.100

Nh−ng trong m¸y tÝnh c¸c vi m¹ch chØ cã thÓ xö lý th«ng tin d−íi d¹ng m· nhÞ ph©n nªn chóng ta cÇn ph¶i xem xÐt c¸ch biÓu diÔn c¸c sè d−íi d¹ng m· nhÞ ph©n nh− thÕ nµo.

1.1.1.2. HÖ nhÞ ph©n

Trong hÖ nhÞ ph©n (hÖ ®Õm c¬ sè hai), c¬ sè ®Õm lµ 2 nªn chØ sö dông 2 sè lµ 0 vµ 1 ®Ó biÓu diÔn c¸c gi¸ trÞ sè.

VÝ dô, chuçi sè nhÞ ph©n 101011 dïng ®Ó biÓu diÔn sè:

101011 = 1.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20 = 43 trong hÖ thËp ph©n.

B¶ng 1.1 chØ ra t−¬ng quan gi÷a sè thËp ph©n vµ sè nhÞ ph©n:

B¶ng 1.1. T−¬ng quan gi÷a sè thËp ph©n vµ sè nhÞ ph©n

HÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©n HÖ nhÞ ph©nHÖ nhÞ ph©nHÖ nhÞ ph©nHÖ nhÞ ph©n HÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©n HÖ nhÞ ph©nHÖ nhÞ ph©nHÖ nhÞ ph©nHÖ nhÞ ph©n

0 0000 5 0101

1 0001 6 0110

2 0010 7 0111

3 0011 8 1000

4 0100 9 1001

Page 5: vµ cÊu tróc m¸y tÝnh€¦ ·

5

Mçi sè 0 vµ 1 ®−îc gäi lµ mét bit (viÕt t¾t cña binary digit – sè nhÞ ph©n); mét sè ë hÖ nhÞ ph©n gåm c¸c bit ®−îc kÕt thóc bëi ch÷ B ®Ó ph©n biÖt víi c¸c hÖ kh¸c. Mét côm 4 bit gäi lµ mét nibble, mét côm 8 bit gäi lµ mét byte, côm 16 bit gäi lµ mét word, côm 32 bit gäi lµ mét double word…

Bit ®Çu tiªn bªn tr¸i ®−îc gäi lµ bit cã ý nghÜa lín nhÊt (MSB: most significant bit), cßn bit cuèi cïng ë bªn ph¶i ®−îc gäi lµ bit cã ý nghÜa nhá nhÊt (LSB: least significant bit).

1.1.1.3. HÖ thËp lôc ph©n

Ta thÊy r»ng mét sè biÓu diÔn ë hÖ nhÞ ph©n th× rÊt dµi vµ khã nhí nªn trong thùc tÕ ng−êi ta th−êng sö dông hÖ thËp lôc ph©n. HÖ thËp lôc ph©n lµ hÖ ®Õm c¬ sè 16 nªn ng−êi ta sö dông c¸c sè tõ 0 ®Õn 9 vµ c¸c ch÷ c¸i tõ A ®Õn F ®Ó biÓu diÔn c¸c sè. B¶ng sau chØ ra t−¬ng quan gi÷a sè hÖ thËp ph©n vµ hÖ thËp lôc ph©n:

B¶ng 1.2. T−¬ng quan gi÷a hÖ thËp ph©n vµ hÖ thËp lôc ph©n

HÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©n HÖ thËp lôc ph©nHÖ thËp lôc ph©nHÖ thËp lôc ph©nHÖ thËp lôc ph©n HÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©n HÖ thËp lôc ph©nHÖ thËp lôc ph©nHÖ thËp lôc ph©nHÖ thËp lôc ph©n

0 0 9 9

1 1 10 A

2 2 11 B

3 3 12 C

4 4 13 D

5 5 14 E

6 6 15 F

7 7 16 10

8 8 17 11

1.1.2. ChuyÓn ®æi gi÷a c¸c hÖ ®Õm

V× con ng−êi quen sö dông c¸c sè ë hÖ thËp ph©n, trong khi ®ã c¸c bé vi xö lý chØ thao t¸c víi c¸c sè ë hÖ nhÞ ph©n nªn ®Ó ®¶m b¶o viÖc giao tiÕp gi÷a ng−êi vµ m¸y th× ph¶i cã phÐp chuyÓn ®æi gi÷a hai hÖ nµy.

* ChuyÓn tõ hÖ nhÞ ph©n sang hÖ thËp ph©n

§Ó ®æi mét sè tõ hÖ nhÞ ph©n sang hÖ thËp ph©n ta ¸p dông c«ng thøc sau:

(bnbn−1….b1b0)B = bn × 2n + bn−1 × 2n−1 + … + b1 × 21 + b0 × 20

Page 6: vµ cÊu tróc m¸y tÝnh€¦ ·

6

VÝ dô:

100011B = 1 × 25 + 0 × 24 + 0 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = 35

* ChuyÓn tõ hÖ thËp ph©n sang hÖ nhÞ ph©n

§Ó chuyÓn tõ hÖ thËp ph©n sang hÖ nhÞ ph©n ta sö dông ph−¬ng ph¸p ®¬n gi¶n sau: LÊy sè cÇn chuyÓn chia cho 2 vµ ghi nhí phÇn d−, tiÕp theo lÊy th−¬ng cña phÐp chia tr−íc ®ã chia cho 2 vµ ghi nhí phÇn d−... cø tiÕp tôc cho ®Õn khi th−¬ng b»ng 0. KÕt qu¶ cña phÐp chuyÓn ®æi chÝnh lµ d·y c¸c sè d− lÊy theo thø tù ®¶o ng−îc.

VÝ dô: §æi sè 25 sang hÖ nhÞ ph©n.

25 1 25 chia 2 ®−îc 12 d− 1

12 0 12 chia 2 ®−îc 6 d− 0

6 0 6 chia 2 ®−îc 3 d− 0

3 1 3 chia 2 ®−îc 1 d− 1

1 1 1 chia 2 ®−îc 0 d− 1

0

VËy kÕt qu¶ lµ 11001.

VÝ dô: §æi sè 42 sang hÖ nhÞ ph©n.

42 0 42 chia 2 ®−îc 21 d− 0

21 1 21 chia 2 ®−îc 10 d− 1

10 0 10 chia 2 ®−îc 5 d− 0

5 1 5 chia 2 ®−îc 2 d− 1

2 0 2 chia 2 ®−îc 1 d− 0

1 1 1 chia 2 ®−îc 0 d− 1

0

VËy kÕt qu¶ lµ 101010.

1.1.3. C¸c phÐp to¸n sè häc víi sè hÖ nhÞ ph©n

* PhÐp céng

PhÐp céng víi c¸c sè hÖ nhÞ ph©n ®−îc thùc hiÖn t−¬ng tù nh− víi c¸c sè hÖ thËp ph©n theo quy t¾c sau:

0 + 0 = 0

Page 7: vµ cÊu tróc m¸y tÝnh€¦ ·

7

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0 nhí 1

VÝ dô:

0010 100011

+ 1011 + 011111

= 1101 = 1000010

* PhÐp trõ

PhÐp trõ víi c¸c sè hÖ nhÞ ph©n ®−îc thùc hiÖn t−¬ng tù nh− víi c¸c sè hÖ thËp ph©n.

VÝ dô:

1111 1000010

− 1011 − 01010

= 0100 = 111000

Trong m¸y tÝnh ng−êi ta thùc hiÖn phÐp trõ b»ng phÐp céng víi sè bï hai.

* PhÐp nh©n

PhÐp nh©n hai sè hÖ nhÞ ph©n ®−îc thùc hiÖn t−¬ng tù nh− nh©n hai sè hÖ thËp ph©n. Quy t¾c thùc hiÖn nh− sau:

0 × 0 = 0

0 × 1 = 0

1 × 0 = 0

1 × 1 = 1

VÝ dô:

1001

× 1101

1001

+ 0000

1001

1001

= 1110101

Page 8: vµ cÊu tróc m¸y tÝnh€¦ ·

8

1.1.4. C¸c m· th−êng dïng trong m¸y tÝnh

* M· BCD

M· BCD th−êng ®−îc sö dông ®Ó m· ho¸ c¸c ch÷ sè tõ 0 ®Õn 9 trong vi xö lý, PLC…

B¶ng 1.3. M! BCD cña c¸c ch÷ sè tõ 0 ®Õn 9

HÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©nHÖ thËp ph©n M· BCDM· BCDM· BCDM· BCD

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

VÝ dô: m· BCD cña 5 lµ 0101, cña 9 lµ 1001.

Trong khi lµm to¸n víi c¸c sè BCD ta th−êng kÕt hîp hai sè BCD t¹o thµnh mét byte, d¹ng biÓu diÔn nµy gäi lµ d¹ng BCD chuÈn hay BCD ®ãng gãi (packed BCD). VÝ dô, m· BCD ®ãng gãi (BCD chuÈn) cña 59 lµ 0101 1001B, cña 62 lµ 0110 0010B.

Sè BCD kh«ng gãi lµ sè dµi mét byte trong ®ã bèn bit cao b»ng 0 cßn bèn bit thÊp lµ sè BCD chuÈn m· ho¸ sè cÇn biÓu diÔn.

VÝ dô, m· BCD kh«ng gãi cña 5 lµ 0000 0101B, cña 4 lµ 0000 0100B.

* M· ASCII

M· ASCII (American Standard Code for Internationnal Interchange – Bé m· chuÈn cña Mü dïng cho trao ®æi th«ng tin) lµ bé m· rÊt th«ng dông trong m¸y tÝnh vµ truyÒn th«ng.

Trong b¶ng m· ASCII tiªu chuÈn ng−êi ta sö dông 7 bit ®Ó m· ho¸ c¸c ký tù th«ng dông, nh− vËy b¶ng nµy sÏ cã 128 ký tù øng víi m· tõ 0 ®Õn 127.

Page 9: vµ cÊu tróc m¸y tÝnh€¦ ·

9

Trong b¶ng m· ASCII më réng, ng−êi ta bæ sung thªm 128 ký tù ®Æc biÖt víi m· tõ 128 ®Õn 255.

VÝ dô m· ASCII cña ‘A’ lµ 65 (01000001), cña ‘a’ lµ 97 (01100001).

1.2. LÞch sö ph¸t triÓn cña m¸y tÝnh vµ bé vi xö lý

* ThÕ hÖ m¸y tÝnh c¬ khÝ

ý t−ëng vÒ mét hÖ thèng tÝnh to¸n ®· cã tõ rÊt l©u, kho¶ng 500 n¨m tr−íc C«ng nguyªn, ng−êi Babylon ®· chÕ t¹o ®−îc m¸y tÝnh ®Çu tiªn cã tªn lµ Abacus. N¨m 1643, Blaise Pascal chÕ t¹o thµnh c«ng mét m¸y tÝnh t¹o bëi c¸c b¸nh r¨ng, trong ®ã sè r¨ng cña b¸nh nä gÊp 10 lÇn sè r¨ng cña b¸nh kia, nguyªn lý nµy sau ®−îc sö dông ®Ó chÕ t¹o c¸c ®ång hå ®o qu·ng ®−êng cña motor, ®ång hå ®o n−íc…

* ThÕ hÖ m¸y tÝnh c¬ ®iÖn − ®iÖn tö

N¨m 1889, Herman Holerith ph¸t minh ra card ®ôc lç dïng ®Ó l−u tr÷ d÷ liÖu, sau ®ã «ng chÕ t¹o thµnh c«ng m¸y tÝnh c¬ khÝ ®−îc ®iÒu khiÓn bëi mét motor ®iÖn, nã cã thÓ thùc hiÖn ®−îc c¸c phÐp ®Õm, s¾p xÕp vµ so s¸nh th«ng tin l−u trong card ®ôc lç.

N¨m 1942, nhµ ph¸t minh ng−êi §øc Konrad Zure chÕ t¹o ra m¸y tÝnh ®iÖn tö Z3 dïng cho kh«ng qu©n §øc. N¨m 1943, Alan Turing ph¸t minh ra hÖ thèng m¸y tÝnh ®iÖn tö cã tªn lµ Collossus ®−îc thiÕt kÕ tõ c¸c ®Ìn ®iÖn tö ch©n kh«ng, ®©y lµ mét m¸y tÝnh chuyªn dông thùc hiÖn theo mét ch−¬ng tr×nh cè ®Þnh ®Ó gi¶i m· c¸c bÝ mËt qu©n sù cña §øc quèc x·.

M¸y tÝnh ®iÖn tö ®a dông ®Çu tiªn – hÖ m¸y tÝnh kh¶ tr×nh − ®−îc ph¸t triÓn bëi §¹i häc Pennsylvania cã tªn lµ ENIAC (Electronics Numerical Integrator And Calculator). §©y lµ mét m¸y tÝnh lín chøa h¬n 17000 ®Ìn ®iÖn tö, nÆng kho¶ng 30 tÊn vµ cã thÓ thùc hiÖn ®−îc 100000 thao t¸c trong mét gi©y. ENIAC ®−îc lËp tr×nh b»ng c¸ch nèi l¹i m¹ch ®iÖn, c«ng viÖc nµy ®−îc thùc hiÖn bëi c¸c c«ng nh©n vµ mÊt rÊt nhiÒu thêi gian. Ngoµi ra, viÖc b¶o d−ìng còng ph¶i ®−îc thùc hiÖn th−êng xuyªn v× tuæi thä cña c¸c ®Ìn ®iÖn tö thÊp.

* ThÕ hÖ m¸y tÝnh dïng vi xö lý

N¨m 1948, transistor ®−îc ph¸t minh, ®Õn n¨m 1958, Jack Kilby ph¸t minh ra m¹ch tæ hîp − ®©y lµ c¬ së ®Ó ph¸t triÓn c¸c vi m¹ch sè. N¨m 1971, Marcian T.Hoff mét kü s− cña Intel ®· thiÕt kÕ ra bé vi xö lý 4004 – më ®Çu cho thêi kú sö dông vi xö lý trong m¸y tÝnh. 4004 lµ bé vi xö lý 4 bit, bªn trong nã gåm 2300 transistor, cã thÓ qu¶n lý ®−îc bé nhí cã 4096 (≈4K) « nhí, mçi « gåm 4 bit, tËp lÖnh cña 4004 gåm 45 lÖnh kh¸c nhau, nã ®−îc

Page 10: vµ cÊu tróc m¸y tÝnh€¦ ·

10

chÕ t¹o theo c«ng nghÖ MOSFET kªnh P cã tèc ®é xö lý lµ 50KIPS (Kilo Instruction Per Second – ngh×n lÖnh/gi©y). 4004 ®−îc dïng ®Ó thiÕt kÕ c¸c hÖ thèng video game, hÖ thèng ®iÒu khiÓn nhá dïng vi xö lý. Trªn c¬ së 4004, h·ng Intel s¶n xuÊt bé vi xö lý 4040, ®©y còng lµ bé vi xö lý 4 bit nh−ng cã tèc ®é cao h¬n 4004.

Sau n¨m 1971, Intel s¶n xuÊt bé vi xö lý 8 bit tªn lµ 8008, nã cã thÓ qu¶n lý ®−îc 16KB bé nhí, tËp lÖnh gåm 48 lÖnh kh¸c nhau. 8008 ®−îc Computer Terminal Corporation sö dông trong c¸c thiÕt bÞ ®Çu cuèi Datapoint 2200. N¨m 1973, h·ng Intel giíi thiÖu bé vi xö lý 8 bit hiÖn ®¹i ®Çu tiªn cã tªn lµ 8080, tèc ®é xö lý lµ 500KIPS, qu¶n lý ®−îc 64KB bé nhí. N¨m 1977, Intel ph¸t triÓn bé vi xö lý 8085 (t−¬ng thÝch víi Z80 cña h·ng Zilog) lµ bé vi xö lý 8 bit ®a dông nhanh h¬n 8080.

N¨m 1978, Intel giíi thiÖu bé vi xö lý 16 bit tªn lµ 8088 cã tèc ®é xö lý lµ 2,5MIPS (Millions Instruction Per Second – triÖu lÖnh/gi©y) vµ cã thÓ qu¶n lý ®−îc 1MB bé nhí. Bé vi xö lý 80286 còng lµ bé vi xö lý 16 bit nh−ng nã cã thÓ qu¶n lý ®−îc tíi 16MB bé nhí.

C¸c øng dông ®ßi hái tèc ®é ngµy cµng cao, dung l−îng bé nhí vµ ®é réng bus d÷ liÖu (sè ch©n cña vi xö lý ®Ó truyÒn/nhËn d÷ liÖu) ngµy cµng lín. N¨m 1986, Intel giíi thiÖu bé vi xö lý 32 bit cã tªn lµ 80386 cã thÓ qu¶n lý ®−îc 4GB bé nhí. N¨m 1989, Intel giíi thiÖu bé vi xö lý 80486 cã thÓ thùc hiÖn ®−îc 50MIPS. N¨m 1993, Intel giíi thiÖu bé vi xö lý 80585 (cßn gäi lµ Pentium hay P5) cã thÓ thùc hiÖn ®−îc 110MIPS vµ cã thÓ thùc hiÖn ®−îc ®ång thêi mét lóc hai lÖnh (hai lÖnh ®éc lËp nhau) v× bªn trong cã tíi hai bé xö lý sè nguyªn (c«ng nghÖ superscalar). §Çu n¨m 2003, Intel ®· xuÊt x−ëng c¸c bé vi xö lý Pentium IV cã tèc ®é 3,06MHz víi kiÕn tróc ®a luång (HT − hyper threading − ®a luång) ®Ó n©ng cao hiÖu suÊt sö dông c¸c khèi chøc n¨ng bªn trong vi xö lý, víi c«ng nghÖ ®a luång, mét bé vi xö lý vËt lý t−¬ng ®−¬ng nh− hai bé vi xö lý logic. ViÖc t¨ng tÇn sè lµm viÖc cña c¸c bé vi xö lý ®Ó t¨ng tèc ®é lµm viÖc cña m¸y tÝnh còng ®· ®Õn møc tíi h¹n nªn c¸c h·ng s¶n xuÊt ®· chuyÓn tõ h−íng t¨ng tÇn sè lµm viÖc sang thiÕt kÕ c¸c bé vi xö lý nhiÒu lâi, mçi bé vi xö lý lóc nµy thùc chÊt lµ nhiÒu bé vi xö lý (multi core – nhiÒu lâi) ®ãng vá chung trong mét vi m¹ch. §Çu n¨m 2006, Intel ®· xuÊt x−ëng bé vi xö lý hai nh©n, gäi t¾t lµ duo (viÕt t¾t cña dual core – hai lâi), h·ng nµy còng ®ang chuÈn bÞ cho ra m¾t c¸c bé vi xö lý bèn nh©n (quad core), t¸m nh©n...

Page 11: vµ cÊu tróc m¸y tÝnh€¦ ·

11

1.3. CÊu tróc cña m¸y tÝnh dïng vi xö lý (hÖ vi xö lý)

Vi xö lý lµ mét thµnh phÇn c¬ b¶n kh«ng thÓ thiÕu cña m¸y tÝnh, ngoµi ra ®Ó t¹o ra mét hÖ hoµn chØnh cÇn ph¶i cã c¸c bé phËn kh¸c nh− bé nhí, c¸c thiÕt bÞ vµo/ra nh− bµn phÝm, mµn h×nh…

H×nh 1.1 giíi thiÖu s¬ ®å khèi tæng qu¸t cña mét m¸y tÝnh sö dông vi xö lý:

H×nh 1.1. S¬ ®å khèi cÊu tróc cña m¸y tÝnh

Trong s¬ ®å nµy ta thÊy mét m¸y tÝnh (hay hÖ vi xö lý) bao gåm c¸c khèi chøc n¨ng sau:

+ Bé vi xö lý (CPU).

+ Bé nhí b¸n dÉn (ROM, RAM).

+ M¹ch ghÐp nèi vµo/ra.

+ Bus hÖ thèng ®Ó truyÒn th«ng tin gi÷a c¸c khèi, bus hÖ thèng gåm bus ®iÒu khiÓn, bus ®Þa chØ vµ bus d÷ liÖu.

Sau ®©y chóng ta sÏ t×m hiÓu nguyªn lý lµm viÖc cña m¸y tÝnh b»ng c¸ch xem xÐt chøc n¨ng cña c¸c khèi ®ã.

1.3.1. Bé vi xö lý

Bé vi xö lý (microprocessor) hay cßn ®−îc gäi lµ CPU (Central Processing Unit − ®¬n vÞ xö lý trung t©m) ®ãng vai trß lµ bé n·o cña m¸y tÝnh. §©y lµ mét vi m¹ch sè víi møc ®é tÝch hîp cùc lín (VLSI) bªn trong nã bao gåm nhiÒu khèi chøc n¨ng kh¸c nhau nh− ®¬n vÞ sè nguyªn ®Ó thao t¸c

Bus d÷ liÖu

Bus ®Þa chØ

Bus ®iÒu khiÓn

ThiÕt bÞ vµo

ThiÕt bÞ ra

Bé nhí (Rom, ram)

Vi xö lý (CPU)

M¹ch GhÐp nèi

Vµo/ra

Page 12: vµ cÊu tróc m¸y tÝnh€¦ ·

12

tÝnh to¸n víi c¸c sè nguyªn, ®¬n vÞ xö lý dÊu ph¶y ®éng ®Ó thùc hiÖn c¸c phÐp tÝnh víi sè thùc… Khi ho¹t ®éng, nã ®äc m· lÖnh (m· lÖnh ®−îc ghi d−íi d¹ng chuçi c¸c bit 0, 1) tõ bé nhí, ®−a vµo trong vi xö lý ®Ó gi¶i m· thµnh c¸c vi lÖnh, ®©y lµ nh÷ng xung ®iÒu khiÓn ®Ó ®iÒu khiÓn ho¹t ®éng cña c¸c ®¬n vÞ chøc n¨ng bªn trong vi xö lý.

C¸c th«ng sè quan träng cña mét bé vi xö lý gåm:

+ TÇn sè lµm viÖc: lµ tÇn sè xung nhÞp (clock) cung cÊp cho vi xö lý, tÇn sè nµy quyÕt ®Þnh ®Õn tèc ®é lµm viÖc cña vi xö lý.

+ §é réng bus d÷ liÖu m: lµ sè ®−êng d©y dïng ®Ó truyÒn d÷ liÖu ký hiÖu tõ D0 ®Õn Dm−1. C¸c gi¸ trÞ cña m th−êng lµ 4, 8, 16, 32 vµ 64.

+ §é réng bus ®Þa chØ n: quyÕt ®Þnh ®Õn dung l−îng bé nhí cùc ®¹i mµ vi xö lý cã thÓ qu¶n lý ®−îc. Mét bé vi xö lý cã n ®−êng ®Þa chØ tõ A0 ®Õn An−1 cã thÓ qu¶n lý ®−îc 2n « nhí (mçi « nhí th−êng lµ mét byte). C¸c gi¸ trÞ cña n th−êng lµ 16, 20 vµ 32.

1.3.2. Bé nhí

Bé nhí (hay cßn gäi lµ bé nhí trong, bé nhí chÝnh) ®−îc t¹o tõ c¸c vi m¹ch nhí ROM vµ RAM lµ n¬i chøa c¸c ch−¬ng tr×nh cÇn thùc thi.

ROM (Read Only Memory – bé nhí chØ ®äc), néi dung bªn trong cña ROM kh«ng bÞ mÊt khi mÊt nguån nu«i, dïng ®Ó chøa c¸c ch−¬ng tr×nh ®iÒu khiÓn hÖ thèng nh− ch−¬ng tr×nh ®Ó kiÓm tra c¸c thiÕt bÞ mçi khi bËt nguån, ch−¬ng tr×nh khëi ®éng m¸y, c¸c ch−¬ng tr×nh ®iÒu khiÓn trao ®æi tin víi c¸c thiÕt bÞ ngo¹i vi nh− bµn phÝm, mµn h×nh,…

RAM (Random Access Memory – bé nhí truy cËp ngÉu nhiªn) lµ bé nhí cã thÓ ghi/®äc ®−îc, cã nghÜa lµ ta cã thÓ ®äc th«ng tin tõ bé nhí, xo¸ th«ng tin cò trong bé nhí hoÆc ghi th«ng tin míi vµo bé nhí; néi dung th«ng tin ghi trong bé nhí RAM sÏ bÞ mÊt khi mÊt nguån cung cÊp. RAM ®−îc dïng ®Ó l−u tr÷ m· lÖnh, to¸n h¹ng vµ kÕt qu¶ cña ch−¬ng tr×nh khi nã ®ang ®−îc thùc hiÖn. Trong m¸y tÝnh, bé nhí RAM lµ c¸c module d¹ng thanh c¾m trªn b¶ng m¹ch chÝnh cña m¸y, trªn mçi module th−êng g¾n nhiÒu vi m¹ch RAM vµ th−êng cã dung l−îng lµ 1, 2, 4, 8, 16, 32, 64, 128, 256 hoÆc 512MB.

1.3.3. M¹ch ghÐp nèi vµo/ra

M¹ch ghÐp nèi vµo/ra cã nhiÖm vô t¹o ra kh¶ n¨ng giao tiÕp gi÷a hÖ vi xö lý víi thÕ giíi bªn ngoµi. C¸c thiÕt bÞ vµo/ra (hay cßn gäi lµ thiÕt bÞ ngo¹i vi) bao gåm c¸c thiÕt bÞ vµo (bµn phÝm, chuét, m¸y quÐt…), thiÕt bÞ ra (mµn

Page 13: vµ cÊu tróc m¸y tÝnh€¦ ·

13

h×nh, m¸y in, m¸y vÏ…), c¸c thiÕt bÞ l−u tr÷ (cßn gäi lµ bé nhí ngoµi) dïng ®Ó l−u th«ng tin víi khèi l−îng lín nh− æ ®Üa cøng, æ ®Üa CD, æ ®Üa DVD…

M¹ch ghÐp nèi vµo/ra cã thÓ lµ mét vi m¹ch cì nhá nh− 8255 ®Ó ghÐp nèi song song, 8251 ®Ó ghÐp nèi nèi tiÕp… Tuy nhiªn trong c¸c m¸y tÝnh hiÖn nay m¹ch ghÐp nèi vµo/ra lµ nh÷ng vi m¹ch cì lín (VLSI) ®−îc gäi lµ chipset, vÝ dô chipset 848P cña Intel cho phÐp ghÐp nèi gi÷a vi xö lý víi cæng ®å ho¹ tèc ®é cao AGP 8x, víi æ ®Üa cøng kiÓu SATA, víi hÖ thèng ©m thanh 5.1, víi c¸c thiÕt bÞ vµo/ra qua cæng USB 2.0…

1.3.4. Bus hÖ thèng

Bus hÖ thèng lµ tËp hîp tÊt c¶ c¸c ®−êng d©y dïng ®Ó liªn l¹c gi÷a c¸c khèi chøc n¨ng trong hÖ thèng. Dùa vµo chøc n¨ng cña c¸c ®−êng d©y ng−êi ta chia chóng lµm 3 nhãm:

+ Bus ®iÒu khiÓn lµ c¸c ®−êng d©y mang c¸c tÝn hiÖu ®iÒu khiÓn ho¹t ®éng hoÆc ph¶n ¸nh tr¹ng th¸i cña c¸c khèi nh− /RD (read − ®äc bé nhí hoÆc thiÕt bÞ vµo), /WR (write − ghi d÷ liÖu vµo bé nhí hoÆc xuÊt d÷ liÖu ra thiÕt bÞ ra), INT (interrupt – ng¾t vi xö lý ®Ó trao ®æi d÷ liÖu)…

+ Bus d÷ liÖu lµ c¸c ®−êng d©y mang sè liÖu mµ vi xö lý ®ang trao ®æi víi bé nhí hoÆc thiÕt bÞ vµo/ra.

+ Bus ®Þa chØ mang th«ng tin vÒ ®Þa chØ cña « nhí hay mét thiÕt bÞ vµo/ra mµ vi xö lý ®ang trao ®æi tin. Th«ng tin vÒ ®Þa chØ lµ do vi xö lý ph¸t ra ®Ó chän ra mét « nhí hoÆc mét thiÕt bÞ vµo/ra mµ nã cÇn trao ®æi tin.

1.4. Kh¸i niÖm vÒ phÇn cøng, phÇn mÒm

1.4.1. PhÇn cøng

PhÇn cøng (hardware) lµ thuËt ng÷ dïng ®Ó chØ toµn bé nh÷ng thiÕt bÞ c¬ khÝ, ®iÖn tö t¹o nªn m¸y tÝnh nh− c¸c æ ®Üa, mµn h×nh, bµn phÝm...

1.4.2. PhÇn mÒm

PhÇn mÒm (software) lµ thuËt ng÷ dïng ®Ó chØ c¸c ch−¬ng tr×nh m¸y tÝnh, nã ®−îc thùc thi trªn phÇn cøng b»ng c¸ch ®iÒu khiÓn sù ho¹t ®éng cña phÇn cøng. PhÇn mÒm ®−îc chia thµnh c¸c lo¹i sau:

− HÖ ®iÒu hµnh (operating system) nh− DOS, Windows, Linux...

− Tr×nh tiÖn Ých nh− NC, NU, BKAV…

− Ch−¬ng tr×nh øng dông nh− MS Word, MultiSIM, Protel...

Page 14: vµ cÊu tróc m¸y tÝnh€¦ ·

14

− Ng«n ng÷ lËp tr×nh nh− Pascal, C, C++, Java… C¸c ng«n ng÷ lËp tr×nh ®−îc c¸c lËp tr×nh viªn sö dông ®Ó viÕt ra c¸c ch−¬ng tr×nh øng dông, thËm chÝ c¶ hÖ ®iÒu hµnh (ch¼ng h¹n nh− C ®−îc sö dông ®Ó viÕt hÖ ®iÒu hµnh Unix).

Ngoµi ra, ng−êi ta cßn sö dông kh¸i niÖm phÇn dÎo (firmware) hay phÇn sôn ®Ó chØ nh÷ng ch−¬ng tr×nh tån t¹i l©u dµi cïng víi phÇn cøng nh− c¸c ch−¬ng tr×nh l−u trong bé nhí ROM cña m¸y tÝnh, ch−¬ng tr×nh gi¶i nÐn cña ®Çu ®Üa VCD/MP3... H×nh 1.2 sÏ gióp chóng ta ph©n biÖt kh¸i niÖm, chøc n¨ng cña phÇn cøng, phÇn mÒm.

H×nh 1.2. S¬ ®å ph©n cÊp phÇn cøng – phÇn mÒm

Ng−êi sö dông m¸y tÝnh sö dông c¸c ch−¬ng tr×nh øng dông ®Ó t−¬ng t¸c víi m¸y tÝnh. Hä còng cã thÓ trùc tiÕp sö dông c¸c dÞch vô cña hÖ ®iÒu hµnh nh− ®Þnh d¹ng æ ®Üa, t¹o/xo¸ th− môc…

HÖ ®iÒu hµnh cung cÊp cho ch−¬ng tr×nh øng dông c¸c dÞch vô (nh− t¹o/xo¸ th− môc, ®Þnh d¹ng æ ®Üa, xo¸ tËp tin…), c¸c hµm chøc n¨ng nh− c¸c hµm API… C¸c lËp tr×nh viªn khi lËp tr×nh sÏ viÕt c¸c c©u lÖnh gäi c¸c dÞch vô, hµm API… cña hÖ ®iÒu hµnh ®Ó thùc hiÖn c¸c chøc n¨ng mµ ch−¬ng tr×nh øng dông yªu cÇu.

HÖ thèng c¸c ch−¬ng tr×nh vµo/ra c¬ b¶n − BIOS (Basic Input Output System): cung cÊp c¸c hµm cho hÖ ®iÒu hµnh ®Ó thùc hiÖn c¸c chøc n¨ng vµo/ra c¬ b¶n nh− ®äc phÝm Ên cña bµn phÝm, xuÊt d÷ liÖu lªn mµn h×nh, ®äc æ ®Üa tõ… C¸c lËp tr×nh viªn còng cã thÓ sö dông ng«n ng÷ Assembly ®Ó gäi c¸c ch−¬ng tr×nh nµy trong khi viÕt ra c¸c ch−¬ng tr×nh øng dông.

Ch−¬ng tr×nh øng dông

HÖ ®iÒu hµnh

BIOS

PhÇn cøng

Ng−êi sö dông m¸y tÝnh

Page 15: vµ cÊu tróc m¸y tÝnh€¦ ·

15

PhÇn cøng lµ n¬i thùc thi c¸c yªu cÇu cña ng−êi sö dông. Vi xö lý lµ thiÕt bÞ cuèi cïng ph¶i thùc thi c¸c nhiÖm vô mµ ng−êi sö dông ®−a ra th«ng qua viÖc ch¹y c¸c lÖnh trong tËp lÖnh cña nã.

C©u hái vµ bµi tËp ch−¬ng 1 1.1.1.1. Nªu sù kh¸c nhau c¬ b¶n gi÷a ROM vµ RAM.

2.2.2.2. ThÕ nµo lµ m· BCD ®ãng gãi, m· BCD kh«ng ®ãng gãi.

3.3.3.3. T×m quan hÖ gi÷a m· BCD vµ m· ASCII

4.4.4.4. §æi c¸c sè sau ë hÖ thËp ph©n sang hÖ thËp lôc ph©n: 252; 65534; 16632.

5.5.5.5. §æi c¸c sè sau sang hÖ nhÞ ph©n vµ hÖ thËp ph©n: 001FH; 2FE0H; 0FFFFH.

Page 16: vµ cÊu tróc m¸y tÝnh€¦ ·

16

Ch−¬ng 2. Ch−¬ng 2. Ch−¬ng 2. Ch−¬ng 2. Hä vi xö lý 80××××86 cña Intel

2.1. Bé vi xö lý 8086 cña Intel

Bé vi xö lý 8086, ®−îc giíi thiÖu n¨m 1978, lµ bé vi xö lý 16 bit ®Çu tiªn cña Intel, më ®Çu cho hä vi xö lý x86. Bªn trong 8086 gåm 29000 transistor, ®−îc s¶n xuÊt b»ng c«ng nghÖ NMOS hoÆc CMOS víi ba phiªn b¶n:

− 8086 ho¹t ®éng ë tÇn sè 4,77MHz.

− 8086−8 ho¹t ®éng ë tÇn sè 8MHz.

− 8086−10 ho¹t ®éng ë tÇn sè 10MHz.

C¶ ba phiªn b¶n ®Òu ®−îc ®ãng gãi d¹ng DIP 40 ch©n, ®iÖn ¸p nu«i lµ 5V.

Sau ®©y chóng ta sÏ ®i s©u nghiªn cøu cÊu tróc bªn trong vµ ho¹t ®éng cña 8086.

2.1.1. S¬ ®å khèi cña 8086

CÊu tróc bªn trong cña 8086 ®−îc m« t¶ mét c¸ch ®¬n gi¶n th«ng qua s¬ ®å khèi trªn h×nh 2.1.

Cã thÓ coi 8086 gåm hai khèi chÝnh:

2.1.1.1. Khèi thùc hiÖn lÖnh

Khèi thùc hiÖn lÖnh (EU − Execution Unit) lµ n¬i gi¶i m· vµ thi hµnh c¸c lÖnh. EU bao gåm:

− Bé xö lý sè häc vµ logic (ALU − Arithmatic Logical Unit) lµ n¬i thùc hiÖn c¸c lÖnh sè häc vµ lÖnh logic.

− C¸c thanh ghi 16 bit chøa to¸n h¹ng.

− Thanh ghi cê F.

− Khèi ®iÒu khiÓn (CU − Control Unit) cã nhiÖm vô t¹o c¸c tÝn hiÖu ®iÒu khiÓn c¸c bé phËn bªn trong vµ bªn ngoµi CPU. Bªn trong khèi ®iÒu khiÓn nµy cã m¹ch gi¶i m· lÖnh. M· lÖnh ®−îc ®äc vµo tõ bé nhí vµ ®−a ®Õn ®Çu vµo cña bé gi¶i m·, c¸c th«ng tin thu ®−îc tõ ®Çu ra cña m¹ch gi¶i m· sÏ ®−îc ®−a ®Õn m¹ch t¹o xung ®iÒu khiÓn, kÕt qu¶ lµ ta thu ®−îc c¸c d·y xung

Page 17: vµ cÊu tróc m¸y tÝnh€¦ ·

17

kh¸c nhau (tuú theo m· lÖnh) ®Ó ®iÒu khiÓn ho¹t ®éng cña c¸c bé phËn bªn trong vµ bªn ngoµi CPU.

H×nh 2.1. S¬ ®å khèi cña 8086

2.1.1.2. Khèi giao tiÕp bus

Khèi giao tiÕp bus (BIU − Bus Interface Unit) cã nhiÖm vô ®¶m b¶o viÖc trao ®æi th«ng tin gi÷a 8086 víi c¸c linh kiÖn bªn ngoµi (c¸c vi m¹ch nhí, vi m¹ch ghÐp nèi vµo/ra). BIU bao gåm:

− Mét bé céng ®Ó t¹o ®Þa chØ vËt lý 20 bit tõ c¸c thanh ghi 16 bit.

− Bèn thanh ghi ®o¹n 16 bit gåm CS, DS, SS vµ ES ®Ó gióp 8086 truy cËp tíi c¸c ®o¹n trªn bé nhí.

Hµng ®îi lÖnh

Bus

ngoµi

AL AH BL BH CL CH DL

5 4 3 2 1 6

SI DI BP

Khèi ®iÒu khiÓn CU

8 bit

Bus

ALU

Thanh ghi cê F

Bus d÷ liÖu

16 bit

IP ES

SS DS CS SP

DH

Σ

Bus ®Þa chØ

20 bit

Khèi thùc hiÖn lÖnh EU

Khèi giao tiÕp bus BIU

Thanh ghi ®a n¨ng

Thanh ghi con trá & chØ sè

Thanh ghi trung gian

Logic ®iÒu khiÓn bus

Page 18: vµ cÊu tróc m¸y tÝnh€¦ ·

18

− Thanh ghi con trá lÖnh IP: IP ®−îc gäi lµ con trá lÖnh v× nã kÕt hîp víi CS ®Ó t¹o thµnh ®Þa chØ cña lÖnh tiÕp theo mµ 8086 sÏ thi hµnh.

− M¹ch logic ®iÒu khiÓn bus cã nhiÖm vô ®¶m b¶o giao tiÕp gi÷a 8086 víi c¸c thiÕt bÞ bªn ngoµi (th«ng qua bus ngoµi).

− Hµng ®îi lÖnh (hay cßn gäi lµ bé ®Öm lÖnh) cã ®é dµi 6 byte lµ n¬i chøa c¸c m· lÖnh ®äc ®−îc n»m s½n ®Ó chê EU xö lý. §©y lµ mét cÊu tróc míi ®−îc Intel ®−a vµo bé vi xö lý 8086 ®Ó thùc hiÖn kü thuËt xö lý xen kÏ liªn tôc dßng m· lÖnh (kü thuËt pipeline) nh»m c¶i thiÖn tèc ®é xö lý cña CPU.

Th«ng th−êng trong c¸c bé vi xö lý ë c¸c thÕ hÖ tr−íc, ho¹t ®éng cña CPU ®Ó thùc hiÖn mét lÖnh gåm 3 giai ®o¹n:

− §äc m· lÖnh (fetch, viÕt t¾t lµ F).

− Gi¶i m· lÖnh (decode, viÕt t¾t lµ D).

− Thùc hiÖn lÖnh (execute, viÕt t¾t lµ E).

Víi gi¶ thiÕt kh«ng gÆp lÖnh nh¶y hoÆc lÖnh gäi ch−¬ng tr×nh con th× ho¹t ®éng cña CPU diÔn ra tuÇn tù: ®äc m· lÖnh 1, gi¶i m· lÖnh 1, thi hµnh lÖnh 1, ®äc m· lÖnh 2, gi¶i m· lÖnh 2, thi hµnh m· lÖnh 2, ®äc lÖnh m· 3,... Trong mét thêi ®iÓm nhÊt ®Þnh, CPU chØ cã thÓ thùc hiÖn mét trong ba c«ng viÖc nãi trªn vµ v× vËy tuú theo tõng giai ®o¹n sÏ cã nh÷ng bé phËn nhÊt ®Þnh cña CPU ë tr¹ng th¸i nhµn rçi. §Ó kh¾c phôc nh−îc ®iÓm nµy, trong bé vi xö lý 8086, Intel sö dông c¬ chÕ xö lý xen kÏ liªn tôc dßng m· lÖnh. CPU ®−îc chia thµnh hai khèi chøc n¨ng vµ cã sù ph©n chia c«ng viÖc cho tõng khèi. ViÖc ®äc m· lÖnh lµ do khèi BIU ®¶m nhiÖm, viÖc gi¶i m· vµ thi hµnh lÖnh do khèi EU thùc hiÖn. C¸c khèi chøc n¨ng nµy cã kh¶ n¨ng lµm viÖc ®ång thêi vµ c¸c bus sÏ liªn tôc ®−îc sö dông. Trong khi EU lÊy m· lÖnh tõ bé hµng ®îi lÖnh ®Ó gi¶i m· hoÆc thùc hiÖn c¸c thao t¸c néi bé th× BIU vÉn cã thÓ ®äc m· lÖnh cña lÖnh tiÕp theo tõ bé nhí chÝnh råi ®Æt chóng vµo hµng ®îi lÖnh. Hµng ®îi lÖnh nµy lµm viÖc theo kiÓu FIFO (First In First Out, vµo tr−íc − ra tr−íc), nghÜa lµ byte nµo ®−îc cÊt vµo tr−íc sÏ ®−îc lÊy ra xö lý tr−íc. NÕu cã sù vµo/ra liªn tôc cña dßng m· lÖnh trong hµng ®îi lÖnh nµy th× cã nghÜa lµ cã sù phèi hîp ho¹t ®éng hiÖu qu¶ gi÷a hai khèi EU vµ BIU, kÕt qu¶ lµ tèc ®é cña CPU ®−îc c¶i thiÖn.

2.1.2. C¸c thanh ghi cña 8086

Bªn trong bé vi xö lý 8086 cã c¸c thanh ghi 16 bit n»m trong c¶ hai khèi BIU vµ EU. Ngoµi ra, còng cã mét sè thanh ghi 8 bit hoÆc 16 bit t¹i EU. Chóng ta sÏ lÇn l−ît xem xÐt c¸c thanh ghi nãi trªn cïng chøc n¨ng chÝnh cña chóng.

Page 19: vµ cÊu tróc m¸y tÝnh€¦ ·

19

2.1.2.1. C¸c thanh ghi ®a n¨ng

Trong khèi EU cã 4 thanh ghi ®a n¨ng 16 bit lµ AX, BX, CX vµ DX. §iÒu ®Æc biÖt lµ khi cÇn chøa c¸c d÷ liÖu 8 bit th× mçi thanh ghi nµy cã thÓ t¸ch ra thµnh hai thanh ghi 8 bit lµm viÖc ®éc lËp, ®ã lµ c¸c cÆp thanh ghi AH vµ AL, BH vµ BL, CH vµ CL, DH vµ DL (trong ®ã H chØ phÇn cao, L chØ phÇn thÊp). Mçi thanh ghi cã thÓ ®−îc dïng mét c¸ch v¹n n¨ng ®Ó chøa c¸c lo¹i d÷ liÖu kh¸c nhau. Nh−ng còng cã nh÷ng c«ng viÖc ®Æc biÖt nhÊt ®Þnh chØ thao t¸c víi mét vµi thanh ghi nµo ®ã, chÝnh v× vËy c¸c thanh ghi th−êng ®−îc g¸n cho nh÷ng c¸i tªn ®Æc biÖt vµ cã ý nghÜa riªng.

− AX (Accumulator register): thanh ghi chøa, c¸c kÕt qu¶ cña c¸c thao t¸c th−êng ®−îc chøa ë ®©y. NÕu kÕt qu¶ lµ 8 bit th× thanh ghi AL ®−îc sö dông.

− BX (Base register): thanh ghi c¬ së, th−êng chøa ®Þa chØ c¬ së cña mét b¶ng khi dïng lÖnh XLAT.

− CX (Count register): thanh ghi ®Õm, CX th−êng ®−îc dïng ®Ó chøa sè lÇn lÆp trong tr−êng hîp lÖnh LOOP (lÆp), cßn CL th−êng chøa mét sè lÇn dÞch hoÆc quay trong c¸c lÖnh dÞch hoÆc quay thanh ghi.

− DX (Data register): thanh ghi d÷ liÖu, DX cïng AX tham gia vµo c¸c thao t¸c cña phÐp nh©n hoÆc chia c¸c sè 16 bit. DX cßn dïng ®Ó chøa ®Þa chØ cña c¸c cæng trong c¸c lÖnh vµo/ra d÷ liÖu trùc tiÕp.

2.1.2.2. C¸c thanh ghi ®o¹n

Khèi BIU ®−a ra trªn bus ®Þa chØ 20 bit ®Þa chØ, nh− vËy 8086 cã kh¶ n¨ng ph©n biÖt ra ®−îc 220= 1048576 = 1M « nhí, hay 1Mbyte. Trong kh«ng gian 1Mbyte nµy bé nhí cÇn ®−îc chia thµnh c¸c vïng kh¸c nhau dµnh riªng ®Ó:

− Chøa m· ch−¬ng tr×nh.

− Chøa d÷ liÖu vµ kÕt qu¶ trung gian cña ch−¬ng tr×nh.

− T¹o ra mét vïng nhí ®Æc biÖt gäi lµ ng¨n xÕp dïng vµo viÖc qu¶n lý c¸c th«ng sè cña bé vi xö lý.

Trong thùc tÕ, bé vi xö lý 8086 cã c¸c thanh ghi 16 bit liªn quan ®Õn ®Þa chØ ®Çu cña c¸c vïng kÓ trªn vµ chóng ®−îc gäi lµ thanh ghi ®o¹n. §ã lµ thanh ghi ®o¹n m· CS (code segment), thanh ghi ®o¹n d÷ liÖu DS (data segment), thanh ghi ®o¹n ng¨n xÕp SS (stack segment) vµ thanh ghi ®o¹n d÷ liÖu phô ES (extra segment). C¸c thanh ghi ®o¹n 16 bit nµy chØ ra ®Þa chØ ®Çu cña 4 ®o¹n trong bé nhí, dung l−îng lín nhÊt cña mçi ®o¹n nhí nµy lµ 64Kbyte.

Page 20: vµ cÊu tróc m¸y tÝnh€¦ ·

20

Néi dung c¸c thanh ghi ®o¹n sÏ x¸c ®Þnh ®Þa chØ cña « nhí n»m ë ®Çu ®o¹n. §Þa chØ nµy cßn gäi lµ ®Þa chØ c¬ së. §Þa chØ cña c¸c « nhí kh¸c n»m trong ®o¹n tÝnh ®−îc b»ng c¸ch céng thªm vµo ®Þa chØ c¬ së mét gi¸ trÞ gäi lµ ®Þa chØ lÖch hay ®é lÖch. §é lÖch nµy ®−îc x¸c ®Þnh bëi mét thanh ghi 16 bit kh¸c ®ãng vai trß thanh ghi lÖch. §Ó x¸c ®Þnh ®Þa chØ vËt lý 20 bit cña mét « nhí nµo ®ã trong mét ®o¹n bÊt kú th× 8086 ph¶i dïng ®Õn hai thanh ghi 16 bit. Tõ néi dung cña hai thanh ghi nµy nã t¹o ra ®Þa chØ vËt lý theo c«ng thøc:

§Þa chØ vËt lý = Néi dung thanh ghi ®o¹n × 16 + Néi dung thanh ghi lÖch

ViÖc dïng 2 thanh ghi ®Ó ghi nhí th«ng tin vÒ ®Þa chØ thùc chÊt t¹o ra mét lo¹i ®Þa chØ gäi lµ ®Þa chØ logic vµ ®−îc ký hiÖu:

thanh ghi ®o¹n: thanh ghi lÖch hay segment: offset

2.1.2.3. Thanh ghi con trá vµ chØ sè

Trong 8086 cßn cã ba thanh ghi con trá vµ hai thanh ghi chØ sè 16 bit lµ:

− Thanh ghi con trá lÖnh IP (Instruction Pointer): lu«n trá vµo lÖnh tiÕp theo sÏ ®−îc thùc hiÖn n»m trong ®o¹n m· CS. §Þa chØ ®Çy ®ñ cña lÖnh tiÕp theo nµy lµ CS: IP.

− Thanh ghi con trá c¬ së BP (Base Pointer): lu«n trá vµo mét phÇn tö d÷ liÖu n»m trong ®o¹n ng¨n xÕp SS. §Þa chØ ®Çy ®ñ cña mét phÇn tö trong ®o¹n ng¨n xÕp SS lµ SS: BP.

− Thanh ghi con trá ng¨n xÕp SP (Stack Pointer): lu«n chØ vµo ®Ønh hiÖn thêi cña ng¨n xÕp n»m trong ®o¹n ng¨n xÕp SS. §Þa chØ ®Çy ®ñ cña ®Ønh ng¨n xÕp lµ SS: SP.

− Thanh ghi chØ sè nguån SI (Source Index): SI chØ vµo d÷ liÖu trong ®o¹n d÷ liÖu DS mµ ®Þa chØ ®Çy ®ñ lµ DS: SI.

− Thanh ghi chØ sè ®Ých DI (Destination Index): chØ vµo d÷ liÖu trong ®o¹n d÷ liÖu DS mµ ®Þa chØ ®Çy ®ñ lµ DS: DI.

Ngoµi c¸c chøc n¨ng trªn, c¸c thanh ghi nµy ®Òu cã thÓ ®−îc dïng nh− c¸c thanh ghi ®a n¨ng.

Page 21: vµ cÊu tróc m¸y tÝnh€¦ ·

21

2.1.2.4. Thanh ghi cê F

§©y lµ thanh ghi kh¸ ®Æc biÖt trong CPU, mçi bit cña nã ®−îc dïng ®Ó ph¶n ¸nh mét tr¹ng th¸i nhÊt ®Þnh cña kÕt qu¶ phÐp to¸n do ALU thùc hiÖn hoÆc mét tr¹ng th¸i ho¹t ®éng cña EU. Dùa vµo c¸c cê nµy ng−êi lËp tr×nh cã thÓ cã c¸c lÖnh thÝch hîp tiÕp theo cho bé vi xö lý. Thanh ghi cê gåm 16 bit nh−ng ng−êi ta chØ dïng hÕt 9 bit cña nã ®Ó lµm c¸c bit cê.

× × × × O D I T S Z × A × P × C

×: Kh«ng ®−îc ®Þnh nghÜa

H×nh 2.2. S¬ ®å thanh ghi cê cña bé vi xö lý 8086

C¸c cê cô thÓ:

− C hoÆc CF (Carry Flag): Cê nhí, CF = 1 khi cã nhí hoÆc m−în.

− P hoÆc PF (Parity Flag): Cê ch½n lÎ, ph¶n ¸nh tÝnh ch½n lÎ cña tæng sè bit 1 cã trong kÕt qu¶. Cê PF = 1 khi tæng sè bit 1 trong kÕt qu¶ lµ ch½n.

− A hoÆc AF (Auxiliary carry Flag): Cê nhí phô cã ý nghÜa khi ta lµm viÖc víi c¸c sè BCD; AF = 1 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).

− Z hoÆc ZF (Zero Flag): Cê rçng (cê kh«ng), ZF = 1 khi kÕt qu¶ b»ng 0.

− S hoÆc SF (Sign Flag): Cê dÊu, SF = 1 khi kÕt qu¶ ©m.

− OF (Overflow Flag): Cê trµn, OF = 1 khi kÕt qu¶ lµ mét sè bï 2 v−ît ra ngoµi giíi h¹n biÓu diÔn dµnh cho nã.

Trªn ®©y lµ 6 bit cê tr¹ng th¸i ph¶n ¸nh c¸c tr¹ng th¸i kh¸c nhau cña kÕt qu¶ sau mét thao t¸c nµo ®ã. Trong ®ã, 5 bit cê ®Çu thuéc byte thÊp cña thanh ghi cê lµ c¸c cê gièng bé vi xö lý 8085 cña Intel. Ngoµi ra bé vi xö lý 8086 cßn cã c¸c cê ®iÒu khiÓn sau:

− T hoÆc TF (Trap Flag): Cê bÉy, TF = 1 th× CPU lµm viÖc ë chÕ ®é ch¹y tõng lÖnh mét.

− I hoÆc IF (Interrupt Flag): Cê cho phÐp ng¾t, nÕu IF = 1 th× CPU cho phÐp c¸c yªu cÇu ng¾t (che ®−îc) ®−îc t¸c ®éng, nÕu IF = 0 th× CPU cÊm c¸c yªu cÇu ng¾t (che ®−îc) t¸c ®éng trõ ng¾t ë ch©n NMI (Non Maskable Interrupt: ng¾t kh«ng che ®−îc).

Page 22: vµ cÊu tróc m¸y tÝnh€¦ ·

22

− D hoÆc DF (direction flag): Cê h−íng (cê lïi), IF = 1 khi CPU lµm viÖc víi chuçi ký tù theo thø tù tõ ph¶i qua tr¸i.

2.1.3. S¬ ®å ch©n vµ chøc n¨ng c¸c ch©n cña 8086

H×nh 2.3. S¬ ®å ch©n cña 8086

Vi xö lý 8086 ®−îc thiÕt kÕ ®Ó ho¹t ®éng ë mét trong hai chÕ ®é, tuú

thuéc vµo møc ®iÖn ¸p ®Æt ë ch©n sè 33 (ch©n MN/MX ):

− ChÕ ®é tèi thiÓu (chÕ ®é MIN) ®−îc thiÕt lËp nÕu ®iÖn ¸p ch©n sè 33 lµ 5V. ChÕ ®é tèi thiÓu lµ chÕ ®é trong hÖ thèng chØ cã 8086 vµ c¸c vi m¹ch nhí, c¸c vi m¹ch ghÐp nèi vµo/ra.

− ChÕ ®é tèi ®a (chÕ ®é MAX) ®−îc thiÕt lËp nÕu ®iÖn ¸p ch©n sè 33 lµ 0V. ChÕ ®é tèi ®a lµ chÕ ®é ¸p dông cho hÖ thèng ®a xö lý (nhiÒu vi xö lý

Page 23: vµ cÊu tróc m¸y tÝnh€¦ ·

23

8086), ®ång xö lý (8086 vµ bé ®ång xö lý to¸n häc 8087). Trong chÕ ®é tèi ®a, bé vi xö lý cã thÓ sö dông vi m¹ch ®iÒu khiÓn bus bªn ngoµi ®Ó gi¶i m· c¸c tÝn hiÖu tr¹ng th¸i /S0 /S1 vµ /S2 vµ cung cÊp tÊt c¶ c¸c tÝn hiÖu ®iÒu khiÓn bus.

Tïy thuéc vµo chÕ ®é ho¹t ®éng ®−îc thiÕt lËp mµ c¸c ch©n tõ sè 24 ®Õn sè 31 cã chøc n¨ng x¸c ®Þnh kh¸c nhau, ch¼ng h¹n nh− ch©n sè 25 ë chÕ ®é MAX cã tªn lµ QS0, cßn ë chÕ ®é MIN nã cã tªn lµ ALE. Sau ®©y chóng ta sÏ xem xÐt chøc n¨ng c¸c ch©n cña 8086.

* C¸c ch©n mang th«ng tin ®Þa chØ:

Vi xö lý 8086 cã 20 ®−êng ®Þa chØ bao gåm tõ A0 ®Õn A19 trong ®ã 16 ®−êng d©y ®Þa chØ thÊp tõ A0 ®Õn A15 ®−îc ghÐp kªnh víi c¸c ®−êng d©y d÷ liÖu tõ D0 ®Õn D15 trªn c¸c ch©n tõ AD0 ®Õn AD15; cßn 4 ®−êng d©y ®Þa chØ cao nhÊt tõ A16 ®Õn A19 cña 8086 còng ®−îc ghÐp kªnh, nh−ng trong tr−êng hîp nµy nã ®−îc ghÐp kªnh víi c¸c tÝn hiÖu tr¹ng th¸i tõ S3 ®Õn S6 trªn c¸c ch©n tõ A16/S3 ®Õn A19/S6. Do ®ã t¹i chu kú bus ®Þa chØ c¸c ®−êng d©y nµy ®−îc sö dông ®Ó mang th«ng tin ®Þa chØ ®−a ®Õn bé nhí hoÆc c¸c cæng vµo/ra. Nh− vËy bus ®Þa chØ cña 8086 cã ®é réng 20 bit bao gåm c¸c ®−êng d©y tõ A0 ®Õn A19, tuy nhiªn chØ cã 16 ®−êng d©y ®Þa chØ tõ A0 ®Õn A15 ®−îc sö dông khi truy cËp c¸c cæng vµo/ra. §iÒu nµy t¹o cho 8086 mét kh«ng gian ®Þa chØ vµo /ra ®éc lËp 64Kbyte.

* C¸c ch©n mang th«ng tin vÒ d÷ liÖu:

Vi xö lý 8086 cã 16 ®−êng d©y d÷ liÖu tõ D0 ®Õn D15 ®−îc ghÐp kªnh víi 16 ®−êng ®Þa chØ thÊp tõ A0 ®Õn A15. Khi ho¹t ®éng ë chu kú bus d÷ liÖu th× c¸c ®−êng d©y nµy mang th«ng tin vÒ d÷ liÖu − lµ d÷ liÖu ®äc ra hay viÕt vµo bé nhí hay thiÕt bÞ vµo/ra, hay c¸c m· vÒ c¸c lo¹i ng¾t tõ bé ®iÒu khiÓn ng¾t 8259.

* C¸c ch©n tÝn hiÖu tr¹ng th¸i:

+ 4 ®−êng d©y ®Þa chØ cao nhÊt tõ A16 ®Õn A19 cña 8086 còng ®−îc ghÐp kªnh, nh−ng trong tr−êng hîp nµy nã ®−îc ghÐp kªnh víi c¸c tÝn hiÖu tr¹ng th¸i tõ S3 ®Õn S6. C¸c bit tr¹ng th¸i nµy ®−îc ®−a ra cïng thêi ®iÓm víi c¸c d÷ liÖu ®−îc truyÒn trªn c¸c ch©n AD0 – AD15.

Bit S3 vµ S4 kÕt hîp cïng nhau t¹o ra 2 bit m· nhÞ ph©n ®Ó x¸c ®Þnh thanh ghi ®o¹n nµo ®−îc sö dông ®Ó t¹o ra ®Þa chØ vËt lý ®−îc ®−a lªn bus ®Þa chØ trong chu kú bus hiÖn t¹i theo b¶ng 2.1.

Page 24: vµ cÊu tróc m¸y tÝnh€¦ ·

24

B¶ng 2.1. Mèi quan hÖ gi÷a m! cña S4, S3 víi thanh ghi ®−îc sö dông

SSSS4444 SSSS3333 Tªn thanh ghi ®o¹n ®−îc sö dôngTªn thanh ghi ®o¹n ®−îc sö dôngTªn thanh ghi ®o¹n ®−îc sö dôngTªn thanh ghi ®o¹n ®−îc sö dông

0 0 ES

0 1 SS

1 0 CS

1 1 DS

§−êng d©y tr¹ng th¸i S5 ph¶n ¸nh tr¹ng th¸i cña mét tÝnh chÊt kh¸c bªn trong vi xö lý, nã lµ møc logic cña bit cê cho phÐp ng¾t bªn trong (IEF).

+ TÝn hiÖu READY: cã thÓ ®−îc cung cÊp bëi thiÕt bÞ ph¸t xung bªn ngoµi vµ cã thÓ ®−îc cung cÊp bëi bé nhí hoÆc hÖ thèng vµo/ra ®Ó b¸o cho CPU khi nã s½n sµng cho phÐp d÷ liÖu truyÒn ®−îc hoµn thµnh. TÝn hiÖu nµy cã thÓ ®−îc sö dông ®Ó chÌn thªm c¸c tr¹ng th¸i chê vµo chu kú bus, do ®ã mµ cã thÓ kÐo dµi thªm chu kú ®ång hå. §iÒu nµy rÊt cã Ých khi cÇn trao ®æi tin gi÷a 8086 víi mét thiÕt bÞ ngoµi cã tèc ®é chËm h¬n nã.

* C¸c ch©n tÝn hiÖu ®iÒu khiÓn:

C¸c tÝn hiÖu ®iÒu khiÓn ®−îc cung cÊp ®Ó gióp cho 8086 giao tiÕp víi bé nhí vµ thiÕt bÞ vµo/ra, chóng ®−îc 8086 ®−a ra bus ®iÒu khiÓn bªn ngoµi ®Ó ®iÒu khiÓn ho¹t ®éng cña c¸c linh kiÖn kh¸c.

+ TÝn hiÖu ALE (Address Latch Enable − cho phÐp chèt ®Þa chØ) lµ mét xung n©ng lªn møc 1 ®Ó b¸o cho m¹ch ngoµi biÕt cã mét ®Þa chØ hîp lÖ ë trªn bus. TÝn hiÖu nµy ®−îc ®−a vµo ®iÒu khiÓn mét vi m¹ch m¹ch chèt ë bªn ngoµi ®Ó t¸ch c¸c bit ®Þa chØ tõ A0 ®Õn A15 ra khái ®−êng d©y ghÐp kªnh ®Þa chØ − d÷ liÖu tõ AD0 ®Õn AD15.

+ TÝn hiÖu DEN (Data Enable − cho phÐp d÷ liÖu) dïng ®Ó b¸o cã d÷

liÖu hîp lÖ ë trªn bus bëi møc logic 0. DEN th−êng ®−îc ®−a tíi ®iÒu khiÓn vi m¹ch ®Öm d÷ liÖu trªn bus d÷ liÖu.

+ TÝn hiÖu M/ IO b¸o cho c¸c m¹ch ®iÖn bªn ngoµi biÕt bé nhí hoÆc thiÕt bÞ vµo/ra ®ang ®−îc nèi víi bus. Møc logic 0 t¹i ®Çu ra nµy b¸o cho c¸c m¹ch ngoµi biÕt thiÕt bÞ vµo/ra ®ang ®−îc sö dông bus, møc logic 1 b¸o r»ng bé nhí ®ang sö dông bus.

+ TÝn hiÖu DT/R dïng ®Ó b¸o h−íng truyÒn d÷ liÖu trªn bus. Khi

DT/R =1 trong suèt mét phÇn truyÒn d÷ liÖu cña bus d÷ liÖu th× bus d÷ liÖu ë chÕ ®é truyÒn. Do ®ã d÷ liÖu cã thÓ ghi vµo bé nhí hoÆc ®−a ra thiÕt bÞ

Page 25: vµ cÊu tróc m¸y tÝnh€¦ ·

25

vµo/ra. Ng−îc l¹i, møc logic 0 t¹i ch©n DT/R b¸o hiÖu r»ng bus ®ang ë chÕ ®é nhËn. §iÒu nµy cã nghÜa lµ d÷ liÖu ®ang ®−îc ®äc ra tõ bé nhí hoÆc d÷ liÖu ®−îc ®−a vµo tõ mét cæng vµo.

+ TÝn hiÖu BHE (Bank High Enable − cho phÐp b¨ng cao) dïng ®Ó b¸o

r»ng ®ang truy cËp b¨ng cao hay b¨ng thÊp cña bé nhí. BHE= 0 b¸o hiÖu ®ang truy cËp b¨ng cao cña bé nhí, ng−îc l¹i møc logic 1 ë ch©n nµy b¸o hiÖu ®ang truy cËp b¨ng thÊp cña bé nhí.

+ TÝn hiÖu RD (Read) vµ WR (Write) b¸o r»ng mét chu kú ®äc hoÆc ghi

®ang ®−îc tiÕn hµnh. CPU chuyÓn WR xuèng møc logic 0 ®Ó b¸o hiÖu cho c¸c thiÕt bÞ ngoµi r»ng d÷ liÖu ghi hîp lÖ hoÆc d÷ liÖu ®−a ra ®ang ë trªn

bus. CPU chuyÓn RD xuèng møc logic 0 ®Ó b¸o hiÖu r»ng CPU ®ang ®äc d÷ liÖu tõ bé nhí hoÆc nhËn d÷ liÖu tõ mét cæng vµo ra.

* C¸c ch©n tÝn hiÖu ng¾t:

+ TÝn hiÖu INTR lµ mét ®Çu vµo cña vi xö lý 8086 vµ cã thÓ ®−îc sö dông bëi mét thiÕt bÞ ngoµi ®Ó b¸o r»ng nã ®ang cÇn ®−îc phôc vô. Logic 1 t¹i ch©n nµy ®¹i diÖn cho mét yªu cÇu ng¾t tÝch cùc. Khi yªu cÇu ng¾t ®−îc nhËn biÕt bëi CPU th× nã b¸o sù x¸c nhËn nµy cho thiÕt bÞ bªn ngoµi víi

møc logic 0 t¹i ®Çu ra INTA (Interrupt Acknowledge).

+ TÝn hiÖu vµo TEST còng cã quan hÖ víi giao diÖn ng¾t bªn ngoµi. NÕu

TEST cã møc logic 1 th× CPU treo ho¹t ®éng cña m×nh vµ nã chuyÓn ®Õn tr¹ng th¸i mµ ®−îc hiÓu nh− tr¹ng th¸i nghØ. Khi ë tr¹ng th¸i nµy CPU kh«ng thùc hiÖn lÖnh mµ thay vµo ®ã nã kiÓm tra l¹i møc logic ë ®Çu vµo

TEST vµ cho ®Õn khi nã trë l¹i møc 0. NÕu TEST chuyÓn ®Õn logic 0, qu¸ tr×nh l¹i ®−îc tiÕp tôc víi lÖnh tiÕp theo trong ch−¬ng tr×nh. §Æc ®iÓm nµy cã thÓ ®−îc sö dông ®Ó ®ång bé ho¹t ®éng cña 8086 víi c¸c thiÕt bÞ phÇn cøng bªn ngoµi.

LÖnh WAIT (chê ®Ó test) khi thùc hiÖn sÏ t¹o ra tr¹ng th¸i chê cho bé vi xö lý ë ®Çu vµo /TEST. NÕu /TEST chuyÓn xuèng møc 0 th× míi tiÕp tôc qu¸ tr×nh xö lý.

+ §Çu vµo ng¾t kh«ng che ®−îc NMI (Non Maskable Interrupt). Khi møc logic trªn NMI chuyÓn tõ 0 lªn 1, ®iÒu khiÓn ®−îc chuyÓn ®Õn ch−¬ng tr×nh con phôc vô ng¾t kh«ng che ®−îc t¹i thêi ®iÓm hoµn thµnh sù thùc hiÖn cña lÖnh ®ang ch¹y. NMI lµ yªu cÇu ng¾t cã møc logic −u tiªn cao nhÊt vµ nã kh«ng thÓ che ®−îc b»ng phÇn mÒm.

Page 26: vµ cÊu tróc m¸y tÝnh€¦ ·

26

+ §Çu vµo RESET ®−îc sö dông ®Ó thiÕt lËp l¹i phÇn cøng cho CPU. ChuyÓn RESET xuèng møc logic 0 dïng ®Ó khëi t¹o c¸c thanh ghi néi cña vi xö lý vµ khëi t¹o ch−¬ng tr×nh con phôc vô thiÕt lËp hÖ thèng.

* C¸c ch©n mang tÝn hiÖu phôc vô DMA (Direct Memory Access − truy cËp bé nhí trùc tiÕp):

Giao diÖn truy cËp bé nhí trùc tiÕp cña 8086 ë chÕ ®é MIN bao gåm hai tÝn hiÖu HOLD vµ HLDA. Khi mét thiÕt bÞ ngoµi muèn giµnh quyÒn ®iÒu khiÓn bus hÖ thèng ®Ó thùc hiÖn truy cËp bé nhí trùc tiÕp, nã b¸o yªu cÇu nµy cho CPU b»ng c¸ch chuyÓn HOLD lªn møc logic 1. Sau ®ã CPU chuyÓn sang tr¹ng th¸i c« lËp sau khi chu kú bus hiÖn t¹i thùc hiÖn xong. Khi nã ë tr¹ng th¸i c« lËp, c¸c ®−êng d©y tÝn hiÖu AD0 − AD15, A16/S3 − A19/S6,

BHE/S7, M/ IO , DT/R , WR , DEN vµ INTR ®Òu ®Æt trªn tr¹ng th¸i trë kh¸ng cao. Vi xö lý 8086 b¸o cho c¸c thiÕt bÞ ngoµi r»ng nã ®ang ë tr¹ng th¸i c« lËp b»ng c¸ch chuyÓn ®Çu ra HLDA cña nã lªn møc logic 1 vµ lóc nµy quyÒn ®iÒu khiÓn bus ®−îc chuyÓn cho vi m¹ch ®iÒu khiÓn DMA (vi m¹ch 8237).

* §ång hå hÖ thèng:

Thêi gian c¬ së cho ho¹t ®éng ®ång bé bªn trong vµ bªn ngoµi cña vi xö lý trong m¸y tÝnh ®−îc cung cÊp bëi ®Çu vµo CLK ë ch©n sè 19. TÝn hiÖu CLK ®−îc t¹o ra ë bªn ngoµi b»ng bé t¹o xung 8284 nh− h×nh 2.4.

Hai ®Çu vµo X1, X2 cña 8284 ®−îc nèi víi th¹ch anh cã tÇn sè dao ®éng gÊp ba lÇn tèc ®é cña 8086. TÇn sè dao ®éng cña th¹ch anh ®−îc chia 3 bªn trong 8284 ®Ó t¹o tÇn sè ®óng b»ng tÇn sè ho¹t ®éng cña 8086. TÇn sè nµy

8284 CLK

XTAL

CL

CLK

PCLK

OSC

X2

X1

F/C

CPU 8086

H×nh 2.4. M¹ch t¹o xung ®ång hå cho 8086

Page 27: vµ cÊu tróc m¸y tÝnh€¦ ·

27

®−îc ®Öm ë bªn trong vµ ®−îc ®−a ra t¹i ch©n CLK, ®Çu ra nµy ®−îc nèi trùc tiÕp ®Õn ®Çu vµo CLK cña 8086.

Tõ s¬ ®å trªn ta thÊy ngoµi tÝn hiÖu ®ång hå CLK cÊp cho 8086 th× 8284 cßn t¹o ra hai tÝn hiÖu xung nhÞp n÷a lµ OSC (OSCillator clock) vµ PCLK (Peripheral CLocK). Hai tÝn hiÖu nµy dïng ®Ó kÝch cho c¸c IC bªn ngoµi. TÇn sè cña hai tÝn hiÖu t¹i ®Çu ra cña PCLK b»ng mét nöa tÇn sè cña tÝn hiÖu t¹i ®Çu ra CLK. TÇn sè ë ®Çu ra OSC ®óng b»ng tÇn sè cña dao ®éng th¹ch anh. Vi m¹ch 8284 còng cã thÓ ®−îc kÝch mét nguån xung ®ång hå ë bªn ngoµi ®−îc cung cÊp tíi ch©n EFI (External Frequency Input) cña 8284.

§Çu vµo F/C ®−îc cung cÊp ®Ó lùa chän nguån xung clock cung cÊp cho 8284 lµ tõ th¹ch anh hay nguån xung ®ång hå bªn ngoµi ë ch©n EFI. Khi nã bÞ gi÷ ë møc 0 th¹ch anh gi÷a X1 vµ X2 ®−îc sö dông. Cung cÊp møc logic 1

t¹i ch©n F/C ®Ó lùa chän EFI lµ nguån xung.

* Chøc n¨ng c¸c ch©n ë chÕ ®é MAX:

Khi 8086 ®−îc thiÕt lËp cÊu h×nh ë chÕ ®é MAX, nã t¹o ra c¸c tÝn hiÖu ®Ó thùc hiÖn m«i tr−êng ®a xö lý, ®ång xö lý. M«i tr−êng ®a vi xö lý cã thÓ hiÓu r»ng cã nhiÒu h¬n mét vi xö lý tån t¹i trong hÖ thèng vµ mçi vi xö lý thùc hiÖn ch−¬ng tr×nh riªng cña m×nh. Th−êng th× trong m«i tr−êng nµy mét sè tµi nguyªn hÖ thèng dïng chung cho tÊt c¶ c¸c vi xö lý. C¸c tµi nguyªn nµy ®−îc gäi lµ tµi nguyªn toµn côc hay tµi nguyªn dïng chung. Còng cã c¸c tµi nguyªn ®−îc dµnh cho c¸c vi xö lý x¸c ®Þnh, c¸c tµi nguyªn nµy ®−îc hiÓu lµ c¸c tµi nguyªn côc bé hay tµi nguyªn dïng riªng. Trong hÖ thèng ho¹t ®éng ë chÕ ®é MAX th× sù ph©n ph¸t tµi nguyªn cña hÖ thèng ®−îc thùc hiÖn dÔ dµng b»ng c¸ch chuyÓn quyÒn ®iÒu khiÓn bus cho c¸c vi xö lý kh¸c ®Ó chia sÎ bus hÖ thèng. S¬ ®å khèi cña 8086 lµm viÖc ë chÕ ®é MAX nh− h×nh 2.6.

OSC

CLK

PCLK

H×nh 2.5. Mèi quan hÖ gi÷a CLK, PCLK vµ OSC

Page 28: vµ cÊu tróc m¸y tÝnh€¦ ·

28

Nh×n vµo s¬ ®å 2.6 ta thÊy ë chÕ ®é MAX, 8086 kh«ng trùc tiÕp cung cÊp tÊt c¶ c¸c tÝn hiÖu cÇn thiÕt ®Ó ®iÒu khiÓn bé nhí vµ thiÕt bÞ vµo/ra, giao

diÖn ng¾t. §Æc biÖt c¸c tÝn hiÖu WR , M/ IO , DT/R , DEN , ALE vµ INTA kh«ng ®−îc t¹o ra bëi 8086. Thay vµo ®ã, bé ®iÒu khiÓn bus 8288 t¹o ra c¸c

tÝn hiÖu nµy dùa vµo c¸c ®Çu vµo 2S , 1S vµ 0S lÊy tõ 8086.

− TÝn hiÖu kho¸ LOCK (Lock signal)

§Ó thùc hiÖn mét hÖ thèng ®a vi xö lý, mét tÝn hiÖu gäi lµ LOCK ®−îc cung cÊp, tÝn hiÖu nµy cã nghÜa lµ nÕu ®Çu ra cña nã cã møc logic 0 mçi khi mét vi xö lý muèn kho¸ c¸c vi xö lý kh¸c ®ang sö dông bus. TÝn hiÖu LOCK lµ phï hîp víi multibus, ®©y lµ mét chuÈn c«ng nghiÖp cho giao diÖn c¸c vi xö lý trong mét m«i tr−êng ®a vi xö lý.

− C¸c tÝn hiÖu tr¹ng th¸i hµng ®îi (Queue status signals) QS1 vµ QS0

MRDC MWTC AMWC IROC AIOWC INTA MCE/PDEN

ALE DT/R DEN

LOCK BHE RD READY QS0, QS1

RQ/GT1 RQ/GT0

0S

1S

2S

CPU 8086

VCC GND CLK

CLK ANE

0S

1S

2S

8288

MN/MX

H×nh 2.6. S¬ ®å ghÐp nèi 8086 ë chÕ ®é MAX víi bé ®iÒu khiÓn bus 8288

DEN

DT/R

ALE

Page 29: vµ cÊu tróc m¸y tÝnh€¦ ·

29

Hai tÝn hiÖu nµy kÕt hîp víi nhau t¹o ra hai bit m· tr¹ng th¸i hµng ®îi (queue). M· nµy b¸o cho c¸c m¹ch bªn ngoµi biÕt kiÓu th«ng tin nµo võa ®−îc ®−a ra tõ queue trong suèt chu kú ®ång hå lÇn tr−íc. B¶ng bªn d−íi cho biÕt 4 m· tr¹ng th¸i queue kh¸c nhau:

B¶ng 2.2. Gi¶i m! QS1, QS0

QS1 QS0 ý nghÜa

0 0 Kh«ng lÊy d÷ liÖu khái hµng ®îi.

0 1 Byte d÷ liÖu võa lÊy khái hµng ®îi lµ byte ®Çu tiªn cña mét lÖnh.

1 0 Hµng ®îi rçng.

1 1 Byte d÷ liÖu võa lÊy khái hµng ®îi lµ byte tiÕp theo cña mét lÖnh (kh«ng ph¶i byte ®Çu tiªn).

−−−− C¸c tÝn hiÖu ®iÒu khiÓn bus côc bé

Trong cÊu h×nh ë chÕ ®é MAX th× hai tÝn hiÖu HOLD vµ HLDA cña hai chÕ ®é MIN còng ®−îc thay ®æi. Hai tÝn hiÖu ®−îc thay ®æi bëi tÝn hiÖu Request/Grant RQ/GT0 vµ RQ/GT1. Chóng cung cÊp quyÒn −u tiªn sö dông bus côc bé.

2.2. C¸c bé vi xö lý tiªn tiÕn cña Intel

2.2.1. C¸c bé vi xö lý x86

− Bé vi xö lý 80186 (1982) cßn gäi lµ iAPX 186, ®−îc sö dông chñ yÕu trong nh÷ng øng dông nhóng. Cã hai phiªn b¶n cña 80186 lµ 10 vµ 12MHz.

− Bé vi xö lý 80286 (1982) ®−îc biÕt ®Õn víi tªn gäi 286, lµ bé vi xö lý ®Çu tiªn cña Intel cã thÓ ch¹y ®−îc tÊt c¶ øng dông viÕt cho c¸c bé vi xö lý tr−íc ®ã, ®−îc dïng trong c¸c PC cña IBM vµ c¸c PC t−¬ng thÝch. 286 sö dông c«ng nghÖ 1,5 micromet, 134000 transistor, bé nhí më réng tíi 16MB. C¸c phiªn b¶n cña 286 gåm 6, 8, 10, 12,5, 16, 20 vµ 25MHz.

− Bé vi xö lý 80386 gåm c¸c hä 386DX, 386SX vµ 386SL. Intel386DX lµ bé vi xö lý 32 bit ®Çu tiªn Intel giíi thiÖu vµo n¨m 1985, ®−îc dïng trong c¸c PC cña IBM vµ PC t−¬ng thÝch. Intel386 lµ mét b−íc nh¶y vät so víi c¸c bé vi xö lý tr−íc ®ã. §©y lµ bé vi xö lý 32 bit cã kh¶ n¨ng xö lý ®a nhiÖm, nã cã thÓ ch¹y nhiÒu ch−¬ng tr×nh kh¸c nhau cïng mét thêi ®iÓm. 80386 sö dông c¸c thanh ghi 32 bit, cã thÓ truyÒn 32 bit d÷ liÖu cïng lóc trªn bus d÷ liÖu vµ dïng 32 bit ®Ó x¸c ®Þnh ®Þa chØ. Còng nh− bé vi xö lý 80286, 80386

Page 30: vµ cÊu tróc m¸y tÝnh€¦ ·

30

ho¹t ®éng ë 2 chÕ ®é: real mode vµ protect mode. 386DX sö dông c«ng nghÖ 1,5 micromet, t¹o bëi 275000 transistor, bé nhí më réng tíi 4GB. C¸c phiªn b¶n cña 386DX gåm 16, 20, 25 vµ 33MHz. Vi xö lý 386SX (n¨m 1988) sö dông c«ng nghÖ 1,5 micromet, 275000 transistor, kiÕn tróc 32 bit bªn trong, bus d÷ liÖu ngoµi 16 bit, bus ®Þa chØ 24 bit, bé nhí më réng 16MB; gåm c¸c phiªn b¶n 16, 20, 25 vµ 33MHz.

Vi xö lý 386SL (1990) ®−îc thiÕt kÕ cho thiÕt bÞ di ®éng, sö dông c«ng nghÖ 1 micromet, 855000 transistor, bé nhí më réng 4GB; gåm c¸c phiªn b¶n 16, 20 vµ 25MHz.

− Bé vi xö lý 80486DX ra ®êi n¨m 1989 víi cÊu tróc bus d÷ liÖu 32 bit. 486DX cã bé nhí s¬ cÊp (L1 cache) 8KB ®Ó gi¶m thêi gian chê d÷ liÖu tõ bé nhí ®−a ®Õn, bé ®ång xö lý to¸n häc ®−îc tÝch hîp bªn trong. Ngoµi ra, 486DX ®−îc thiÕt kÕ hµng ®îi lÖnh (pipeline) ®Ó cã thÓ xö lý mét chØ lÖnh trong mét xung nhÞp. 486DX sö dông c«ng nghÖ 1 micromet, gåm 1,2 triÖu transistor, bé nhí më réng 4GB; gåm c¸c phiªn b¶n 25MHz, 35MHz vµ 50MHz. 486SL ®−îc s¶n xuÊt n¨m 1992, ®©y lµ bé vi xö lý ®Çu tiªn dµnh cho m¸y tÝnh x¸ch tay. 486SL ®−îc s¶n xuÊt theo c«ng nghÖ 0,8 micromet, 1,4 triÖu transistor, bé nhí më réng 4GB; gåm c¸c phiªn b¶n 20, 25 vµ 33MHz.

− Bé vi xö lý 80586 (cßn gäi lµ Pentium), lµ bé vi xö lý kÕ tiÕp 80486 ra ®êi n¨m 1993. C¶i tiÕn lín nhÊt cña Pentium lµ thiÕt kÕ hai hµng ®îi lÖnh, do ®ã Pentium cã thÓ cã tèc ®é xö lý gÊp ®«i so víi 80486DX. Bé nhí s¬ cÊp 16KB gåm 8KB chøa d÷ liÖu vµ 8KB kh¸c ®Ó chøa lÖnh. Bé ®ång xö lý to¸n häc ®−îc c¶i tiÕn gióp t¨ng kh¶ n¨ng tÝnh to¸n ®èi víi c¸c tr×nh øng dông. Pentium sö dông c«ng nghÖ 0,8 micromet chøa 3,1 triÖu transistor, cã c¸c tèc ®é 60 vµ 66MHz. C¸c phiªn b¶n 75, 90, 100, 120MHz sö dông c«ng nghÖ 0,6 micromet chøa 3,3 triÖu transistor; c¸c phiªn b¶n 133, 150, 166, 200 sö dông c«ng nghÖ 0,35 micromet chøa 3,3 triÖu transistor.

− Pentium MMX (n¨m 1996), phiªn b¶n c¶i tiÕn cña Pentium víi c«ng nghÖ MMX ®−îc Intel ph¸t triÓn ®Ó ®¸p øng nhu cÇu vÒ øng dông ®a ph−¬ng tiÖn vµ truyÒn th«ng. MMX kÕt hîp víi SIMD (Single Instruction Multiple Data) cho phÐp xö lý nhiÒu d÷ liÖu trong cïng chØ lÖnh, lµm t¨ng kh¶ n¨ng xö lý trong c¸c t¸c vô ®å ho¹, ®a ph−¬ng tiÖn. Pentium MMX sö dông c«ng nghÖ 0,35 micromet chøa 4,5 triÖu transistor, cã c¸c tèc ®é 166, 200, 233MHz. Nèi tiÕp sù thµnh c«ng cña dßng Pentium, Pentium Pro ®−îc Intel giíi thiÖu vµo th¸ng 9 n¨m 1995, sö dông c«ng nghÖ 0,6 vµ 0,35 micromet chøa 5,5 triÖu transistor. §iÓm næi bËt cña Pentium Pro lµ bus hÖ

Page 31: vµ cÊu tróc m¸y tÝnh€¦ ·

31

thèng 60 hoÆc 66MHz, bé nhí ®Öm L2 (L2 cache) 256KB hoÆc 512KB (trong mét sè phiªn b¶n). Pentium Pro cã c¸c tèc ®é 150, 166, 180, 200MHz.

Pentium II (n¨m 1997), phiªn b¶n c¶i tiÕn tõ Pentium Pro ®−îc sö dông trong nh÷ng dßng m¸y tÝnh cao cÊp, m¸y tr¹m (workstation) hoÆc m¸y chñ (server). Pentium II cã bé nhí ®Öm L1 32KB, L2 512KB, tÝch hîp c«ng nghÖ MMX ®−îc c¶i tiÕn gióp viÖc xö lý d÷ liÖu video, audio vµ ®å ho¹ hiÖu qu¶ h¬n.

Bé vi xö lý Pentium II ®Çu tiªn, tªn m· Klamath, s¶n xuÊt trªn c«ng nghÖ 0,35 micromet, cã 7,5 triÖu transistor, bus hÖ thèng 66MHz, gåm c¸c phiªn b¶n 233, 266, 300MHz.

Pentium II, tªn m· Deschutes, sö dông c«ng nghÖ 0,25 micromet; 7,5 triÖu transistor, gåm c¸c phiªn b¶n 333MHz (bus hÖ thèng 66MHz), 350, 400, 450MHz (bus hÖ thèng 100MHz).

Celeron (n¨m 1998) ®−îc “rót gän” tõ kiÕn tróc Pentium II, dµnh cho dßng m¸y cÊp thÊp. Phiªn b¶n ®Çu tiªn, tªn m· Covington, kh«ng cã bé nhí ®Öm L2 nªn tèc ®é xö lý kh¸ chËm, kh«ng g©y ®−îc Ên t−îng víi ng−êi dïng. Phiªn b¶n sau, tªn m· Mendocino, ®· kh¾c phôc khuyÕt ®iÓm nµy víi bé nhí ®Öm L2 128KB. Covington sö dông c«ng nghÖ 0,25 micromet, cã 7,5 triÖu transistor, bé nhí ®Öm L1 32KB, bus hÖ thèng 66MHz, ®Õ c¾m 242 ch©n Slot 1 SEPP (Single Edge Processor Package), tèc ®é 266, 300MHz. Mendocino còng sö dông c«ng nghÖ 0,25 micromet cã ®Õn 19 triÖu transistor, bé nhí ®Öm L1 32KB, L2 128KB, bus hÖ thèng 66MHz, ®Õ c¾m Slot 1 SEPP hoÆc socket 370 PPGA, tèc ®é 300, 333, 366, 400, 433, 466, 500, 533MHz.

Pentium III (n¨m 1999) bæ sung 70 lÖnh míi (Streaming SIMD Extensions − SSE) gióp t¨ng hiÖu suÊt ho¹t ®éng trong c¸c t¸c vô xö lý h×nh ¶nh, audio, video vµ nhËn d¹ng giäng nãi. Pentium III gåm c¸c tªn m· Katmai, Coppermine vµ Tualatin. Katmai sö dông c«ng nghÖ 0,25 micromet, bªn trong cã 9,5 triÖu transistor, bé nhí ®Öm L1 32KB, L2 512KB, tèc ®é 450, 500, 550, 533 vµ 600MHz (bus 100MHz), 533, 600MHz (bus 133MHz). Coppermine sö dông c«ng nghÖ 0,18 micromet, bªn trong cã 28,1 triÖu transistor, bé nhí ®Öm L2 256KB ®−îc tÝch hîp bªn trong nh»m t¨ng tèc ®é xö lý, cã c¸c tèc ®é nh− 500, 550, 600, 650, 700, 750, 800, 850MHz (bus 100MHz), 533, 600, 667, 733, 800, 866, 933, 1000, 1100 vµ 1133MHz (bus 133MHz). Tualatin ¸p dông c«ng nghÖ 0,13 micromet cã 28,1 triÖu transistor, bé nhí ®Öm L1 32KB, L2 256KB hoÆc 512KB tÝch hîp bªn trong BXL, bus hÖ thèng 133MHz. Cã c¸c tèc ®é nh− 1133, 1200, 1266,

Page 32: vµ cÊu tróc m¸y tÝnh€¦ ·

32

1333, 1400MHz. Celeron Coppermine (n¨m 2000) ®−îc “rót gän” tõ kiÕn tróc Pentium III Coppermine, cßn gäi lµ Celeron II, ®−îc bæ sung 70 lÖnh SSE. Sö dông c«ng nghÖ 0,18 micromet cã 28,1 triÖu transistor, bé nhí ®Öm L1 32KB, L2 256KB tÝch hîp bªn trong BXL, cã c¸c tèc ®é nh− 533, 566, 600, 633, 667, 700, 733, 766, 800MHz (bus 66MHz), 850, 900, 950, 1000, 1100, 1200, 1300MHz (bus 100MHz).

Tualatin Celeron (Celeron S) (n¨m 2000) ®−îc “rót gän” tõ kiÕn tróc Pentium III Tualatin, ¸p dông c«ng nghÖ 0,13 micromet, bé nhí ®Öm L1 32KB, L2 256KB tÝch hîp, bus hÖ thèng 100MHz, gåm c¸c tèc ®é 1,0; 1,1; 1,2; 1,3 vµ 1,4GHz.

− Pentium IV lµ bé vi xö lý thÕ hÖ thø 7 dßng x86 phæ th«ng, ®−îc giíi thiÖu vµo th¸ng 11 n¨m 2000. Pentium IV sö dông vi kiÕn tróc NetBurst cã thiÕt kÕ hoµn toµn míi so víi c¸c bé vi xö lý cò (PII, PIII vµ Celeron sö dông vi kiÕn tróc P6). Mét sè c«ng nghÖ næi bËt ®−îc ¸p dông trong vi kiÕn tróc NetBurst nh− Hyper Pipelined Technology − më réng sè hµng ®îi lÖnh xö lý, Execution Trace Cache − tr¸nh t×nh tr¹ng lÖnh bÞ chËm trÔ khi chuyÓn tõ bé nhí ®Õn CPU, Rapid Execution Engine − t¨ng tèc bé ®ång xö lý to¸n häc, bus hÖ thèng (system bus) 400MHz vµ 533MHz; c¸c c«ng nghÖ Advanced Transfer Cache, Advanced Dynamic Execution, Enhanced Floating Point vµ Multimedia Unit, Streaming SIMD Extensions 2 (SSE2) còng ®−îc c¶i tiÕn nh»m t¹o ra nh÷ng bé vi xö lý tèc ®é cao h¬n, kh¶ n¨ng tÝnh to¸n m¹nh h¬n, xö lý ®a ph−¬ng tiÖn tèt h¬n. Pentium IV ®Çu tiªn (tªn m· Willamette) xuÊt hiÖn cuèi n¨m 2000 ®Æt dÊu chÊm hÕt cho "triÒu ®¹i" Pentium III. Willamette s¶n xuÊt trªn c«ng nghÖ 0,18 micromet, cã 42 triÖu transistor (nhiÒu h¬n gÇn 50% so víi Pentium III), bus hÖ thèng (system bus) 400MHz, tÝch hîp bé nhí ®Öm L2 256KB. Pentium IV Willamette cã mét sè tèc ®é nh− 1,3; 1,4; 1,5; 1,6; 1,7; 1,8; 1,9; 2,0GHz. (Chó ý: tÇn sè xung thùc cña Pentium IV lµ 100MHz nh−ng víi c«ng nghÖ Quad Data Rate cho phÐp truyÒn 4 bit d÷ liÖu trong 1 chu kú, nªn bus hÖ thèng cña nã lµ 400MHz).

Pentium IV Northwood xuÊt hiÖn vµo th¸ng 1 n¨m 2002, ®−îc s¶n xuÊt trªn c«ng nghÖ 0,13 micromet, cã kho¶ng 55 triÖu transistor, bé nhí ®Öm tÝch hîp L2 512KB. Northwood cã 3 dßng gåm Northwood A (system bus 400MHz), tèc ®é 1,6; 1,8; 2,0; 2,2; 2,4; 2,5; 2,6 vµ 2,8GHz. Northwood B (system bus 533MHz) tèc ®é 2,26; 2,4; 2,53; 2,66; 2,8 vµ 3,06GHz (riªng phiªn b¶n 3,06GHz cã hç trî c«ng nghÖ siªu ph©n luång Hyper Threading − HT). Northwood C (system bus 800MHz, tÊt c¶ hç trî HT), gåm 2,4; 2,6; 2,8; 3,0; 3,2; 3,4GHz. Pentium IV Prescott (n¨m 2004) lµ bé vi xö lý ®Çu tiªn cña Intel s¶n xuÊt theo c«ng nghÖ 90 nanomet, kÝch th−íc vi m¹ch

Page 33: vµ cÊu tróc m¸y tÝnh€¦ ·

33

gi¶m 50% so víi Pentium IV Willamette. §iÒu nµy cho phÐp tÝch hîp nhiÒu transistor h¬n trªn cïng kÝch th−íc (125 triÖu transistor so víi 55 triÖu transistor cña Pentium IV Northwood), tèc ®é chuyÓn ®æi cña transistor nhanh h¬n, t¨ng kh¶ n¨ng xö lý, tÝnh to¸n. Dung l−îng bé nhí ®Öm tÝch hîp L2 cña Pentium IV Prescott gÊp ®«i so víi Pentium IV Northwood (1MB so víi 512KB). Ngoµi tËp lÖnh MMX, SSE, SSE2, Prescott ®−îc bæ sung tËp lÖnh SSE3 gióp c¸c øng dông xö lý video vµ game ch¹y nhanh h¬n.

C¸c bé vi xö lý Celeron Pentium IV ®−îc thiÕt kÕ víi môc tiªu dung hoµ gi÷a c«ng nghÖ vµ gi¸ c¶, ®¸p øng c¸c yªu cÇu phæ th«ng nh− truy cËp Internet, email, chat, xö lý c¸c øng dông v¨n phßng. Celeron Willamette 128 (2002), b¶n "rót gän" tõ Pentium IV Willamette, s¶n xuÊt trªn c«ng nghÖ 0,18 micromet, bé nhí ®Öm L2 lµ 128KB, bus hÖ thèng 400MHz. Celeron Willamette 128 hç trî tËp lÖnh MMX, SSE, SSE2. Mét sè BXL thuéc dßng nµy nh− Celeron 1.7 (1,7GHz) vµ Celeron 1.8 (1,8GHz).

Celeron NorthWood 128, "rót gän" tõ Pentium IV Northwood, c«ng nghÖ 0,13 micromet, bé nhí ®Öm tÝch hîp L2 128KB, bus hÖ thèng 400MHz. Celeron NorthWood 128 còng hç trî c¸c tËp lÖnh MMX, SSE, SSE2, gåm Celeron 1.8A, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8 t−¬ng øng víi c¸c tèc ®é tõ 1,8GHz ®Õn 2,8GHz.

Celeron D (Presscott 256) ®−îc x©y dùng tõ nÒn t¶ng Pentium IV Prescott, s¶n xuÊt trªn c«ng nghÖ 90 nanomet, bé nhí ®Öm tÝch hîp L2 256KB (gÊp ®«i dßng Celeron NorthWood), bus hÖ thèng 533MHz, Socket 478 vµ 775LGA. Ngoµi c¸c tËp lÖnh MMX, SSE, SSE2, Celeron D hç trî tËp lÖnh SSE3, mét sè phiªn b¶n sau cã hç trî tÝnh to¸n 64 bit. Celeron D gåm 310, 315, 320, 325, 325J, 326, 330, 330J, 331, 335, 335J, 336, 340, 340J, 341, 345, 345J, 346, 350, 351, 355 víi c¸c tèc ®é t−¬ng øng tõ 2,13GHz ®Õn 3,33GHz.

Pentium IV Extreme Edition (P4EE) xuÊt hiÖn vµo th¸ng 9 n¨m 2003, ®−îc x©y dùng tõ bé xö lý Xeon dµnh cho m¸y chñ vµ tr¹m lµm viÖc. Ngoµi c«ng nghÖ HT "®×nh ®¸m" thêi bÊy giê, ®iÓm næi bËt cña P4EE lµ bæ sung bé nhí ®Öm L3 2MB. Phiªn b¶n ®Çu tiªn cña P4 EE (nh©n Gallatin) s¶n xuÊt trªn c«ng nghÖ 0,13 micromet, bé nhí ®Öm L2 512KB, L3 2MB, bus hÖ thèng 800MHz, gåm P4 EE 3.2 (3,2GHz), P4 EE 3.4 (3,4GHz).

2.2.2. C¸c bé vi xö lý kiÕn tróc NetBurst vµ Core cña Intel

Vi kiÕn tróc NetBurst 64bit (Extended Memory 64 Technology − EM64T) ®Çu tiªn ®−îc Intel sö dông trong bé xö lý Pentium IV Prescott

Page 34: vµ cÊu tróc m¸y tÝnh€¦ ·

34

(tªn m· Prescott 2M). Prescott 2M còng sö dông c«ng nghÖ 90nm, bé nhí ®Öm L2 2MB, bus hÖ thèng 800MHz, socket 775LGA. Ngoµi c¸c tËp lÖnh MX, SSE, SSE2, SSE3, c«ng nghÖ HT vµ kh¶ n¨ng tÝnh to¸n 64 bit, Prescott 2M (trõ BXL 620) cã hç trî c«ng nghÖ Enhanced SpeedStep ®Ó tèi −u tèc ®é lµm viÖc nh»m tiÕt kiÖm ®iÖn n¨ng. C¸c bé xö lý 6x2 cã thªm c«ng nghÖ ¶o ho¸ (Virtualization Technology). Prescott 2M cã mét sè tèc ®é nh− P4 HT 620 (2,8GHz), 630 (3,0GHz), 640 (3,2GHz), 650 (3,4GHz), 660, 662 (3,6GHz) vµ 670, 672 (3,8GHz).

Prescott Cedar Mill (n¨m 2006) hç trî c¸c tËp lÖnh vµ tÝnh n¨ng t−¬ng tù Prescott 2M nh−ng kh«ng tÝch hîp Virtualization Technology. Cedar Mill ®−îc s¶n xuÊt trªn c«ng nghÖ 65nm nªn tiªu thô ®iÖn n¨ng thÊp h¬n, to¶ nhiÖt Ýt h¬n c¸c dßng tr−íc, gåm 631 (3,0GHz), 641 (3,2GHz), 651 (3,4GHz) vµ 661 (3,6GHz).

−−−− Pentium D (n¨m 2005) m· Smithfield 8xx, lµ bé xö lý lâi kÐp (dual core) ®Çu tiªn cña Intel, ®−îc c¶i tiÕn tõ Pentium IV Prescott nªn còng gÆp mét sè h¹n chÕ nh− hiÖn t−îng th¾t cæ chai do b¨ng th«ng ë møc 800MHz (400MHz cho mçi lâi), ®iÖn n¨ng tiªu thô cao, to¶ nhiÒu nhiÖt. Smithfield ®−îc s¶n xuÊt trªn c«ng nghÖ 90nm, cã 230 triÖu transistor, bé nhí ®Öm L2 2MB (2x1MB, mçi lâi dïng riªng 1MB), bus hÖ thèng 533MHz ( Smithfield 805) hoÆc 800MHz, socket 775LGA. Ngoµi c¸c tËp lÖnh MMX, SSE, SSE2, SSE3, Smithfield ®−îc trang bÞ tËp lÖnh më réng EMT64 hç trî ®¸nh ®Þa chØ nhí 64 bit, c«ng nghÖ Enhanced SpeedStep (830, 840). Mét sè bé xö lý thuéc dßng nµy nh− Pentium D 805 (2,66GHz), 820 (2,8GHz), 830 (3,0GHz), 840 (3,2GHz).

Còng sö dông vi kiÕn tróc NetBurst, Pentium D m· Presler 9xx ®−îc Intel thiÕt kÕ míi trªn c«ng nghÖ 65nm, 376 triÖu transistor, bé nhí ®Öm L2 4MB (2x2MB), hiÖu n¨ng cao h¬n, nhiÒu tÝnh n¨ng míi vµ Ýt tèn ®iÖn n¨ng h¬n Smithfield. Pentium D 915 vµ 920 cã tèc ®é 2,8GHz, 925 vµ 930 (3,0GHz), 935 vµ 940 (3,2GHz), 945 vµ 950 (3,4GHz), 960 (3,6GHz). Presler dßng 9x0 cã hç trî c«ng nghÖ ¶o ho¸ Virtualization Technology.

− Pentium Extreme Edition (n¨m 2005) lµ bé xö lý lâi kÐp dµnh cho game thñ vµ ng−êi dïng cao cÊp. Pentium EE sö dông nh©n Smithfield, Presler cña Pentium D trong ®ã Pentium EE Smithfield sö dông c«ng nghÖ 90nm, bé nhí ®Öm L2 ®−îc më réng ®Õn 2MB (2×1MB), hç trî tËp lÖnh MMX, SSE, SSE2, SSE3, c«ng nghÖ HT, Enhanced Intel SpeedStep Technology (EIST) vµ EM64T. Pentium 840 EE (3,20GHz, bus hÖ thèng 800MHz, socket 775LGA) lµ mét trong nh÷ng BXL thuéc dßng nµy. Pentium EE Presler sö dông c«ng nghÖ 65nm, bé nhí ®Öm L2 ®−îc më réng

Page 35: vµ cÊu tróc m¸y tÝnh€¦ ·

35

®Õn 4MB (2×2MB), hç trî tËp lÖnh MMX, SSE, SSE2, SSE3, c«ng nghÖ HT, Enhanced Intel SpeedStep Technology (EIST), EM64T vµ Virtualization Technology. Mét sè bé xö lý thuéc dßng nµy lµ Pentium EE 955 (3,46GHz) vµ Pentium EE 965 (3,73GHz) cã bus hÖ thèng 1066MHz, Socket 775.

−−−− C¸c bé xö lý 64 bit, kiÕn tróc Core: T¹i diÔn ®µn IDF ®Çu n¨m 2006, Intel ®· giíi thiÖu kiÕn tróc Intel Core víi 5 c¶i tiÕn quan träng lµ kh¶ n¨ng më réng thùc thi ®éng (Wide Dynamic Execution), tÝnh n¨ng qu¶n lý ®iÖn n¨ng th«ng minh (Intelligent Power Capability), chia sÎ bé nhí ®Öm linh ho¹t (Advanced Smart Cache), truy xuÊt bé nhí th«ng minh (Smart Memory Access) vµ t¨ng tèc ph−¬ng tiÖn sè tiªn tiÕn (Advanced Digital Media Boost). Nh÷ng c¶i tiÕn nµy sÏ t¹o ra nh÷ng BXL m¹nh h¬n, kh¶ n¨ng tÝnh to¸n nhanh h¬n vµ gi¶m møc tiªu thô ®iÖn n¨ng, to¶ nhiÖt Ýt h¬n so víi kiÕn tróc NetBurst.

Intel Core 2 Duo lµ bé xö lý lâi kÐp s¶n xuÊt trªn c«ng nghÖ 65nm, hç trî SIMD instructions, c«ng nghÖ Virtualization Technology cho phÐp ch¹y cïng lóc nhiÒu hÖ ®iÒu hµnh, t¨ng c−êng b¶o vÖ hÖ thèng tr−íc sù tÊn c«ng cña virus (Execute Disable Bit), tèi −u tèc ®é nh»m tiÕt kiÖm ®iÖn n¨ng (Enhanced Intel SpeedStep Technology), qu¶n lý m¸y tÝnh tõ xa (Intel Active Management Technology). Ngoµi ra, cßn hç trî c¸c tËp lÖnh MMX, SSE, SSE2, SSE3, SSSE3. Core 2 Duo (tªn m· Conroe) cã 291 triÖu transistor, bé nhí ®Öm L2 4MB, bus hÖ thèng 1066MHz. Mét sè bé xö lý thuéc dßng nµy lµ E6600 (2,4GHz), E6700 (2,66GHz). Core 2 Duo (tªn m· Allendale) E6300 (1,86GHz), E6400 (2,13GHz) cã 167 triÖu transistor, bé nhí ®Öm L2 2MB, bus hÖ thèng 1066MHz.

Core 2 Extreme lµ bé xö lý lâi kÐp dµnh cho game thñ sö dông kiÕn tróc Core, cã nhiÒu ®Æc ®iÓm gièng víi bé xö lý Core 2 nh− c«ng nghÖ s¶n xuÊt 65nm, hç trî c¸c c«ng nghÖ míi Enhanced Intel SpeedStep Technology, Intel x86−64, Execute Disable Bit, Intel Active Management, Virtualization Technology, Intel Trusted Execution Technology... c¸c tËp lÖnh MMX, SSE, SSE2, SSE3, SSSE3. Core 2 Extreme (tªn m· Conroe XE) xuÊt hiÖn th¸ng 7 n¨m 2006 víi ®¹i diÖn X6800 tèc ®é 2,93GHz, bé nhí ®Öm L2 ®Õn 4MB, bus hÖ thèng 1066MHz, Socket 775LGA. Cuèi n¨m 2006, con ®−êng phÝa tr−íc cña BXL tiÕp tôc réng më khi Intel giíi thiÖu c¸c bé xö lý bèn nh©n (quad core) nh− Core 2 Extreme QX6700, Core 2 Quad Q6300, Q6400, Q6600.

Page 36: vµ cÊu tróc m¸y tÝnh€¦ ·

36

C©u hái vµ bµi tËp ch−¬ng 2 1.1.1.1. Mét bé vi xö lý cã ®é réng bus ®Þa chØ lµ m = 32 cã thÓ qu¶n lý bé nhí víi

dung l−îng tèi ®a lµ bao nhiªu?

2.2.2.2. T×m ®Þa chØ vËt lý t¹o bëi cÆp thanh ghi CS:IP biÕt néi dung CS lµ 001FH; néi dung IP lµ 0006H.

3.3.3.3. Cho ®Þa chØ logic cña mét « nhí lµ 02F0H:0006H. T×m ®Þa chØ vËt lý t−¬ng øng.

4.4.4.4. Nªu sù kh¸c nhau c¬ b¶n gi÷a ng¾t kh«ng che ®−îc vµ ng¾t che ®−îc.

5.5.5.5. Gi¶i thÝch c¬ chÕ ho¹t ®éng cña c«ng nghÖ HT.

6.6.6.6. Sö dông vi m¹ch chèt d÷ liÖu 74HC573, vÏ m¹ch t¸ch ®Þa chØ ra khái bus ®a hîp ®Þa chØ/d÷ liÖu.

7.7.7.7. Nªu ý nghÜa c¸c ch©n INTR, TEST, HOLD, HLDA cña 8086.

Page 37: vµ cÊu tróc m¸y tÝnh€¦ ·

37

Ch−¬ng 3. Ch−¬ng 3. Ch−¬ng 3. Ch−¬ng 3. LËp tr×nh hîp ng÷

3.1. Tæng quan vÒ lËp tr×nh hîp ng÷ LËp tr×nh hîp ng÷ (Assembly) lµ mét ng«n ng÷ lËp tr×nh bËc thÊp, ng«n

ng÷ nµy sö dông chÝnh c¸c c©u lÖnh trong tËp lÖnh cña bé vi xö lý t−¬ng øng ®Ó viÕt nªn mét ch−¬ng tr×nh. LËp tr×nh hîp ng÷ cã thÓ t×m thÊy trong c¸c ch−¬ng tr×nh viÕt cho c¸c hÖ thèng ®o l−êng, ®iÒu khiÓn sö dông c¸c bé vi xö lý nhá.

¦u ®iÓm cña lËp tr×nh hîp ng÷ lµ tÝnh hiÖu qu¶ v× ch−¬ng tr×nh viÕt b»ng hîp ng÷ ch¹y nhanh vµ chiÕm dung l−îng bé nhí nhá h¬n so víi c¸c ch−¬ng tr×nh viÕt b»ng c¸c ng«n ng÷ bËc cao do tr×nh dÞch chØ cÇn qua mét b−íc lµ cã thÓ biªn dÞch c¸c ch−¬ng tr×nh nµy ra m· m¸y, vµ lËp tr×nh hîp ng÷ cho phÐp ®äc hoÆc ghi trùc tiÕp vµo c¸c « nhí, thanh ghi hay c¸c cæng vµo/ra mét c¸ch dÔ dµng.

Ng−êi lËp tr×nh th−êng sö dông ng«n ng÷ bËc cao ®Ó viÕt ch−¬ng tr×nh h¬n lµ sö dông hîp ng÷ v× mét ch−¬ng tr×nh viÕt b»ng hîp ng÷ dµi nªn khã kiÓm so¸t lçi, khã b¶o tr× h¬n so víi mét ch−¬ng tr×nh t−¬ng tù viÕt b»ng ng«n ng÷ bËc cao. Ch−¬ng tr×nh viÕt b»ng hîp ng÷ chØ thùc thi ®−îc trªn hÖ thèng m¸y t−¬ng øng, kh«ng thÓ thùc thi trªn hÖ thèng m¸y cã kiÕn tróc vµ tËp lÖnh kh¸c.

HiÖn nay, rÊt nhiÒu ng«n ng÷ bËc cao cho phÐp nhóng c¸c ch−¬ng tr×nh con b»ng hîp ng÷. ChØ khi nghiªn cøu hîp ng÷, b¹n míi thùc sù hiÓu ®−îc m¸y tÝnh.

Ch−¬ng nµy sÏ giíi thiÖu lËp tr×nh hîp ng÷ cho m¸y IBM PC hoÆc t−¬ng thÝch víi m¸y IBM PC v× m¸y IBM PC cã cÊu tróc kh¸ tiªu biÓu cña mét hÖ vi xö lý. Sau khi ®äc xong ch−¬ng nµy b¹n cã thÓ dÔ dµng nghiªn cøu hîp ng÷ trªn c¸c lo¹i m¸y kh¸c.

3.1.1. Có ph¸p cña hîp ng÷

Khi sö dông bÊt kú mét ng«n ng÷ lËp tr×nh nµo ta ®Òu ph¶i n¾m ®−îc có ph¸p cña ng«n ng÷ ®ã. C¸c ch−¬ng tr×nh viÕt b»ng hîp ng÷ nÕu viÕt ®óng có ph¸p sÏ ®−îc tr×nh dÞch hîp ng÷ (MASM) dÞch ra m· m¸y, do ®ã chóng ph¶i ®−îc viÕt sao cho phï hîp víi c¸c khu«n mÉu cña tr×nh biªn dÞch. Hîp ng÷ kh«ng ph©n biÖt ch÷ hoa, ch÷ th−êng.

Mét ch−¬ng tr×nh hîp ng÷ bao gåm c¸c dßng lÖnh, mçi lÖnh ®−îc viÕt trªn mét dßng. Mét dßng lÖnh cã thÓ lµ lÖnh thËt hoÆc h−íng dÉn biªn dÞch.

Page 38: vµ cÊu tróc m¸y tÝnh€¦ ·

38

LÖnh thËt sÏ ®−îc hîp ng÷ dÞch ra m· m¸y cßn h−íng dÉn biªn dÞch th× kh«ng ®−îc dÞch ra m· m¸y mµ ®Ó chØ dÉn cho tr×nh dÞch thùc hiÖn c«ng viÖc, ch¼ng h¹n dµnh chç cho mét biÕn nhí hay khai b¸o mét ch−¬ng tr×nh con.

Mçi mét lÖnh bao gåm cã bèn tr−êng:

Tªn: M·_lÖnh To¸n_h¹ng; Chó_gi¶i

C¸c tr−êng ph¶i ®−îc c¸ch nhau Ýt nhÊt mét ký tù trèng hoÆc TAB. Mét lÖnh kh«ng nhÊt thiÕt ph¶i cã ®Çy ®ñ c¶ bèn tr−êng, vÝ dô tr−êng tªn hoÆc tr−êng chó gi¶i cã thÓ bá qua nh−ng c¸c tr−êng ph¶i xuÊt hiÖn theo ®óng theo thø tù nh− trªn.

VÝ dô mét lÖnh:

NHAP: MOV AX,0; ChuyÓn 0 vµo thanh ghi AX

Trong vÝ dô nµy, tr−êng tªn lµ NHAP, m· lÖnh lµ MOV (lÖnh dÞch chuyÓn d÷ liÖu), to¸n h¹ng lµ AX vµ 0, chó gi¶i lµ ChuyÓn 0 vµo thanh ghi AX.

3.1.1.1. Tr−êng tªn

Tr−êng tªn ®−îc sö dông lµm nh·n lÖnh, tªn c¸c thñ tôc vµ tªn biÕn. Tªn sÏ ®−îc ch−¬ng tr×nh dÞch g¸n b»ng c¸c ®Þa chØ cô thÓ cña « nhí. C¸c quy ®Þnh khi ®Æt tªn:

− Kh«ng ®−îc dµi qu¸ 31 ký tù.

− Bao gåm c¸c ch÷ c¸i, ch÷ sè vµ mét sè ký tù ®Æc biÖt (! @ % _ $).

− Kh«ng ®−îc ®øng ®Çu b»ng mét ch÷ sè.

− Kh«ng chøa kho¶ng trèng hoÆc dÊu g¹ch ngang.

− NÕu cã dÊu (.) th× ph¶i ®Æt ë vÞ trÝ ®Çu tiªn cña tªn.

− Kh«ng ph©n biÖt ch÷ th−êng, ch÷ hoa.

Tr−êng tªn c¸ch víi tr−êng m· lÖnh bëi dÊu (:)

VÝ dô mét sè tªn hîp lÖ:

BAITAP1

BAITAP_1

@BAITAP

$100

.BAITAP

BAI?

Page 39: vµ cÊu tróc m¸y tÝnh€¦ ·

39

VÝ dô mét sè tªn kh«ng hîp lÖ:

BAI TAP

BAITAP−1

1BAI

BAI.1

BAI&1

; Chøa kho¶ng trèng

; Chøa dÊu g¹ch ngang

; B¾t ®Çu b»ng mét ch÷ sè

; DÊu chÊm kh«ng ®øng ®Çu

; Chøa mét ký tù kh«ng hîp lÖ

3.1.1.2. Tr−êng m· lÖnh

Tr−êng m· lÖnh lµ c¸c ký hiÖu gîi nhí biÓu thÞ chøc n¨ng thao t¸c nh− MOV, ADD, SHL vµ ®−îc dÞch ra m· m¸y.

3.1.1.3. Tr−êng to¸n h¹ng

Trong mçi lÖnh, to¸n h¹ng x¸c ®Þnh d÷ liÖu sÏ ®−îc c¸c lÖnh t¸c ®éng lªn. Mét lÖnh cã thÓ kh«ng cã, cã mét hoÆc cã hai to¸n h¹ng. VÝ dô:

NOP

DEC CX

MOV AX,1

; Kh«ng cã to¸n h¹ng nµo

; Cã mét to¸n h¹ng lµ CX

; Cã hai to¸n h¹ng lµ AX vµ 1

Chó ý: Trong lÖnh cã hai to¸n h¹ng th× hai to¸n h¹ng ph¶i c¸ch nhau bëi dÊu ph¶y (,). To¸n h¹ng ®Çu lµ to¸n h¹ng ®Ých, n¬i chøa kÕt qu¶, to¸n h¹ng thø hai lµ to¸n h¹ng nguån, c¸c lÖnh th−êng kh«ng lµm thay ®æi to¸n h¹ng nguån. C¸c to¸n h¹ng cña lÖnh ph¶i cã cïng ®é lín hay cïng kiÓu th× míi hîp lÖ. VÝ dô:

MOV AX,BX

MOV AX,BL

; Hai to¸n h¹ng cã cïng kiÓu

; Hai to¸n h¹ng kh«ng cïng kiÓu

3.1.1.4. Tr−êng chó gi¶i

Tr−êng chó gi¶i ®−îc sö dông ®Ó gi¶i thÝch môc ®Ých sö dông lÖnh cña ch−¬ng tr×nh gióp ng−êi ®äc dÔ hiÓu. Lêi gi¶i thÝch c¸ch víi tr−êng to¸n h¹ng dÊu chÊm ph¶y (;). Ch−¬ng tr×nh dÞch bá qua khi dÞch ®Õn dÊu chÊm ph¶y, v× thÕ ng−êi ta hay sö dông dÊu nµy ®Ó bá qua mét dßng lÖnh nµo ®ã nh−:

Khi viÕt ch−¬ng tr×nh ta kh«ng nªn ®−a ra mét lêi chó gi¶i nh−:

MOV CX,5 ; ChuyÓn 5 vµo thanh ghi CX

; MOV CX,DX

Page 40: vµ cÊu tróc m¸y tÝnh€¦ ·

40

Gi¶ sö muèn khëi t¹o cho mét vßng lÆp thùc hiÖn n¨m lÇn, ta chó gi¶i nh− sau:

MOV CX,5 ; Khëi t¹o ®Õm b»ng 5

3.1.2. D÷ liÖu ch−¬ng tr×nh

Trong mét ch−¬ng tr×nh hîp ng÷, d÷ liÖu cã thÓ biÓu diÔn d−íi d¹ng nhÞ ph©n, thËp ph©n, hexa hoÆc ký tù. Ch−¬ng tr×nh dÞch sÏ dÞch tÊt c¶ c¸c d¹ng d÷ liÖu kh¸c nhau thµnh c¸c sè nhÞ ph©n. D÷ liÖu ë hÖ nµo th× ph¶i ®−îc viÕt kÌm ®u«i ë hÖ ®ã.

Mét sè thuéc hÖ nhÞ ph©n lµ mét chuçi c¸c bit kÕt thóc b»ng ch÷ ‘B’ hay ‘b’.

VÝ dô: 10110100B.

Mét sè thuéc hÖ hexa lµ mét chuçi c¸c sè b¾t ®Çu lµ mét sè thËp ph©n vµ kÕt thóc b»ng ch÷ ‘H’ hay ‘h’. VÝ dô: 0AH hoÆc 12C5H. NÕu mét sè b¾t ®Çu b»ng mét ch÷ c¸i tõ A ®Õn F hay tõ a ®Õn f th× ph¶i thªm 0 vµo tr−íc sè ®ã ®Ó ch−¬ng tr×nh dÞch kh«ng nhÇm sang mét tªn hay mét nh·n.

Riªng ®èi víi mét sè thuéc hÖ thËp ph©n cã thÓ kÕt thóc sè ®ã b»ng ch÷ ‘D’ hay ‘d’ (hoÆc kh«ng cã). VÝ dô: 12 hay 12D lµ nh− nhau.

C¸c ký tù hoÆc chuçi ký tù ph¶i ®−îc ®Æt trong dÊu nh¸y ®¬n hoÆc nh¸y kÐp. VÝ dô: “a”, “Chao ban”. C¸c ký tù sÏ ®−îc dÞch ra m· ASCII cña chóng, ch−¬ng tr×nh dÞch sÏ kh«ng ph©n biÖt gi÷a “A” víi 41H, 1000001B hoÆc 65.

3.1.3. BiÕn vµ h»ng

Còng gièng nh− c¸c ng«n ng÷ bËc cao, trong hîp ng÷ mçi biÕn cã mét kiÓu d÷ liÖu vµ ®−îc ch−¬ng tr×nh g¸n cho mét ®Þa chØ nhÊt ®Þnh trong bé nhí. §Ó ®Þnh nghÜa c¸c kiÓu d÷ liÖu ta th−êng dïng c¸c lÖnh gi¶ ®−îc liÖt kª d−íi ®©y. Mçi to¸n tö gi¶ cã thÓ dïng ®Ó thiÕt lËp mét hay nhiÒu d÷ liÖu cña kiÓu ®· ®−îc ®−a ra.

DB

DW

DD

DQ

DT

§Þnh nghÜa 1 byte

§Þnh nghÜa 1 tõ

§Þnh nghÜa tõ kÐp

§Þnh nghÜa 4 tõ

§Þnh nghÜa 10 byte

3.1.3.1. BiÕn kiÓu byte

Mét biÕn kiÓu byte ®−îc ®Þnh nghÜa nh− sau:

Page 41: vµ cÊu tróc m¸y tÝnh€¦ ·

41

Tªn DB gi¸_trÞ_khëi_t¹o

VÝ dô: X1 DB 0AH

VÝ dô trªn ®Þnh nghÜa biÕn byte cã tªn lµ X1 vµ dµnh 1 byte trong bé nhí ®Ó chøa gi¸ trÞ cña biÕn, biÕn cã gi¸ trÞ khëi ®Çu lµ 0AH.

NÕu ®Æt dÊu chÊm hái (?) ë vÞ trÝ gi¸ trÞ khëi t¹o cña biÕn X2 th× biÕn X2 còng ®−îc dµnh mét byte trong bé nhí nh−ng kh«ng ®−îc g¸n gi¸ trÞ khëi ®Çu.

Gi¸ trÞ khëi t¹o cho biÕn kiÓu byte tõ −128 ®Õn 127 víi kiÓu cã dÊu vµ tõ 0 ®Õn 255 víi kiÓu kh«ng dÊu.

3.1.3.2. BiÕn kiÓu tõ

Khi khai b¸o, mét biÕn kiÓu tõ sÏ ®−îc dµnh hai byte nhí ®Ó chøa gi¸ trÞ cña biÕn.

Tªn DB gi¸_trÞ_khëi_t¹o

VÝ dô: W1 DW 0FFFH

W2 DW ?

VÝ dô trªn ®Þnh nghÜa mét biÕn kiÓu tõ cã tªn lµ W1 vµ gi¸ trÞ khëi ®Çu lµ 0FFFH.

NÕu ®Æt dÊu chÊm hái (?) ë vÞ trÝ gi¸ trÞ khëi t¹o cña biÕn W2 th× biÕn ®ã kh«ng ®−îc g¸n gi¸ trÞ khëi ®Çu. Gi¸ trÞ khëi t¹o cho biÕn kiÓu tõ trong kho¶ng − 32768 ®Õn 32767 víi kiÓu cã dÊu vµ trong kho¶ng 0 ®Õn 65535 ®èi víi kiÓu kh«ng dÊu.

3.1.3.3. BiÕn kiÓu m¶ng

BiÕn m¶ng lµ mét tËp hîp nhiÒu phÇn tö cã cïng mét kiÓu gi¸ trÞ. Trong lËp tr×nh hîp ng÷, m¶ng chØ lµ chuçi c¸c byte nhí hoÆc c¸c tõ nhí.

VÝ dô ®Ó ®Þnh nghÜa mét m¶ng bèn byte cã tªn lµ MANG vµ cã gi¸ trÞ lÇn l−ît lµ 0, 1, 2, 3 ta khai b¸o nh− sau:

MANG DB 0, 1, 2, 3

Trong vÝ dô nµy, tªn MANG ®−îc g¸n cho byte ®Çu tiªn cã gi¸ trÞ lµ 0, MANG+1 ®−îc g¸n cho byte thø hai cã gi¸ trÞ lµ 1, MANG+2 ®−îc g¸n cho byte thø ba cã gi¸ trÞ lµ 2 vµ MANG+3 ®−îc g¸n cho byte thø t− cã gi¸ trÞ lµ 3.

Mét m¶ng kiÓu tõ còng cã thÓ ®−îc ®Þnh nghÜa t−¬ng tù, vÝ dô:

MANG DW 0, 1, 2, 3

Page 42: vµ cÊu tróc m¸y tÝnh€¦ ·

42

NÕu phÇn tö ®Çu tiªn cña m¶ng b¾t ®Çu t¹i ®Þa chØ 0200H trong bé nhí th× c¸c phÇn tö cßn l¹i cña m¶ng n»m trong c¸c « nhí cã ®Þa chØ nh− sau:

PhÇn töPhÇn töPhÇn töPhÇn tö §Þa chاÞa chاÞa chاÞa chØ Gi¸ trÞ (néi dung)Gi¸ trÞ (néi dung)Gi¸ trÞ (néi dung)Gi¸ trÞ (néi dung)

MANG

MANG+1

MANG+2

MANG+3

0200H

0202H

0204H

0206H

0

1

2

3

Khi chóng ta muèn khëi ®Çu cho c¸c phÇn tö cña m¶ng cïng mét gi¸ trÞ ta dïng to¸n tö DUP. VÝ dô: M1 DW 100 DUP(0)

VÝ dô trªn ®Þnh nghÜa mét biÕn m¶ng cã tªn lµ M1 ®−îc dµnh 200 byte trong bé nhí ®Ó chøa 100 phÇn tö, mçi phÇn tö cña m¶ng ®−îc khëi t¹o gi¸ trÞ ®Çu lµ 0.

BiÕn kiÓu chuçi ký tù cã thÓ coi lµ mét tr−êng hîp ®Æc biÖt cña biÕn m¶ng. Mét chuçi ký tù còng cã thÓ ®−îc khëi t¹o b»ng mét biÕn m¶ng.

VÝ dô: M2 DB ‘Hello’

t−¬ng ®−¬ng víi: M2 DB 48H,65H,6CH,6CH,6FH

3.1.3.4. H»ng cã tªn

C¸c h»ng trong hîp ng÷ cã thÓ lµ kiÓu sè hay kiÓu ký tù vµ th−êng ®−îc g¸n tªn. Khi g¸n tªn cho h»ng ng−êi ta sö dông to¸n tö gi¶ EQU (equate), có ph¸p nh− sau:

Tªn EQU h»ng_sè

VÝ dô: LF EQU 0AH

CR EQU 0DH

Trong vÝ dô trªn, m· ASCII cña ký tù xuèng dßng (0AH) vµ ký tù trë vÒ ®Çu dßng (0DH) ®−îc g¸n tªn lµ LF vµ CR. H»ng sè còng cã thÓ lµ mét chuçi ký tù.

VÝ dô hai lÖnh sau: TRUYEN EQU “ME VANG NHA”

TR DB TRUYEN

t−¬ng ®−¬ng víi lÖnh: TR DB “ME VANG NHA”

3.1.4. Khung cña mét ch−¬ng tr×nh hîp ng÷

Mét ch−¬ng tr×nh hîp ng÷ dÞch ra ®u«i *.exe cã d¹ng nh− sau:

Page 43: vµ cÊu tróc m¸y tÝnh€¦ ·

43

.model kiÓu_bé_nhí

.stack dung_l−îng_ng¨n_xÕp

.data

; khai b¸o c¸c h»ng, biÕn sè

.code

main proc

; c¸c lÖnh ch−¬ng tr×nh chÝnh

main endp

; c¸c hµm vµ thñ tôc

end main

3.1.4.1. Khai b¸o kiÓu bé nhí (.model)

C¸c ch−¬ng tr×nh kh¸c nhau ®ßi hái cã kÝch th−íc bé nhí kh¸c nhau. Mét ch−¬ng tr×nh dµi sÏ chiÕm dung l−îng bé nhí lín cßn ch−¬ng tr×nh ng¾n sÏ chiÕm dung l−îng bé nhí nhá. Bé nhí th−êng ®−îc tæ chøc thµnh c¸c vïng nhí kh¸c nhau ®Ó chøa d÷ liÖu, chøa m· lÖnh vµ vïng nhí dïng lµm ng¨n xÕp. B¶ng 3.1 m« t¶ ®Çy ®ñ c¸c kiÓu bé nhí:

B¶ng 3.1. M« t¶ khai b¸o c¸c kiÓu bé nhí

KiÓu kÝch th−ícKiÓu kÝch th−ícKiÓu kÝch th−ícKiÓu kÝch th−íc M« t¶M« t¶M« t¶M« t¶

Tiny M· lÖnh vµ d÷ liÖu n»m trong mét ®o¹n

Small M· lÖnh n»m trong mét ®o¹n, d÷ liÖu n»m trong mét ®o¹n

Medium M· lÖnh kh«ng n»m trong mét ®o¹n, d÷ liÖu n»m trong mét ®o¹n

Compact M· lÖnh n»m trong mét ®o¹n, d÷ liÖu kh«ng n»m trong mét ®o¹n

Large M· lÖnh kh«ng n»m trong mét ®o¹n, d÷ liÖu kh«ng n»m trong mét ®o¹n, kh«ng cã m¶ng nµo lín h¬n 64KB.

Huge M· lÖnh kh«ng n»m trong mét ®o¹n, d÷ liÖu kh«ng n»m trong mét ®o¹n, c¸c m¶ng cã thÓ lín h¬n 64KB.

3.1.4.2. Khai b¸o kÝch th−íc ng¨n xÕp (.stack)

KÝch th−íc khi khai b¸o ng¨n xÕp sÏ quyÕt ®Þnh sè byte dµnh cho ng¨n xÕp.

VÝ dô: NÕu khai b¸o: .stack 100H ta sÏ cã 256 byte dµnh cho ng¨n xÕp. NÕu kh«ng khai b¸o th× ch−¬ng tr×nh sÏ tù g¸n cho ng¨n xÕp dung l−îng lµ 1Kbyte.

Page 44: vµ cÊu tróc m¸y tÝnh€¦ ·

44

3.1.4.3. Khai b¸o ®o¹n d÷ liÖu (.data)

§o¹n d÷ liÖu chøa toµn bé ®Þnh nghÜa cho c¸c biÕn sè, h»ng sè cña ch−¬ng tr×nh. VÝ dô ta cã thÓ khai b¸o c¸c biÕn trong ®o¹n d÷ liÖu nh− sau:

.data

M2 DB ‘Hello!$’

LF EQU 0AH

CR EQU 0DH

3.1.4.4. Khai b¸o ®o¹n m· (.code)

§o¹n m· chøa toµn bé c¸c c©u lÖnh cña ch−¬ng tr×nh chÝnh vµ c¸c ch−¬ng tr×nh con. C¸c lÖnh trong ®o¹n m· ph¶i ®−îc tæ chøc mét c¸ch hîp lý, ®óng có ph¸p vµ ®−îc ch−¬ng tr×nh dÞch chuyÓn sang ng«n ng÷ m¸y.

D−íi ®©y lµ vÝ dô vÒ mét ch−¬ng tr×nh hiÓn thÞ dßng ch÷ "Hello world, I’m learning Assembly !!!" lªn mµn h×nh:

.model small

.stack 100H

.data

message db "Hello world, I’m learning Assembly !!!$"

.code

main proc

mov AX,@data

mov DS,AX

mov AH,9

mov DX,message

int 21H

mov AH,4CH

int 21H

main endp

end main

3.1.5. C¸ch t¹o vµ ch¹y mét ch−¬ng tr×nh hîp ng÷

§Ó t¹o vµ ch¹y mét ch−¬ng tr×nh hîp ng÷ trªn m¸y IBM PC ta thùc hiÖn c¸c b−íc nh− sau:

Page 45: vµ cÊu tróc m¸y tÝnh€¦ ·

45

B−íc 1: So¹n th¶o ch−¬ng tr×nh sö dông c¸c phÇn mÒm so¹n th¶o: NCedit, SK hoÆc c¸c chøc n¨ng so¹n th¶o cña Turbo Pascal ®Ó t¹o ra mét ch−¬ng tr×nh gèc. File ch−¬ng tr×nh nµy ®−îc g¸n ®u«i .ASM.

B−íc 2: Dïng tr×nh dÞch MASM ®Ó dÞch file .ASM ra m· m¸y d−íi d¹ng file .OBJ. NÕu trong b−íc dÞch cã lçi có ph¸p ta ph¶i quay l¹i b−íc 1 ®Ó söa l¹i ch−¬ng tr×nh gèc.

B−íc 3: Dïng ch−¬ng tr×nh LINK ®Ó nèi mét hay nhiÒu tÖp OBJ l¹i víi nhau thµnh mét tÖp ch−¬ng tr×nh víi ®u«i .exe.

B−íc 4: Cho ch¹y ch−¬ng tr×nh võa dÞch.

3.2. C¸c chÕ ®é ®Þa chØ cña hä vi xö lý 80×86 ChÕ ®é ®Þa chØ (addressing mode) lµ c¸ch ®Ó vi xö lý t×m thÊy to¸n h¹ng

cña lÖnh khi ho¹t ®éng. Mçi bé vi xö lý cã thÓ cã nhiÒu chÕ ®é ®Þa chØ, c¸c chÕ ®é ®Þa chØ ®ã ®−îc x¸c ®Þnh ngay tõ khi chÕ t¹o bé vi xö lý. Hä vi xö lý 80x86 cã 7 chÕ ®é ®Þa chØ.

3.2.1. ChÕ ®é ®Þa chØ thanh ghi (Register Addressing Mode)

ChÕ ®é ®Þa chØ thanh ghi lµ chÕ ®é ®Þa chØ mµ c¸c to¸n h¹ng cña lÖnh lµ c¸c thanh ghi chøa d÷ liÖu cÇn thao t¸c, v× thÕ khi thùc hiÖn c¸c lÖnh ë chÕ ®é nµy cã thÓ ®¹t tèc ®é truy cËp nhanh h¬n so víi c¸c lÖnh truy cËp tíi bé nhí. VÝ dô:

mov AX,BX ;ChuyÓn néi dung cña BX vµo AX

mov DL,AL ;ChuyÓn néi dung cña AL vµo DL

mov SI,DX ;ChuyÓn néi dung cña DX vµo SI

mov SP,BP ;ChuyÓn néi dung cña BP vµo SP

add AL,BH ;Céng néi dung cña BH víi AL,kÕt qu¶ l−u trong AL

Trong c¸c chÕ ®é ®Þa chØ, to¸n h¹ng ®Ých vµ nguån ph¶i cã cïng ®é lín. VÝ dô lÖnh sau ®©y to¸n h¹ng nguån lµ mét thanh ghi 16 bit, to¸n h¹ng ®Ých lµ mét thanh ghi 8 bit:

MOV CL,BX ;LÖnh nµy sÏ b¸o lçi v× ®Ých vµ nguån kh«ng cïng kiÓu

3.2.2. ChÕ ®é ®Þa chØ tøc thêi (Immediate Addressing Mode)

Trong chÕ ®é ®Þa chØ nµy, to¸n h¹ng ®Ých lµ mét thanh ghi hay « nhí, to¸n h¹ng nguån lµ h»ng sè. ChÕ ®é ®Þa chØ nµy cho phÐp n¹p d÷ liÖu cÇn thao t¸c vµo bÊt kú thanh ghi nµo (trõ thanh ghi ®o¹n) hoÆc « nhí nµo n»m trong ®o¹n d÷ liÖu DS. VÝ dô:

Page 46: vµ cÊu tróc m¸y tÝnh€¦ ·

46

mov AH,12 ;chuyÓn 12 vµo thanh ghi AH

mov DL,0AH ;chuyÓn 10 (0AH) vµo thanh ghi DL

mov AH,01000010B ; chuyÓn 01000010B (66) vµo thanh ghi AH

mov CL,′A′ ; chuyÓn ′A′ (65) vµo thanh ghi CL

mov [BX],100 ; chuyÓn 100 vµo « nhí cã ®Þa chØ DS:BX

H»ng sè cã thÓ ®−îc biÓu diÔn d−íi d¹ng thËp ph©n, nhÞ ph©n, hexa hoÆc d−íi d¹ng ký tù.

3.2.3. ChÕ ®é ®Þa chØ trùc tiÕp (Direct Addressing Mode)

ChÕ ®é ®Þa chØ trùc tiÕp lµ chÕ ®é ®Þa chØ mµ mét to¸n h¹ng cña lÖnh lµ thanh ghi, to¸n h¹ng cßn l¹i chøa ®Þa chØ lÖch cña « nhí chøa d÷ liÖu. VÝ dô:

MOV AL, [012H];chuyÓn néi dung « nhí DS:[012H]vµo AL

MOV AL, ES:[22];chuyÓn néi dung « nhí ES:[012H]vµo AL

MOV [16H], AX ;chuyÓn néi dung cña AX vµo hai « nhí

;liªn tiÕp cã ®Þa chØ DS:[16H]vµ DS:[17H]

MOV BX,[5678H];chuyÓn néi dung cña hai « nhí cã ®Þa

;chØ DS:[5678H]vµ DS:[5679h]vµo BX

§o¹n d÷ liÖu DS

§Þa chØ lÖch D÷ liÖu

0 1 AL

2 −56 + 12H …

12H −56

H×nh 3.1. M« t¶ lÖnh MOV AL,[012H]

Page 47: vµ cÊu tróc m¸y tÝnh€¦ ·

47

§o¹n d÷ liÖu phô ES

§Þa chØ lÖch D÷ liÖu

0 1 AL

2 2F0H +22 …

22 2F0H

H×nh 3.2. M« t¶ lÖnh MOV AL,ES:[22]

§o¹n d÷ liÖu DS

§Þa chØ lÖch D÷ liÖu

0 1 BX

2 45FFH + 5678H …

5678H 0FFH

5679H 45H

H×nh 3.3. M« t¶ lÖnh MOV BX,[5678H]

3.2.4. ChÕ ®é ®Þa chØ gi¸n tiÕp qua thanh ghi (Register Direct Addressing Mode)

Trong chÕ ®é ®Þa chØ nµy mét to¸n h¹ng ph¶i lµ thanh ghi chøa d÷ liÖu, to¸n h¹ng kia lµ thanh ghi chøa ®Þa chØ lÖch cña « nhí chøa d÷ liÖu.

VÝ dô: MOV AX,[BX]; ChuyÓn néi dung cña hai « nhí cã ®Þa ; chØ DS:[BX]vµ DS:[BX+1]vµo AX

Page 48: vµ cÊu tróc m¸y tÝnh€¦ ·

48

MOV AH,[BX]; ChuyÓn néi dung cña « nhí cã ®Þa chØ ; DS:[BX] vµo AL

MOV [BP],AL; ChuyÓn néi dung cña AL vµo « nhí cã ®Þa ; chØ SS:[BP]

§o¹n d÷ liÖu DS

§Þa chØ lÖch D÷ liÖu

0 1 AX

2 45FFH +1234H …

BX 1234H 0FFH

1234H 1235H 45H

H×nh 3.4. M« t¶ lÖnh MOV AX,[BX]

3.2.5. ChÕ ®é ®Þa chØ t−¬ng ®èi c¬ së (Based Relative Addressing Mode)

Trong chÕ ®é ®Þa chØ nµy mét to¸n h¹ng lµ thanh ghi, to¸n h¹ng cßn l¹i lµ ®Þa chØ lÖch cña « nhí chøa d÷ liÖu. §Þa chØ lÖch nµy ®−îc l−u bëi mét thanh ghi c¬ së BX hoÆc BP vµ c¸c h»ng sè biÓu diÔn gi¸ trÞ dÞch chuyÓn.

§o¹n ng¨n xÕp

§Þa chØ lÖch D÷ liÖu

0

1 AL

2 0AAH

+12 … BP

12

12 0FFH

+2 13 45H

14 0AAH

H×nh 3.5. M« t¶ lÖnh MOV [BP+2],AL

Page 49: vµ cÊu tróc m¸y tÝnh€¦ ·

49

Có ph¸p lÖnh:

MOV [BP+2],AL ; ChuyÓn néi dung cña AL vµo « nhí cã ®Þa ; chØ SS:[BP+2]

MOV AX,[BX+4]; ChuyÓn néi dung cña hai « nhí cã ®Þa chØ ; DS:[BX+4]vµ DS:[BX+5]vµo AX

LÖnh nµy cã thÓ viÕt nh− sau: MOV AX,4[BX]

MOV AX,[BX]+4

3.2.6. ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè (Indexed Relative Addressing Mode)

Trong chÕ ®é ®Þa chØ nµy, mét to¸n h¹ng lµ thanh ghi, to¸n h¹ng cßn l¹i lµ ®Þa chØ lÖch cña « nhí chøa d÷ liÖu. §Þa chØ lÖch nµy ®−îc l−u bëi mét thanh ghi chØ sè SI hoÆc DI vµ c¸c h»ng sè biÓu diÔn gi¸ trÞ dÞch chuyÓn.

VÝ dô: MOV [SI+2],AL ; chuyÓn néi dung cña AL vµo « nhí ; cã ®Þa chØ:[BP+2]

MOV AX,[DI+4]; chuyÓn néi dung cña hai « nhí cã ®Þa chØ ; DS:[BX+4]vµ DS:[BX+5]vµo AX

3.2.7. ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè c¬ së (Based Indexed Relative Addressing Mode)

Trong chÕ ®é ®Þa chØ nµy, mét to¸n h¹ng lµ thanh ghi, to¸n h¹ng cßn l¹i lµ ®Þa chØ lÖch cña « nhí chøa d÷ liÖu. §Þa chØ lÖch nµy ®−îc l−u bëi mét thanh ghi chØ sè vµ mét thanh ghi c¬ së céng thªm víi c¸c h»ng sè ®Ó biÓu diÔn gi¸ trÞ dÞch chuyÓn.

VÝ dô: MOV AX,[BX+SI+disp]; disp lµ h»ng sè

§Þa chØ lÖch D÷ liÖu 0

1 AH

2 −34

BX +12

12 …

12

SI +3

3

+2 13

15 −34

H×nh 3.6. M« t¶ lÖnh MOV AH,[BX+SI+2]

Page 50: vµ cÊu tróc m¸y tÝnh€¦ ·

50

3.3. Mét sè hµm cña ng¾t 21H

PhÇn nµy sÏ giíi thiÖu mét sè hµm c¬ b¶n nh−: hµm nhËp vµo ký tù tõ bµn phÝm, hµm hiÓn thÞ ký tù lªn mµn h×nh hoÆc hiÓn thÞ chuçi ký tù.

3.3.1. LÖnh INT

LÖnh ng¾t ®−îc dïng ®Ó gäi c¸c hµm cña DOS vµ BIOS. Có ph¸p lÖnh ng¾t nh− sau: int N

Trong ®ã N lµ sè hiÖu ng¾t, vÝ dô: int 21H lµ lÖnh ®Ó gäi rÊt nhiÒu c¸c hµm cña DOS. Mçi mét hµm ®−îc thùc hiÖn b»ng c¸ch ®−a vµo thanh ghi AH sè hiÖu cña hµm sau ®ã gäi int 21H.

3.3.2. Hµm 1

Hµm 1 ®îi ®äc 1 ký tù tõ thiÕt bÞ vµo chuÈn (bµn phÝm), sau ®ã l−u m· ASCII cña ký tù nhËp vµo trong AL. Hµm 1 ®−îc m« t¶ nh− sau:

Vµo: AH = 1

Ra: AL = M· ASCII cña ký tù nhËp vµo.

AL = 0 nÕu mét phÝm ®iÒu khiÓn hay mét phÝm chøc n¨ng ®−îc nhÊn.

VÝ dô vÒ mét ch−¬ng tr×nh nhËp vµo mét ký tù tõ bµn phÝm:

.model small

.stack

.code

main proc

; nhËp vµo mét ký tù

mov ah,1

int 21h

mov BL,AL ; cÊt m· ASCII cña ký tù ®−îc nhËp vµo BL

; trë vÒ dos

mov ah,4ch

int 21h

main endp

end main

Page 51: vµ cÊu tróc m¸y tÝnh€¦ ·

51

3.3.3. Hµm 4CH

Hµm 4CH kÕt thóc ch−¬ng tr×nh hiÖn t¹i vµ tr¶ ®iÒu khiÓn cho ch−¬ng tr×nh gäi nã.

Vµo: AH = 4CH

Ra: Kh«ng.

3.3.4. Hµm 2

Hµm hiÓn thÞ ký tù lªn mµn h×nh hoÆc thi hµnh c¸c chøc n¨ng ®iÒu khiÓn.

Vµo: AH = 2

DL = M· ASCII cña ký tù muèn hiÓn thÞ hoÆc ®iÒu khiÓn.

Ra: AL = M· ASCII cña ký tù võa hiÓn thÞ hoÆc ®iÒu khiÓn.

Muèn hiÓn thÞ mét ký tù, ta ph¶i ®−a m· ASCII cña nã trong DL, vÝ dô ®Ó hiÓn thÞ ch÷ A lªn mµn h×nh ta dïng ®o¹n lÖnh sau ®©y.

mov AH,2

mov DL,’A’

int 21H

Sau khi ký tù hiÓn thÞ, con trá sÏ dÞch sang vÞ trÝ tiÕp theo c¹nh ký tù ®ã. NÕu thanh ghi DL chøa m· ASCII cña ký tù ®iÒu khiÓn, hµm 2 sÏ thi hµnh c¸c chøc n¨ng ®iÒu khiÓn. D−íi ®©y lµ m· ASCII cña mét sè ký tù ®iÒu khiÓn quan träng, chóng ta cã thÓ tra thªm trong b¶ng m· ASCII.

M· ASCIIM· ASCIIM· ASCIIM· ASCII Ký hiÖuKý hiÖuKý hiÖuKý hiÖu Chøc n¨ngChøc n¨ngChøc n¨ngChøc n¨ng

7 Bel Ph¸t tiÕng bÝp

8 BS Xo¸ lïi

9 HT Tab

0AH LF Xuèng dßng

0DH CR VÒ ®Çu dßng

Muèn ph¸t ra tiÕng bÝp cña m¸y tÝnh ta sö dông c¸c lÖnh sau:

mov AH,2

mov DL,7

int 21H

Page 52: vµ cÊu tróc m¸y tÝnh€¦ ·

52

VÝ dô: ViÕt ch−¬ng tr×nh nhËp vµo mét ký tù vµ hiÓn thÞ ký tù ®ã ë ®Çu dßng tiÕp theo.

.model small

.stack 100H

.data

.code

main proc

;nhËp vµo 1 ký tù

mov AH,1

int 21H

mov BL,AL

mov AH,2

mov DL,0AH

int 21H

mov DL,0DH

int 21H

mov DL,BL

int 21H

mov AH,4CH

int 21H

main endp

end main

; hµm nhËp mét ký tù

; thùc hiÖn nhËp

; cÊt ký tù vµo BL

; thùc hiÖn xuèng dßng

; thùc hiÖn vÒ ®Çu dßng

; lÊy ký tù trong BL

; vµ ®Æt vµo DL

; hiÓn thÞ ký tù ®ã

;vÒ DOS

Sau khi nhËp vµo mét ký tù tõ bµn phÝm ta ph¶i cÊt ký tù trong vµo mét thanh ghi kh¸c v× AL sÏ chøa m· ASCII cña ký tù ®iÒu khiÓn hoÆc ký tù hiÓn thÞ sau khi sö dông hµm 2.

3.3.5. Hµm 9

Hµm 9 hiÓn thÞ chuçi ký tù lªn mµn h×nh.

Vµo: AH = 9

DS:DX = ®Þa chØ cña chuçi ký tù.

Ra: Kh«ng.

Page 53: vµ cÊu tróc m¸y tÝnh€¦ ·

53

Hµm 9 yªu cÇu DS:DX chøa ®Þa chØ cña chuçi ký tù. §Ó thùc hiÖn ®iÒu nµy chóng ta sÏ dïng lÖnh sau:

LEA ®Ých, nguån

Trong ®ã, ®Ých lµ thanh ghi c«ng dông chung, nguån lµ mét « nhí. LÖnh LEA lÊy ®Þa chØ vµ chÐp tõ nguån sang ®Ých. VÝ dô ®Ó hiÓn thÞ chuçi cã tªn MANG lªn mµn h×nh ta dïng c¸c lÖnh:

mov AH,9

LEA DX,MANG

int 21H

LÖnh LEA DX,MANG sÏ nhËp ®Þa chØ t−¬ng ®èi cña biÕn MANG vµo DX. Ký tù ‘$’ ®¸nh dÊu kÕt thóc chuçi ký tù vµ nã kh«ng ®−îc hiÓn thÞ. NÕu chuçi ký tù chøa m· ASCII cña ký tù ®iÒu khiÓn th× chøc n¨ng ®iÒu khiÓn sÏ ®−îc thi hµnh. §Ó ch¹y ®óng, mét ch−¬ng tr×nh cã chøa ®o¹n d÷ liÖu sÏ b¾t ®Çu víi hai lÖnh sau:

mov AX,@data

mov DS,AX

@data lµ tªn ®o¹n d÷ liÖu ®−îc ®Þnh nghÜa bëi ®o¹n .data ch−¬ng tr×nh dÞch sÏ dÞch @data thµnh ®Þa chØ.

VÝ dô sau ®©y sÏ cho phÐp nhËp vµo mét ký tù th−êng sau ®ã ®æi thµnh ch÷ hoa vµ hiÓn thÞ ë dßng d−íi víi hai dßng th«ng b¸o:

“moi ban nhap vao mot ky tu thuong: a”

“doi thanh chu hoa va hien thi: A”

Khi khai b¸o chuçi thø hai ta dïng m· ASCII cña ký tù xuèng dßng vµ vÒ ®Çu dßng ®Ó khi chuçi hai ®−îc hiÓn thÞ b»ng hµm 9 th× chøc n¨ng ®iÒu khiÓn nµy sÏ ®−îc thi hµnh.

.model small

.stack 100H

.data

bien1 DB “moi ban nhap vao mot ky tu thuong:$”

bien1 DB 10,13,“doi thanh chu hoa va hien thi:$”

.code

main proc

;khëi t¹o thanh ghi DS

Page 54: vµ cÊu tróc m¸y tÝnh€¦ ·

54

mov AX,@data

mov DS,AX

;hiÓn thÞ chuçi thø nhÊt

mov AH,9

LEA DX,bien1

int 21H

;nhËp vµo 1 ký tù vµ ®æi thµnh ch÷ hoa

mov AH,1

int 21H

mov BL,AL

sub BL,AL

;hiÓn thÞ chuçi thø hai ë dßng d−íi

mov AH,9

LEA DX,bien2

int 21H

;hiÓn thÞ d¹ng ch÷ hoa cña ký tù ban ®Çu

mov AH,2

mov DL,BL

int 21H

;trë vÒ DOS

mov AH,4CH

int 21H

main endp

end main

3.4. C¸c nhãm lÖnh cña 8086

3.4.1. Nhãm lÖnh dÞch chuyÓn d÷ liÖu

PhÇn nµy sÏ giíi thiÖu mét sè lÖnh c¬ b¶n hay sö dông nhÊt cho viÖc dÞch chuyÓn d÷ liÖu gi÷a c¸c thanh ghi bªn trong bé vi xö lý, gi÷a bé nhí hoÆc thiÕt bÞ ngoµi víi bé vi xö lý.

3.4.1.1. LÖnh MOV (MOVE)

Page 55: vµ cÊu tróc m¸y tÝnh€¦ ·

55

D¹ng lÖnh: MOV ®Ých, nguån

LÖnh MOV ®−îc sö dông ®Ó chuyÓn d÷ liÖu tõ to¸n h¹ng nguån vµo to¸n h¹ng ®Ých. VÝ dô: MOV AL,BL

Gi¶ sö tr−íc khi thùc hiÖn lÖnh MOV, thanh ghi AL vµ BL cã néi dung:

0AH 05H

AL BL

Sau khi thùc hiÖn lÖnh MOV, néi dung thanh ghi AL vµ BL:

05H 05H

AL BL

Mét b¶n sao cña thanh ghi BL sÏ ®−îc chuyÓn vµo thanh ghi AL cßn néi dung cña BL vÉn gi÷ nguyªn. Gi¸ trÞ tr−íc ®ã cña AL bÞ viÕt chÌn lªn.

Kh¶ n¨ng kÕt hîp gi÷a to¸n h¹ng nguån víi to¸n h¹ng ®Ých ®−îc chØ ra ë b¶ng 3.2.

B¶ng 5.2. Kh¶ n¨ng kÕt hîp gi÷a c¸c to¸n h¹ng cña lÖnh MOV

To¸n h¹ng ®Ých To¸n h¹ng ®Ých To¸n h¹ng ®Ých To¸n h¹ng ®Ých

To¸n h¹ng nguån To¸n h¹ng nguån To¸n h¹ng nguån To¸n h¹ng nguån

TTTThanh ghi hanh ghi hanh ghi hanh ghi c«ng dông c«ng dông c«ng dông c«ng dông chungchungchungchung

Thanh ghi Thanh ghi Thanh ghi Thanh ghi ®o¹n®o¹n®o¹n®o¹n

¤ nhí¤ nhí¤ nhí¤ nhí H»ng sèH»ng sèH»ng sèH»ng sè

Thanh ghi c«ng dông chung Cã thÓ Cã thÓ Cã thÓ Kh«ng thÓ

Thanh ghi ®o¹n Cã thÓ Kh«ng thÓ Cã thÓ Kh«ng thÓ

¤ nhí Cã thÓ Cã thÓ Kh«ng thÓ Kh«ng thÓ

H»ng sè Cã thÓ Kh«ng thÓ Cã thÓ Kh«ng thÓ

Mét vµi vÝ dô vÒ c¸c lÖnh kh«ng hîp lÖ:

MOV DS,ES ;chuyÓn néi dung tõ thanh ghi ®o¹n ®Õn ;thanh ghi ®o¹n

MOV DS,0AH ;chuyÓn h»ng sè vµo thanh ghi ®o¹n

MOV [BX],0AH ;chuyÓn h»ng sè vµo « nhí

3.4.1.2. LÖnh OUT

D¹ng lÖnh: OUT cæng,thanh_chøa

Thao t¸c: LÖnh OUT xuÊt d÷ liÖu tõ thanh ghi (AL) ra cæng. Cæng cã thÓ lµ mét h»ng sè (cæng cè ®Þnh) hay DX (d÷ liÖu thay ®æi).

Page 56: vµ cÊu tróc m¸y tÝnh€¦ ·

56

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.1.3. LÖnh IN

D¹ng lÖnh: IN thanh_chøa, cæng

Thao t¸c: LÖnh IN ®äc d÷ liÖu tõ cæng vµo thanh ghi (AL). Cæng cã thÓ lµ mét h»ng sè (cæng cè ®Þnh) hay DX (d÷ liÖu thay ®æi).

Cê: Kh«ng bÞ ¶nh h−ëng.

VÝ dô: Gi¶ sö c¸c cæng PA, PB ®· ®−îc ®Þnh nghÜa hai lÖnh sau ®©y thùc hiÖn ®äc d÷ liÖu tõ cæng vµo thanh ghi vµ xuÊt d÷ liÖu tõ thanh ghi ra cæng.

In al,pa ;®äc d÷ liÖu tõ PA vµo AL

Out pb,al ;xuÊt d÷ liÖu tõ AL ra PB

3.4.1.4. LÖnh XCHG (exchange)

D¹ng lÖnh: XCHG ®Ých, nguån

Thao t¸c: To¸n h¹ng ®Ých vµ to¸n h¹ng nguån ®−îc ®æi lÉn cho nhau.

Cê: Kh«ng bÞ ¶nh h−ëng.

Gi¶ sö thanh ghi AL vµ BL cã néi dung nh− sau:

0AH 05H

AL BL

Sau khi thùc hiÖn lÖnh XCHG AL,BL néi dung AL vµ BL:

05H 0AH

AL BL

3.4.1.5. LÖnh XLAT (translate byte to AL)

D¹ng lÖnh: XLAT nh·n_nguån

Thao t¸c: BX ph¶i chøa ®Þa chØ offset cña b¶ng nguån cã chiÒu dµi tèi ®a lµ 256 byte. AL ph¶i chøa chØ sè cña c¸c phÇn tö b¶ng. LÖnh sÏ thay thÕ néi dung cña AL b»ng néi dung cña c¸c phÇn tö b¶ng ®−îc ®Þnh ®Þa chØ b»ng (BX + AL).

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.1.6. LÖnh LAHF (Load AH from Flags)

Page 57: vµ cÊu tróc m¸y tÝnh€¦ ·

57

D¹ng lÖnh: LAHF

Thao t¸c: 8 bit thÊp cña thanh ghi cê ®−îc chuyÓn vµo AH.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.1.7. LÖnh LDS (Load Data Segment register)

N¹p vµo thanh ghi DS ®Þa chØ ®o¹n vµ thanh ghi c«ng dông chung ®Þa chØ lÖch ®Ó truy cËp d÷ liÖu.

D¹ng lÖnh: LDS ®Ých, nguån

Thao t¸c: To¸n h¹ng nguån lµ mét « nhí cã ®é dµi 2 tõ. Tõ thÊp ®−îc ®Æt vµo thanh ghi ®Ých cßn tõ cao ®Æt vµo thanh ghi DS.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.1.8. LÖnh LES (Load Etra Segment register)

N¹p vµo thanh ghi ES ®Þa chØ ®o¹n vµ mét thanh ghi c«ng dông chung ®Þa chØ lÖch ®Ó cã thÓ truy cËp d÷ liÖu.

D¹ng lÖnh: LES ®Ých, nguån

Thao t¸c: To¸n h¹ng nguån lµ « nhí cã ®é dµi 2 tõ. Tõ thÊp ®−îc ®Æt vµo thanh ghi ®Ých, tõ cao ®Æt vµo thanh ghi ES.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.1.9. LÖnh SAHF (Store AH in Flag register)

D¹ng lÖnh: SAHF

Thao t¸c: L−u 5 bit thÊp cña AH vµo byte thÊp cña thanh ghi cê. ChØ cã bit t−¬ng øng víi cê míi ®−îc chuyÓn ®æi. C¸c cê trong bit thÊp cña thanh ghi cê lµ SF = bit 7, ZF = bit 6, AF = bit 4, PF = bit 2, CF = bit 0.

Cê: BÞ ¶nh h−ëng AF, PF, ZF, SF, CF.

3.4.2. Nhãm lÖnh sè häc

3.4.2.1. LÖnh ADD, SUB

C¸c lÖnh ADD, SUB ®−îc sö dông ®Ó céng hoÆc trõ néi dung cña hai to¸n h¹ng.

D¹ng lÖnh: ADD ®Ých, nguån

SUB ®Ých, nguån

Page 58: vµ cÊu tróc m¸y tÝnh€¦ ·

58

LÖnh ADD vµ SUB thùc hiÖn céng hoÆc trõ néi dung cña to¸n h¹ng ®Ých víi to¸n h¹ng nguån, kÕt qu¶ l−u vµo to¸n h¹ng ®Ých, nguån kh«ng thay ®æi. VÝ dô: ADD AL,BL

Gi¶ sö tr−íc khi thùc hiÖn lÖnh MOV, AL vµ BL cã néi dung nh− sau:

0AH 05H

AL BL

Sau khi thùc hiÖn lÖnh MOV, néi dung AL vµ BL:

0FH 05H

AL BL

VÝ dô: SUB AL,BL

Gi¶ sö tr−íc khi thùc hiÖn lÖnh MOV, AL vµ BL cã néi dung nh− sau:

0AH 02H

AL BL

Sau khi thùc hiÖn lÖnh MOV, néi dung AL vµ BL:

08H 02H

AL BL

Kh¶ n¨ng kÕt hîp gi÷a to¸n h¹ng nguån víi to¸n h¹ng ®Ých trong c¸c phÐp céng vµ phÐp trõ ®−îc chØ ra ë b¶ng 3.3.

B¶ng 3.3. Kh¶ n¨ng kÕt hîp gi÷a c¸c to¸n h¹ng cña lÖnh ADD, SUB

To¸n h¹ng ®Ých To¸n h¹ng ®Ých To¸n h¹ng ®Ých To¸n h¹ng ®Ých

To¸n h¹ng nguånTo¸n h¹ng nguånTo¸n h¹ng nguånTo¸n h¹ng nguån

Thanh ghi Thanh ghi Thanh ghi Thanh ghi c«ng dông c«ng dông c«ng dông c«ng dông chungchungchungchung

¤ nhí¤ nhí¤ nhí¤ nhí H»ng sèH»ng sèH»ng sèH»ng sè

Thanh ghi c«ng dông chung Cã thÓ Cã thÓ Kh«ng thÓ

¤ nhí Cã thÓ Kh«ng thÓ Kh«ng thÓ

H»ng sè Cã thÓ Cã thÓ Kh«ng thÓ

3.4.2.2. LÖnh ADC (ADD with Carry)

Cê nhí ®−îc céng vµo tæng cña to¸n h¹ng nguån vµ to¸n h¹ng ®Ých.

D¹ng lÖnh: ADC ®Ých,nguån

Thao t¸c: NÕu CF = 1 th× ®Ých = nguån + ®Ých + 1.

NÕu CF = 0 th× ®Ých = nguån + ®Ých.

Page 59: vµ cÊu tróc m¸y tÝnh€¦ ·

59

Cê: BÞ ¶nh h−ëng: AF, CF, OF, SF, ZF, PF.

3.4.2.3. LÖnh CBW (Convert Byte to Word)

§æi sè cã dÊu 8 bit trong AL thµnh sè cã dÊu 16 bit trong AX.

D¹ng lÖnh: CBW

Thao t¸c: NÕu bit 7 cña AL b»ng 1 th× AH = FFH.

NÕu bit 7 cña AL b»ng 0 th× AH = 00H.

Cê: Kh«ng ¶nh h−ëng.

3.4.2.4. LÖnh DEC (DECrement)

Thùc hiÖn phÐp céng cã nhí.

D¹ng lÖnh: Dec ®Ých

Thao t¸c: Gi¶m to¸n h¹ng ®Ých ®i 1.

Cê: BÞ ¶nh h−ëng AF, OF, PF, SF, ZF.

LÖnh nµy t−¬ng ®−¬ng víi lÖnh ADD ®Ých,1.

3.4.2.5. DIV (DIVide)

Thùc hiÖn phÐp chia kh«ng dÊu.

D¹ng lÖnh: Div nguån

Thao t¸c: Sè chia lµ to¸n h¹ng nguån cã thÓ lµ mét « nhí hay thanh ghi. Trong phÐp chia cho byte (to¸n h¹ng nguån 8 bit), sè bÞ chia lµ mét tõ mÆc ®Þnh chøa trong AX, kÕt qu¶ th−¬ng sè chøa trong AL vµ sè d− tr¶ vÒ trong AH. Khi thùc hiÖn phÐp chia cho word (to¸n h¹ng nguån 16 bit), sè bÞ chia 32 bit chøa trong DX:AX (16 bit cao trong DX, 16 bit thÊp trong AX). KÕt qu¶ th−¬ng sè chøa trong AX vµ sè d− tr¶ vÒ trong DX.

Cê: Kh«ng x¸c ®Þnh AF, OF, CF, ZF, SF, PF.

VÝ dô: Gi¶ sö AX chøa 20, DX chøa 0, BX chøa 6. Khi thùc hiÖn phÐp chia cho byte hoÆc cho word ta sÏ ®−îc kÕt qu¶ nh− sau:

KÕt qu¶ KÕt qu¶ KÕt qu¶ KÕt qu¶

LÖnhLÖnhLÖnhLÖnh AHAHAHAH ALALALAL AXAXAXAX DXDXDXDX

Div BL 2 3 0203H 0

Div BX 0 3 0003H 2

Page 60: vµ cÊu tróc m¸y tÝnh€¦ ·

60

HiÖn t−îng trµn sè cã thÓ x¶y ra khi sè bÞ chia qu¸ lín so víi sè chia. NÕu th−¬ng sè lín h¬n 8 bit trong phÐp chia cho byte (16 bit trong phÐp chia cho word) hoÆc sè chia b»ng 0 th× ng¾t INT O ®−îc t¹o ra.

3.4.2.6. LÖnh IDIV (Integer DIVide)

Thùc hiÖn phÐp chia cã dÊu.

D¹ng lÖnh: IDIV nguån

Thao t¸c: Sè chia lµ to¸n h¹ng nguån cã thÓ lµ mét « nhí hay mét thanh ghi. Trong phÐp chia cho byte (to¸n h¹ng nguån 8 bit) sè bÞ chia chøa trong AX, cßn trong phÐp chia cho word (to¸n h¹ng nguån 16 bit) sè chia chøa trong DX:AX. Th−¬ng sè chøa trong AL (AX trong tr−êng hîp chia cho word) vµ sè d− (lu«n cïng dÊu víi sè bÞ chia) tr¶ vÒ trong AH (DX cho phÐp chia cho word). NÕu th−¬ng sè lín h¬n 127 hoÆc nhá h¬n −127 trong phÐp chia cho byte (lín h¬n 32767 hoÆc nhá h¬n −32767 trong phÐp chia cho word) hoÆc sè chia b»ng 0 th× ng¾t INT O ®−îc t¹o ra.

Cê: Kh«ng x¸c ®Þnh AF, OF, CF, ZF, PF.

3.4.2.7. LÖnh IMUL (Integer MULtiplycation)

Thùc hiÖn phÐp nh©n cã dÊu gi÷a hai to¸n h¹ng.

D¹ng lÖnh: IMUL nguån

Thao t¸c: LÖnh Imul nguån thùc hiÖn nh©n néi dung cña AL víi to¸n h¹ng nguån nÕu to¸n h¹ng nguån lµ mét byte, tÝch mÆc ®Þnh chøa trong AX, hoÆc nh©n néi dung cña AX víi to¸n h¹ng nguån nÕu to¸n h¹ng nguån lµ mét tõ, tÝch mÆc ®Þnh chøa trong DX:AX. C¸c cê CF, OF = 0 nÕu nöa cao cña tÝch lµ phÇn më réng dÊu cña nöa thÊp. To¸n h¹ng nguån kh«ng ®−îc lµ h»ng sè.

Cê: BÞ ¶nh h−ëng CF, OF.

3.4.2.8. LÖnh MUL (MULtiply)

Thùc hiÖn phÐp nh©n kh«ng dÊu.

D¹ng lÖnh: MUL nguån

Thao t¸c: LÖnh MUL nguån thùc hiÖn nh©n néi dung cña AL víi to¸n h¹ng nguån nÕu to¸n h¹ng nguån lµ mét byte, tÝch mÆc ®Þnh chøa trong AX, hoÆc nh©n néi dung cña AX víi to¸n h¹ng nguån nÕu to¸n h¹ng nguån lµ mét tõ, tÝch mÆc ®Þnh chøa trong DX: AX. C¸c cê CF, OF = 0 nÕu nöa cao

Page 61: vµ cÊu tróc m¸y tÝnh€¦ ·

61

cña tÝch lµ phÇn më réng dÊu cña nöa thÊp. To¸n h¹ng nguån kh«ng ®−îc lµ h»ng sè.

Cê: BÞ ¶nh h−ëng CF, OF.

VÝ dô: Gi¶ sö A, B, C, D lµ c¸c biÕn kh«ng dÊu kiÓu byte. §Ó thùc hiÖn phÐp to¸n: AX (chøa kÕt qu¶)= A*B + C*D

§o¹n m· nh− sau:

mov AL,A

mov Bl,B

MUL BL

mov DX,AX

mov AL,C

mov Bl,D

MUL BL

ADD AX,DX

; AL chøa A

; BL chøa B

; AX chøa A*B

; cÊt A*B vµo DX

; AL chøa C

; BL chøa D

; AX chøa C*D

; AX chøa A*B + C*D

3.4.2.9. LÖnh NEG (NEGate)

LÊy sè bï 2.

D¹ng lÖnh: NEG ®Ých

Thao t¸c: To¸n h¹ng ®Ých bÞ trõ ®i tõ sè toµn ch÷ sè 1 (0FFH víi byte vµ 0FFFFH víi word). Sau ®ã kÕt qu¶ chøa trong to¸n h¹ng ®Ých ®−îc céng thªm 1.

Cê: BÞ ¶nh h−ëng AF, OF, CF, SF, ZF.

VÝ dô: Gi¶ sö thanh ghi DH chøa 2, kÕt qu¶ DH sau khi thùc hiÖn lÖnh NEG DH nh− sau:

DH = (0FFH − 2) + 1

= 256 − 2

= −2 (hay 0FEH)

NÕu thanh ghi DX chøa 2, sau khi thùc hiÖn lÖnh NEG DX kÕt qu¶ DX = 0FFFEH.

3.4.2.10. LÖnh SBB (SuBtract with Borrow)

Trõ cã nhí.

Page 62: vµ cÊu tróc m¸y tÝnh€¦ ·

62

D¹ng lÖnh: SBB ®Ých,nguån

Thao t¸c: Trõ to¸n h¹ng ®Ých cho to¸n h¹ng nguån vµ nÕu CF = 1 th× trõ kÕt qu¶ nhËn ®−îc ®i 1. KÕt qu¶ chøa trong to¸n h¹ng ®Ých.

Cê: BÞ ¶nh h−ëng AF, CF, OF, PF, SF, ZF.

3.4.3. Nhãm lÖnh ®iÒu khiÓn rÏ nh¸nh

Trong lËp tr×nh hîp ng÷, ®Ó thùc hiÖn cÊu tróc chän lùa vµ cÊu tróc lÆp ta ph¶i sö dông c¸c lÖnh nh¶y (jump) vµ lÖnh lÆp (loop).

Có ph¸p chung cña c¸c lÖnh nh¶y nh− sau: M·_lÖnh Nh·n_lÖnh

3.4.3.1. Nhãm lÖnh nh¶y cã ®iÒu kiÖn

Víi c¸c lÖnh nh¶y cã ®iÒu kiÖn th× khi gÆp lÖnh nh¶y, nÕu nh− ®iÒu kiÖn cña lÖnh nh¶y ®−îc tho¶ m·n th× Nh·n_lÖnh ®−îc thi hµnh cßn nÕu ng−îc l¹i th× thùc hiÖn lÖnh ngay sau lÖnh nh¶y. Nh·n_lÖnh cã thÓ ®Æt tr−íc hoÆc sau lÖnh nh¶y.

Ph¹m vi cña lÖnh nh¶y cã ®iÒu kiÖn trong kho¶ng 128 byte tr−íc lÖnh nh¶y vµ 127 byte sau lÖnh nh¶y. VÝ dô vÒ mét lÖnh nh¶y cã ®iÒu kiÖn:

a) LÖnh JNZ (Jump if Not Zero)

§iÒu kiÖn cña JNZ (nh¶y nÕu kh¸c 0) lµ kÕt qu¶ cña lÖnh tr−íc ®ã kh¸c 0.

D¹ng lÖnh: JNZ nh·n_®Ých

Thao t¸c: NÕu kÕt qu¶ cña lÖnh tr−íc ®ã kh¸c 0 th× lÖnh cã tªn lµ nh·n_®Ých ®−îc thi hµnh cßn nÕu ng−îc l¹i th× thùc hiÖn lÖnh ngay sau lÖnh nh¶y.

Cßn rÊt nhiÒu c¸c lÖnh nh¶y cã ®iÒu kiÖn ®−îc chØ ra ë b¶ng 3.4. Mét sè lÖnh nh¶y cã hai m· lÖnh nh−: JL (nh¶y nÕu nhá h¬n) vµ JNGE (nh¶y nÕu kh«ng lín h¬n hay b»ng), khi m· ho¸ kÕt qu¶ cña hai lÖnh nµy lµ gièng nhau.

B¶ng 3.4. C¸c lÖnh nh¶y cã ®iÒu kiÖn

LÖnhLÖnhLÖnhLÖnh Nh¶y nÕuNh¶y nÕuNh¶y nÕuNh¶y nÕu §iÒu kiÖn§iÒu kiÖn§iÒu kiÖn§iÒu kiÖn M· lÖnhM· lÖnhM· lÖnhM· lÖnh

JA Above CF = 0 AND ZF = 0 77 Disp

JAE Above or Equal CF = 0 73 Disp

JB Below CF = 1 72 Disp

JBE Below or Equal CF = 1 OR ZF = 1 76 Disp

Page 63: vµ cÊu tróc m¸y tÝnh€¦ ·

63

JC Carry CF = 1 72 Disp

JCXZ CX=0 (CF OR ZF) = 0 E3 Disp

JE Equal ZF = 1 74 Disp

JG Greater ZF = 0 AND SF = OF 7F Disp

JGE Greater Equal ZF = OF 7D Disp

JL Less (SF XOR OF) = 1 7C Disp

JLE Less or Equal (SF XOR OF) OR ZF = 1 7E Disp

JNA Not Above CF = 1 OR ZF = 1 76 Disp

JNAE Not Above or Equal CF = 1 72 Disp

JNB Not Below CF = 0 73 Disp

JNBE Not Below or Equal CF = 0 OR ZF = 0 77 Disp

JNC Not Carry CF = 0 73 Disp

JNE Not Equal ZF = 0 75 Disp

JNG Not Greater (SF XOR OF) OR ZF = 1 7E Disp

NGE Not Greater or Equal (SF XOR OF) = 1 7C Disp

JNL Not Less SF = OF 7D Disp

JNLE Not Less or Equal ZF = 0 Vµ SF = OF 7F Disp

JNO Not Over flow OF = 0 71 Disp

JNP Not Parity PF = 0 7B Disp

JNS Not Sign SF = 0 79 Disp

JNZ Not Zero ZF = 0 75 Disp

JO Overflow OF = 1 70 Disp

JP Parity PF = 1 7A Disp

JPE Parity Even PF = 1 7A Disp

JPO Parity Odd PF = 0 7B Disp

JS Sign SF = 1 78 Disp

JZ Zero ZF = 1 74 Disp

Page 64: vµ cÊu tróc m¸y tÝnh€¦ ·

64

Th«ng th−êng c¸c lÖnh nh¶y ®−îc cung cÊp bëi lÖnh so s¸nh (compare).

b) LÖnh CMP (CoMPare)

LÖnh CMP so s¸nh hai to¸n h¹ng b»ng c¸ch thùc hiÖn phÐp trõ nh−ng kh«ng l−u l¹i kÕt qu¶.

D¹ng lÖnh: CMP ®Ých, nguån

Thao t¸c: Trõ to¸n h¹ng ®Ých cho to¸n h¹ng nguån vµ thiÕt lËp c¸c cê theo kÕt qu¶ cña phÐp tÝnh, c¸c to¸n h¹ng vÉn kh«ng thay ®æi.

Cê: BÞ ¶nh h−ëng AF, CF, OF, PF, EF, ZF.

VÝ dô ®o¹n ch−¬ng tr×nh sau ®©y hiÓn thÞ ra mµn h×nh 9 ký tù tõ liªn tiÕp ‘0’ ®Õn ‘8’ trªn mét dßng:

mov AH,2

mov DL,30H

H_thi: int 21H

inc DL

CMP DL,39H

JNZ H_thi

Tho¸t:

;Hµm hiÓn thÞ ký tù

;DL chøa m· ASCII cña ký tù hiÓn thÞ

;gi¶m m· ASCII

;so s¸nh víi ký tù ‘9’

;lÆp l¹i nÕu kh«ng ph¶i ‘9’

;nÕu b»ng ‘9’th× tho¸t

NÕu thay lÖnh JNZ trong ®o¹n m· trªn b»ng lÖnh JLE (nÕu nhá h¬n hay b»ng) th× ®o¹n hiÓn thÞ ra mµn h×nh 10 ký tù liªn tiÕp tõ ‘0’ ®Õn ‘9’ trªn mét dßng:

mov AH,2

mov DL,30H

H_thi:int 21H

inc DL

CMP DL,39H

JLE H_thi

Tho¸t:

;Hµm hiÓn thÞ ký tù

;DL chøa m· ASCII cña ký tù hiÓn thÞ

;gi¶m m· ASCII

;so s¸nh víi ký tù ‘9’

;lÆp l¹i nÕu nhá h¬n hoÆc b»ng 9

;nÕu lín h¬n ‘9’th× tho¸t

3.4.3.2. LÖnh nh¶y kh«ng ®iÒu kiÖn (JuMP)

D¹ng lÖnh: JMP nh·n_®Ých

Thao t¸c: NÕu gÆp lÖnh JMP th× ch−¬ng tr×nh chuyÓn ngay tíi lÖnh nh·n_®Ých ®Ó thi hµnh mµ kh«ng cÇn ®iÒu kiÖn g×.

Cê: Kh«ng bÞ ¶nh h−ëng.

Page 65: vµ cÊu tróc m¸y tÝnh€¦ ·

65

VÝ dô:

mov AH,2

mov DL,30H

H1: int 21H

inc DL

CMP DL,39H

JLE H2

JMP thoat

H2: JMP H1

Tho¸t:

;hµm hiÓn thÞ ký tù

;DL chøa m· ASCII cña ký tù hiÓn thÞ

;gi¶m m· ASCII

;so s¸nh víi ký tù ‘9’

;nh¶y ®Õn h2 nÕu (<= 9)

;nÕu lín h¬n ‘9’th× tho¸t

;nh¶y kh«ng ®iÒu kiÖn vÒ H1

3.4.3.3. C¸c cÊu tróc lËp tr×nh

a) CÊu tróc tuÇn tù

CÊu tróc tuÇn tù lµ cÊu tróc th«ng dông vµ ®¬n gi¶n nhÊt. Trong cÊu tróc nµy, ch−¬ng tr×nh lµ d·y c¸c lÖnh ®−îc s¾p xÕp vµ thùc hiÖn mét c¸ch tuÇn tù tõ trªn xuèng d−íi.

Có ph¸p:

Begin

c«ng_viÖc_1

c«ng_viÖc_2

...

c«ng_viÖc_n

end

b) CÊu tróc rÏ nh¸nh

*if then

Có ph¸p:

if ®iÒu_kiÖn

then

c«ng_viÖc

end_if

H×nh 3.7. L−u ®å thuËt to¸n có ph¸p if then

®iÒu kiÖn

c«ng viÖc S

§

Page 66: vµ cÊu tróc m¸y tÝnh€¦ ·

66

NÕu ®iÒu kiÖn tho¶ m·n th× thùc hiÖn c«ng viÖc, nÕu kh«ng th× bá qua sau ®ã thùc hiÖn c¸c lÖnh kÕ tiÕp.

VÝ dô 1: ViÕt ch−¬ng tr×nh nhËp vµo mét ký tù tõ bµn phÝm, nÕu lµ ‘a’ th× hiÓn thÞ. NÕu kh«ng ph¶i th× vÒ DOS.

Gi¶i:

L−u ®å thuËt to¸n h×nh 3.8.

M· ho¸ vÝ dô 1 b»ng ch−¬ng tr×nh sau:

.model small

.stack 100H

.data

.code

main proc

mov AH,1 ; nhËp mét ký tù

int 21H

mov BL,AL

cmp AL,61H ; so s¸nh ký tù víi ‘a’

jne thoat

End

Begin

NhËp vµo 1 ký tù

AL = 61H?

HiÓn thÞ

VÒ DOS

§

S

H×nh 3.8. L−u ®å thuËt to¸n vÝ dô 1

Page 67: vµ cÊu tróc m¸y tÝnh€¦ ·

67

mov AH,2 ; nÕu kh«ng ph¶i ‘a’ th× tho¸t

mov DL,BL ; nÕu lµ ‘a’ th× hiÓn thÞ

int 21H

thoat:

mov AH,4CH

int 21H

main endp

end main

Trong ®o¹n ch−¬ng tr×nh trªn, ®Ó so s¸nh ký tù nhËp vµo xem cã ph¶i ‘a’ kh«ng ta dïng lÖnh CMP AL,61H, sau ®ã dïng lÖnh nh¶y JNE ®Ó bá qua b−íc hiÓn thÞ nÕu ký tù ®ã kh«ng ph¶i ‘a’.

*if then else

Có ph¸p:

if ®iÒu_kiÖn

then

c«ng_viÖc_1

else

c«ng_viÖc_2 end_if

NÕu ®iÒu kiÖn ®óng th× thùc hiÖn c«ng viÖc 1, nÕu ®iÒu kiÖn sai th× thùc hiÖn c«ng viÖc 2.

VÝ dô 2: NhËp vµo mét ký tù tõ bµn phÝm, nÕu lµ ch÷ A th× hiÓn thÞ, nÕu kh«ng ph¶i, hiÓn thÞ dßng th«ng b¸o “Ky tu do khong phai chu A”.

Gi¶i:

L−u ®å thuËt to¸n:

®iÒu kiÖn S

§iÒu kiÖn

C«ng viÖc 1

§

C«ng viÖc 2

H×nh 3.9. L−u ®å thuËt to¸n có ph¸p if then else

Page 68: vµ cÊu tróc m¸y tÝnh€¦ ·

68

H×nh 3.10. L−u ®å thuËt to¸n vÝ dô 2

M· ho¸ vÝ dô 2 b»ng ®o¹n ch−¬ng tr×nh sau:

mov AH,1

int 21H

mov BL,AL

cmp AL,41H

je ht_kytu

mov AH,9

lea DX,thongbao

int 21H

jmp veDOS

ht_kytu:

mov AH,2

mov DL,BL

int 21H

; nhËp mét ký tù

; so s¸nh ký tù víi ‘A’

; nÕu lµ ‘A’ th× hiÓn thÞ ký tù

; nÕu kh«ng ph¶i ‘A’ th×

; hiÓn thÞ th«ng b¸o

; nh¶y vÒ DOS

; hiÓn thÞ ký tù

S

Begin

NhËp vµo 1 ký tù

AL = 41H?

HiÓn thÞ A

VÒ DOS

End

HiÓn thÞ th«ng b¸o

§

Page 69: vµ cÊu tróc m¸y tÝnh€¦ ·

69

veDOS:

mov AH,4CH

int 21H

main endp

end main

§«i khi ®iÒu kiÖn cña if th−êng cã thªm c¸c ®iÒu kiÖn AND hoÆc ®iÒu kiÖn OR.

Có ph¸p:

§iÒu kiÖn AND:

if ®iÒu_kiÖn_1 and ®iÒu_kiÖn_2

then

c«ng_viÖc_1

else

c«ng_viÖc_2

end_if

§iÒu kiÖn OR:

if ®iÒu_kiÖn_1 or ®iÒu_kiÖn_2

then

c«ng_viÖc_1

else

c«ng_viÖc_2

end_if

§iÒu kiÖn AND chØ ®óng khi ®ång thêi hai ®iÒu kiÖn ®iÒu kiÖn 1 vµ ®iÒu kiÖn 2 cïng ®óng. Ng−îc l¹i, chØ cÇn mét trong hai ®iÒu kiÖn sai lµ biÓu thøc sai.

§iÒu kiÖn OR ®óng khi mét trong hai ®iÒu kiÖn ®óng, vµ chØ sai khi c¶ hai ®iÒu kiÖn sai.

VÝ dô 3: NhËp mét ký tù, nÕu lµ c¸c con sè tõ 0 ®Õn 9 th× hiÓn thÞ.

Gi¶i:

Trong vÝ dô nµy, sau khi nhËp vµo mét ký tù ta ph¶i kiÓm tra nÕu ký tù ®ã ®øng tr−íc ‘0’ th× kÕt thóc. NÕu ký tù ®ã ®øng sau ‘0’ còng ch−a ®−îc hiÓn thÞ ngay ta ph¶i kiÓm tra tiÕp víi 9. NÕu ký tù ®ã sau 9 th× kÕt thóc, cßn nÕu ®øng tr−íc ‘9’ míi ®−îc hiÓn thÞ.

L−u ®å thuËt to¸n vµ ®o¹n m· ch−¬ng tr×nh ®−îc viÕt nh− sau:

MOV AH,1

INT 21H

CMP AL,30H

JB END_IF

Page 70: vµ cÊu tróc m¸y tÝnh€¦ ·

70

CMP AL,39H

JA END_IF

MOV DL,AL

MOV AH,2

INT 21H

END_IF:

H×nh 3.11. L−u ®å thuËt to¸n vÝ dô 3

VÝ dô 4: ViÕt ch−¬ng tr×nh nhËp mét ký tù, nÕu lµ ‘A’ hay ‘a’ th× hiÓn thÞ.

Trong vÝ dô nµy, khi nhËp vµo mét ký tù ta ph¶i kiÓm tra xem ký tù ®ã cã ph¶i ‘A’ kh«ng, nÕu ký tù ®ã kh«ng ph¶i ‘A’ th× so s¸nh tiÕp víi ‘a’ nÕu còng kh«ng ph¶i th× tho¸t. Cßn nÕu lµ ‘A’ hoÆc ‘a’ th× hiÓn thÞ. Sau ®©y lµ l−u ®å thuËt to¸n vµ m· lÖnh.

§

Begin

NhËp vµo 1 ký tù

AL < 30H

VÒ DOS

End

HiÓn thÞ Ký tù

AL > 3AH

§

S

S

Page 71: vµ cÊu tróc m¸y tÝnh€¦ ·

71

MOV AH,1

INT 21H

CMP AL,41H

JE hienthi

CMP AL,61H

JNE thoat

hienthi:

MOV DL,AL

MOV AH,2

INT 21H

thoat:

MOV AH,4CH

INT 21H

END_IF:

H×nh 3.12. L−u ®å thuËt to¸n vÝ dô 4

*case

Có ph¸p:

case biÓu_thøc

k1: c«ng_viÖc_1

k2: c«ng_viÖc_2

...

kn: c«ng_viÖc_n

end_case

H×nh 3.13. L−u ®å thuËt to¸n cÊu tróc case

BiÓu thøc B»ng k1

C«ng viÖc n

C«ng viÖc 1

C«ng viÖc 2 …

B»ng k2

B»ng kn

§

Begin

NhËp vµo 1 ký tù

AL = 41H

VÒ DOS

End

HiÓn thÞ 1 ký tù

AL = 61H

§

S

S

Page 72: vµ cÊu tróc m¸y tÝnh€¦ ·

72

Case lµ mét cÊu tróc lùa chän mét trong nhiÒu nh¸nh. NÕu gi¸ trÞ cña biÓu thøc b»ng ki th× thùc hiÖn c«ng viÖc thø i.

VÝ dô 5: NÕu thanh ghi AX chøa sè ©m, h·y nhËp –1 vµo thanh ghi BX, nÕu AX chøa 0 th× thay BX = 0, nÕu AX d−¬ng th× thay BX b»ng 1.

Gi¶i: M· lÖnh gi¶ vµ ®o¹n m· b»ng hîp ng÷ nh− sau:

Case AX

< 0: BX = −1

= 0: BX = 0

> 0: BX = 1

end_case

CMP AX,0

JG duong

JL am

JE khong

duong:

MOV BX,1

JMP ketthuc

am:

MOV BX,−1

JMP ketthuc

Khong:

MOV BX,0

ketthuc:

c) CÊu tróc lÆp

*for

Có ph¸p:

for sè_lÇn_lÆp

do

th©n for

end_for

H×nh 3.14. L−u ®å thuËt to¸n cÊu tróc lÆp for

§

§Õm = 0

§Õm = sè lÇn lÆp

§Õm −1

Th©n for

S

Page 73: vµ cÊu tróc m¸y tÝnh€¦ ·

73

Vßng lÆp for sÏ thùc hiÖn c«ng viÖc víi sè lÇn lÆp ®· biÕt tr−íc.

§Ó thùc hiÖn cÊu tróc lÆp for b»ng hîp ng÷, ta sö dông lÖnh lÆp loop víi có ph¸p nh− sau: Loop Nh·n_®Ých

Ho¹t ®éng cña lÖnh loop nh− sau: Sè lÇn lÆp ®−îc n¹p vµo thanh ghi CX, mçi lÇn thùc hiÖn lÖnh loop th× CX tù ®éng gi¶m ®i 1 råi so s¸nh CX víi 0, nÕu CX kh¸c 0 th× lÆp l¹i th©n vßng lÆp. NÕu CX b»ng 0 th× vßng lÆp kÕt thóc. Nh·n ®Ých ph¶i ®Æt tr−íc lÖnh lÆp kh«ng qu¸ 126 byte. Có ph¸p vßng lÆp nh− sau: ; khëi t¹o CX b»ng sè lÇn lÆp

Lable:

; Th©n vßng lÆp

loop Lable

Chó ý: NÕu tr−íc vßng lÆp CX b»ng 0, sau khi thùc hiÖn th©n vßng lÆp mét lÇn th× CX tù ®éng gi¶m ®i 1 nªn néi dung trong thanh ghi CX lµ 0FFFFH v× thÕ vßng lÆp ®−îc thùc hiÖn thªm 65535 lÇn n÷a. Ta cã thÓ sö dông lÖnh JCXZ (Jump if CX is Zero) ®−îc ®Æt tr−íc vßng lÆp ®Ó nÕu CX b»ng 0 tr−íc vßng lÆp th× sÏ kh«ng thùc hiÖn vßng lÆp. Có ph¸p vßng lÆp nh− sau: ; khëi t¹o CX b»ng sè lÇn lÆp

JCXZ exit

Lable:

; Th©n vßng lÆp

LOOP Lable

EXIT:

VÝ dô 6: Sö dông vßng lÆp viÕt ch−¬ng tr×nh hiÓn thÞ 10 dÊu ‘*’ trªn 10 dßng.

Gi¶i: M· lÖnh gi¶ vµ ®o¹n m· b»ng hîp ng÷ nh− sau:

for 10 lÇn

do

; hiÓn thÞ

; xuèng dßng

; vÒ ®Çu dßng

end_for

MOV AH,2

MOV CX,10

LAP:

MOV DL,’*’

INT 21H

MOV DL,0dh

INT 21H

MOV DL,0ah

INT 21H

LOOP LAP

Page 74: vµ cÊu tróc m¸y tÝnh€¦ ·

74

*while

Có ph¸p:

while ®iÒu_kiÖn

do

c«ng_viÖc

end_while

H×nh 3.15. L−u ®å thuËt to¸n cÊu tróc while

Vßng lÆp while sÏ kiÓm tra ®iÒu kiÖn tr−íc, nÕu kiÒu kiÖn lÆp ®−îc tho¶ m·n th× th©n vßng lÆp ®−îc thùc hiÖn, sau ®ã ®iÒu kiÖn lÆp l¹i ®−îc kiÓm tra vµ thùc hiÖn cho ®Õn khi ®iÒu kiÖn lÆp kh«ng tho¶ m·n. C«ng viÖc trong vßng lÆp kh«ng ®−îc thùc hiÖn lÇn nµo nÕu ®iÒu kiÖn sai ngay tõ ®Çu tiªn.

VÝ dô 7: ViÕt ch−¬ng tr×nh ®Ó ®Õm sè ký tù trªn mét dßng ®−îc nhËp tõ bµn phÝm.

Gi¶i: L−u ®å thuËt to¸n vµ ®o¹n m· ch−¬ng tr×nh nh− sau:

MOV CX,0

MOV AH,1

INT 21H

tieptuc:

CMP AL,0DH

JE ketthuc

INC CX

INT 21H

JMP tieptuc

ketthuc:

§

§iÒu kiÖn

C«ng viÖc

S

H×nh 3.16. L−u ®å thuËt to¸n vÝ dô 7

§

Begin

NhËp vµo 1 ký tù

AL = 0DH

End

§Õm = 0

§Õm +1

NhËp vµo 1 ký tù

S

Page 75: vµ cÊu tróc m¸y tÝnh€¦ ·

75

*do while

Có ph¸p:

do

c«ng_viÖc

while ®iÒu_kiÖn

end_do_while

Vßng lÆp do while sÏ kiÓm tra ®iÒu kiÖn sau, tøc lµ th©n vßng lÆp ®−îc thùc hiÖn tr−íc sau ®ã míi tiÕn hµnh kiÓm tra ®iÒu kiÖn lÆp, nÕu ®iÒu kiÖn sai th× vßng lÆp kÕt thóc, nÕu ®iÒu kiÖn ®óng th× vßng lÆp tiÕp tôc ®−îc thùc hiÖn. C«ng viÖc trong vßng lÆp ®−îc thùc hiÖn Ýt nhÊt mét lÇn nÕu ®iÒu kiÖn sai ngay tõ vßng ®Çu tiªn.

*repeat until

Có ph¸p:

repeat

c«ng_viÖc

until ®iÒu_kiÖn

Vßng lÆp repeat until thùc hiÖn th©n vßng lÆp tr−íc sau ®ã míi tiÕn hµnh kiÓm tra ®iÒu kiÖn lÆp, nÕu ®iÒu kiÖn ®óng th× vßng lÆp kÕt thóc, nÕu ®iÒu kiÖn sai th× vßng lÆp tiÕp tôc ®−îc thùc hiÖn. C«ng viÖc trong vßng lÆp ®−îc thùc hiÖn Ýt nhÊt mét lÇn nÕu ®iÒu kiÖn ®óng ngay tõ vßng ®Çu tiªn.

VÝ dô 8: ViÕt ch−¬ng tr×nh ®Õm sè ký tù trªn mét dßng ®−îc nhËp tõ bµn phÝm.

Gi¶i: L−u ®å thuËt to¸n vµ ®o¹n m· b»ng hîp ng÷ cña vÝ dô nµy ta cã thÓ sö dông vßng lÆp do while vµ repeat until nh− sau:

S

§iÒu kiÖn

C«ng viÖc

§

H×nh 3.17. L−u ®å thuËt to¸n cÊu tróc lÆp do while

S

§iÒu kiÖn

C«ng viÖc

§

H×nh 3.18. L−u ®å thuËt to¸n cÊu tróc lÆp repeat until

Page 76: vµ cÊu tróc m¸y tÝnh€¦ ·

76

C¸ch 1: Sö dông vßng lÆp do while.

MOV AH,1

tieptuc:

INT 21H

CMP AL,0DH

JnE tieptuc

ketthuc:

mov AH,4CH

int 21H

C¸ch 2: Sö dông vßng lÆp repeat until.

MOV AH,1

tieptuc:

INT 21H

CMP AL,0DH

JE ketthuc

Jmp tieptuc

ketthuc:

mov AH,4CH

int 21H

H×nh 3.19. L−u ®å thuËt to¸n vÝ dô 8

sö dông vßng lÆp do while

S

Begin

NhËp vµo 1 ký tù

AL = 0DH

End

§

§

Begin

NhËp vµo 1 ký tù

Al ≠ 0DH

End

H×nh 3.20. L−u ®å thuËt to¸n vÝ dô 8

sö dông vßng lÆp repeat until

S

Page 77: vµ cÊu tróc m¸y tÝnh€¦ ·

77

3.4.4. Nhãm lÖnh xö lý bit

C¸c lÖnh logic, dÞch vµ quay cã thÓ t¸c ®éng ®Õn tõng bit trong mét byte hoÆc mét tõ, nhãm lÖnh nµy ®−îc dïng ®Ó thiÕt lËp, vµ kiÓm tra tõng bit trong thanh ghi hay « nhí mµ kh«ng ¶nh h−ëng ®Õn c¸c bit kh¸c.

3.4.4.1. C¸c lÖnh logic

a) C¸c lÖnh AND, OR, XOR vµ TEST

D¹ng lÖnh:

AND

OR

XOR

TEST

®Ých, nguån

®Ých, nguån

®Ých, nguån

®Ých, nguån

Thao t¸c: Mçi bit to¸n h¹ng nguån ®−îc lÊy logic víi bit t−¬ng øng cña to¸n h¹ng ®Ých theo b¶ng ch©n lý 3.5. KÕt qu¶ ®−îc l−u trong to¸n h¹ng ®Ých, cê CF vµ OF bÞ xo¸.

Cê: BÞ ¶nh h−ëng: PF, SF, ZF.

Cê AF kh«ng x¸c ®Þnh.

B¶ng 3.5. B¶ng ch©n lý cña c¸c phÐp to¸n logic

nguånnguånnguånnguån ®Ých®Ých®Ých®Ých

®Ých®Ých®Ých®Ých

(kÕt qu¶)(kÕt qu¶)(kÕt qu¶)(kÕt qu¶) nguånnguånnguånnguån ®Ých®Ých®Ých®Ých

®Ých®Ých®Ých®Ých

(kÕt qu¶)(kÕt qu¶)(kÕt qu¶)(kÕt qu¶)

1 1 1 1 1 0

1 0 0 1 0 1

0 1 0 0 1 1 andandandand

0 0 0

Xor

0 0 0

1 1 1 0 1

1 0 1 0 1

0 1 1 1 0 orororor

0 0 0

not

1 0

Page 78: vµ cÊu tróc m¸y tÝnh€¦ ·

78

LÖnh TEST thùc hiÖn thao t¸c gièng nh− lÖnh AND nh−ng kh«ng l−u l¹i kÕt qu¶ trong to¸n h¹ng ®Ých, th−êng TEST ®−îc sö dông lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y.

Ta cã thÓ dïng c¸c lÖnh logic ®Ó thay ®æi cã chän läc c¸c bit cña to¸n h¹ng ®Ých. §Ó lµm ®iÒu ®ã chóng ta t¹o lªn mét mÉu bit ®−îc gäi lµ mÆt n¹ (MASK). C¸c bit cña mÆt n¹ ®−îc chän sao cho c¸c bit t−¬ng øng cña to¸n h¹ng ®Ých ®−îc thay ®æi ®óng nh− ta mong muèn khi lÖnh logic ®−îc thùc hiÖn.

§Ó t×m ®−îc mÆt n¹, tõ b¶ng trªn rót ra mét sè kÕt luËn sau:

− LÖnh AND cã thÓ sö dông ®Ó xo¸ c¸c bit nhÊt ®Þnh cña to¸n h¹ng ®Ých trong khi gi÷ nguyªn c¸c bit cßn l¹i. Bit 0 cña mÆt n¹ sÏ xo¸ bit t−¬ng øng, cßn bit 1 cña mÆt n¹ gi÷ nguyªn bit t−¬ng øng cña to¸n h¹ng ®Ých.

− LÖnh OR cã thÓ ®−îc dïng ®Ó thiÕt lËp c¸c bit x¸c ®Þnh cña to¸n h¹ng ®Ých trong khi vÉn gi÷ nguyªn nh÷ng bit cßn l¹i. Bit 1 cña mÆt n¹ sÏ thiÕt lËp bit t−¬ng øng trong khi bit 0 cña nã gi÷ nguyªn bit t−¬ng øng cña to¸n h¹ng ®Ých.

− LÖnh XOR cã thÓ dïng ®Ó ®¶o c¸c bit x¸c ®Þnh cña to¸n h¹ng ®Ých trong khi vÉn gi÷ nguyªn c¸c bit cßn l¹i. Bit 1 cña mÆt n¹ lµm ®¶o bit t−¬ng øng cßn bit 0 gi÷ nguyªn bit t−¬ng øng cña to¸n h¹ng ®Ých. XOR cßn cã thÓ xo¸ néi dung cña thanh ghi hay « nhí.

D−íi ®©y lµ mét sè vÝ dô minh ho¹:

+ §Ó xo¸ bit dÊu cña AL trong khi gi÷ nguyªn c¸c bit cßn l¹i. Ta sö dông lÖnh AND, mÆt n¹ t×m ®−îc lµ 01111111B (7FH) nh− sau:

AND AL,7FH

+ §Ó thiÕt lËp bit cã träng sè cao nhÊt vµ bit cã träng sè thÊp nhÊt cña thanh ghi AH trong khi gi÷ nguyªn c¸c bit cßn l¹i. Ta sö dông lÖnh OR víi mÆt n¹ 10000001B = 81H nh− sau:

OR AH,81H

+ §æi tõ m· ASCII cña sè sang sè

Tõ b¶ng m· ASCII ta thÊy m· ASCII cña c¸c ch÷ sè tõ ‘0’ ®Õn ‘9’ lµ tõ 30H ®Õn 39H. Nh− vËy, m· ASCII cña ch÷ sè h¬n chÝnh sè ®ã lµ 30H. Ta cã thÓ sö dông lÖnh AND hoÆc SUB ®Ó ®æi tõ m· ASCII sang sè. VÝ dô: nÕu ta nhËp vµo tõ bµn phÝm ch÷ sè ‘7’ th× néi dung cña thanh ghi AL lµ 37H, ®Ó néi dung chøa trong AL chÝnh lµ gi¸ trÞ 7 nhËp vµo th× ta ph¶i sö dông mét trong hai lÖnh sau:

Page 79: vµ cÊu tróc m¸y tÝnh€¦ ·

79

and AL,0FH ; xo¸ 4 bit cao

HoÆc

sub AL,30H

+ §æi ch÷ th−êng thµnh ch÷ hoa hoÆc ch÷ hoa thµnh ch÷ th−êng

M· ASCII cña c¸c ch÷ th−êng tõ ‘a’ ®Õn ‘z’ n»m tõ 61H ®Õn 7AH, m· ASCII cña c¸c ch÷ hoa tõ ‘A’ ®Õn ‘Z’ n»m tõ 41H ®Õn 5AH. Nh− vËy muèn chuyÓn m· ASCII cña ch÷ th−êng sang hoa chØ cÇn trõ ®i 20H (00100000B). NÕu so s¸nh m· ASCII d¹ng nhÞ ph©n cña c¸c ch÷ th−êng vµ ch÷ hoa t−¬ng øng sÏ thÊy:

Ký tùKý tùKý tùKý tù M· ASCIIM· ASCIIM· ASCIIM· ASCII Ký tùKý tùKý tùKý tù M· ASCIIM· ASCIIM· ASCIIM· ASCII

a 01100001 A 01000001

b 01100010 B 01000010

. . . . . . . . . . . .

z 01111010 Z 01011010

§Ó chuyÓn ch÷ th−êng thµnh hoa ta chØ viÖc xo¸ bit 5 b»ng c¸ch thùc hiÖn lÖnh AND víi mÆt n¹ 11011111B (0DFH). VÝ dô AL chøa m· ASCII cña ch÷ th−êng, muèn chuyÓn thµnh ch÷ hoa ta dïng lÖnh sau:

and AL,0DFH ; xo¸ bit 5 cña AL

HoÆc

sub AL,20H

Ng−îc l¹i, muèn ®æi ch÷ hoa thµnh th−êng chØ cÇn thiÕt lËp bit thø 5, gi÷ nguyªn c¸c bit kh¸c b»ng c¸ch thùc hiÖn lÖnh OR víi mÆt n¹ 00100000B (20H). Gi¶ sö AL chøa m· ASCII cña ch÷ hoa ®Ó chuyÓn sang ch÷ th−êng ta dïng lÖnh sau: or AL, 20H ; thiÕt lËp bit 5 cña AL

HoÆc: add AL,20H

+ Xo¸ mét thanh ghi

§Ó xo¸ mét thanh ghi ta cã thÓ dïng mét trong c¸c c¸ch sau:

MOV CX,0

SUB CX,CX

XOR CX,CX

CX sÏ ®−îc xo¸ vÒ 0 nÕu ta sö dông mét trong c¸c lÖnh trªn.

Page 80: vµ cÊu tróc m¸y tÝnh€¦ ·

80

+ KiÓm tra mét thanh ghi hay « nhí chøa gi¸ trÞ ch½n hay lÎ

§Ó kiÓm tra mét thanh ghi hay mét « nhí chøa sè ch½n hay lÎ, ta cã thÓ sö dông lÖnh AND víi mÆt n¹ lµ 1. NÕu kÕt qu¶ lµ 0 th× lµ sè ch½n, ng−îc l¹i lµ sè lÎ. VÝ dô kiÓm tra AL lµ ch½n hay lÎ ta cã thÓ sö dông lÖnh TEST hoÆc AND nh− sau:

TEST AL,01H

And Al,01H

NÕu ZF = 0 th× AL lµ sè ch½n, ng−îc l¹i AL lµ sè lÎ.

b) LÖnh NOT (logical NOT)

D¹ng lÖnh:

NOT ®Ých

Thao t¸c: T¹o d¹ng bï 1 cña to¸n h¹ng, xem b¶ng 3.5.

Cê: Kh«ng bÞ ¶nh h−ëng.

VÝ dô néi dung cña thanh ghi AL b»ng 11110000B, sau khi thùc hiÖn lÖnh:

NOT AL

néi dung cña thanh ghi AL b»ng 00001111B.

3.4.4.2. C¸c lÖnh dÞch vµ quay

a) C¸c lÖnh dÞch

C¸c lÖnh dÞch sÏ dÞch c¸c bit trong to¸n h¹ng sang tr¸i hoÆc sang ph¶i mét hay nhiÒu vÞ trÝ. C¸c bit bÞ dÞch ra ngoµi sÏ ®−îc ®−a vµo cê nhí.

+ LÖnh SAL/SHL (Shift Arithmethic Left/SHift logical Left)

D¹ng lÖnh:

SHL/SAL ®Ých,1

HoÆc:

SHL/SAL ®Ých,cl

Thao t¸c: DÞch c¸c bit trong to¸n h¹ng ®Ých sang tr¸i mét hay nhiÒu vÞ trÝ. Bit bªn tr¸i nhÊt sÏ ®−îc dÞch vµo cê nhí, bit bªn ph¶i nhÊt sÏ ®−îc ®−a 0 vµo.

NÕu dÞch tr¸i mét vÞ trÝ ta dïng lÖnh thø nhÊt, ®Ó dÞch nhiÒu h¬n mét lÇn sè lÇn dÞch ®−îc ®Æt trong CL. Khi bé ®Õm CL = 1 vµ MSB cña to¸n

Page 81: vµ cÊu tróc m¸y tÝnh€¦ ·

81

h¹ng ®Ých bÞ thay ®æi so víi tr−íc khi quay th× cê OF ®−îc thiÕt lËp 1, nÕu chóng b»ng nhau th× cê OF bÞ xo¸. NÕu bé ®Õm kh¸c 1, OF kh«ng x¸c ®Þnh, CL kh«ng thay ®æi khi lÖnh thùc hiÖn xong.

LÖnh SAL vµ SHL t¹o ra cïng mét m· m¸y.

Cê: BÞ ¶nh h−ëng CF, OF, PF, SF, ZF.

Kh«ng x¸c ®Þnh AF.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

0

CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0

CF 7 6 5 4 3 2 1 0

VÝ dô 1: Gi¶ sö thanh ghi AH chøa 7AH (01111010B), nÕu thùc hiÖn lÖnh SHL AH,1, néi dung trong AH nhËn ®−îc b»ng c¸ch xo¸ ®i 1 bit phÇn cao cña AH vµ thªm 1 bit 0 vµo phÇn thÊp. KÕt qu¶ lµ AH = 11110100B, cê CF = 0. NÕu muèn dÞch tr¸i AH ba vÞ trÝ ta thùc hiÖn c¸c lÖnh nh− sau (gi¶ sö thanh ghi AH chøa 7AH):

mov CL,3

SHL AH,CL

; CL chøa sè lÇn dÞch

Sau khi thùc hiÖn lÖnh SHL AH,CL, néi dung trong AH nhËn ®−îc b»ng c¸ch xo¸ ®i ba bit phÇn cao cña AH vµ thªm ba bit 0 vµo phÇn thÊp. LÖnh dÞch nhiÒu bit thùc chÊt lµ thùc hiÖn nhiÒu lÖnh dÞch mét bit v× thÕ cã thÓ thay hai lÖnh trªn b»ng ba lÖnh dÞch mét bit liªn tiÕp, cê CF chøa bit cuèi cïng dÞch ra khái to¸n h¹ng.

CF 7 6 5 4 3 2 1 0

0 1 1 1 1 0 1 0 0

CF

1 1 1 0 1 0 0 0 0

KÕt qu¶ lµ AH = 11010000B, cê CF chøa 1.

Page 82: vµ cÊu tróc m¸y tÝnh€¦ ·

82

Khi dÞch to¸n h¹ng sang tr¸i mét bit sÏ t−¬ng øng nh©n sè ®ã víi 2. VÝ dô AH = 00000011B (3), dÞch tr¸i mét bit ta ®−îc 00000110B (6) nÕu dÞch tr¸i tiÕp ta sÏ ®−îc 00001100B (12). Nh− vËy, khi dÞch tr¸i to¸n h¹ng n vÞ trÝ t−¬ng øng nh©n to¸n h¹ng ®ã víi 2n. HiÖn t−îng trµn cã thÓ x¶y ra khi chóng ta sö dông lÖnh dÞch tr¸i ®Ó thùc hiÖn phÐp nh©n.

+ LÖnh SHR (SHift logical Right)

D¹ng lÖnh: SHR ®Ých,1

HoÆc: SHR ®Ých,CL

Thao t¸c: DÞch c¸c bit trong to¸n h¹ng ®Ých sang ph¶i mét hay nhiÒu vÞ trÝ. CF nhËn ®−îc bit LSB vµ 0 ®−îc dÞch vµo bit MSB.

NÕu dÞch mét vÞ trÝ ta dïng lÖnh thø nhÊt, ®Ó dÞch nhiÒu h¬n mét lÇn sè lÇn dÞch ®−îc ®Æt trong CL. Khi bé ®Õm b»ng 1 vµ 2 bit tr¸i nhÊt cña to¸n h¹ng ®Ých b»ng nhau th× cê OF bÞ xo¸. NÕu chóng kh¸c nhau, OF thiÕt lËp 1. Bé ®Õm kh¸c 1, OF kh«ng x¸c ®Þnh, CL kh«ng thay ®æi.

Cê: BÞ ¶nh h−ëng CF, OF, PF, SF, ZF.

Kh«ng x¸c ®Þnh AF.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CF

0

7 6 5 4 3 2 1 0 CF

VÝ dô 2: Gi¶ sö CL chøa 3, AH chøa 93H, sau khi thùc hiÖn lÖnh SHL AH, CL néi dung trong AH nhËn ®−îc b»ng c¸ch xo¸ ®i ba bit phÇn thÊp vµ thªm ba bit 0 vµo phÇn cao cña AH.

7 6 5 4 3 2 1 0 CF

0 1 0 0 1 0 0 1 1

CF

0 0 0 1 0 0 1 0 0

Page 83: vµ cÊu tróc m¸y tÝnh€¦ ·

83

KÕt qu¶ lµ AH = 00001111B, cê CF chøa bit cuèi cïng dÞch ra khái to¸n h¹ng.

Ng−îc l¹i víi phÐp dÞch tr¸i, khi dÞch ph¶i to¸n h¹ng mét bit sÏ t−¬ng øng chia sè ®ã cho 2, khi dÞch ph¶i to¸n h¹ng n vÞ trÝ t−¬ng øng chia to¸n h¹ng ®ã cho 2n. VÝ dô AH = 10100000B (160), dÞch ph¶i mét bit ta ®−îc 01010000B (80) nÕu dÞch ph¶i tiÕp ta sÏ ®−îc 00001100B (40). Nh−ng ®iÒu nµy chØ ®óng víi c¸c sè ch½n, cßn ®èi víi c¸c sè lÎ, dÞch ph¶i sÏ chia ®«i nã vµ lµm trßn xuèng sè nguyªn gÇn nhÊt.

+ LÖnh SAR (Shift Arithmetically Right)

D¹ng lÖnh: SAR ®Ých,1

HoÆc: SAR ®Ých,CL

Thao t¸c: D¹ng ®Çu dÞch to¸n h¹ng ®Ých 1 lÇn, CF nhËn ®−îc bit LSB vµ bit MSB ®−îc gi÷ nguyªn. §Ó dÞch nhiÒu h¬n 1 lÇn, sè lÇn dÞch ®−îc ®Æt trong CL. OF lu«n b»ng 0, CL kh«ng thay ®æi.

Cê: BÞ ¶nh h−ëng CF, OF, PF, SF, ZF.

Kh«ng x¸c ®Þnh AF.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CF

0

7 6 5 4 3 2 1 0 CF

VÝ dô 3: Gi¶ sö CL chøa 3, AH chøa 10010011B (93H), sau khi thùc hiÖn lÖnh SAR AH, CL néi dung trong AH nhËn ®−îc b»ng c¸ch xo¸ ®i ba bit phÇn thÊp vµ gi÷ nguyªn bit cao nhÊt (bit 7) sau mçi lÇn dÞch. Bit MSB cña AH lµ 1 nªn néi dung AH ®−îc thªm ba bit 1 vµo phÇn cao.

7 6 5 4 3 2 1 0 CF

0 1 0 0 1 0 0 1 1

CF

1 1 1 1 0 0 1 0 0

Page 84: vµ cÊu tróc m¸y tÝnh€¦ ·

84

Khi chia b»ng phÐp dÞch ph¶i sÏ cã sù kh¸c biÖt gi÷a phÐp chia víi c¸c sè kh«ng dÊu vµ phÐp chia víi c¸c sè cã dÊu. NÕu ta thùc hiÖn phÐp chia víi c¸c sè kh«ng dÊu ta sö dông lÖnh SHL, cßn khi thùc hiÖn phÐp chia víi c¸c sè cã dÊu ta ph¶i sö dông SAR v× lÖnh nµy gi÷ nguyªn dÊu, sö dông lÖnh SHR sÏ lµm mÊt dÊu cña to¸n h¹ng.

VÝ dô 4: Gi¶ sö CL chøa −10 (11110101B), sau khi thùc hiÖn lÖnh SAR CL,1 néi dung trong CL nhËn ®−îc b»ng −5 (11111010B).

LÖnh dÞch chØ cã thÓ thùc hiÖn ®−îc phÐp nh©n vµ chia víi c¸c sè lµ luü thõa cña 2, muèn nh©n víi c¸c sè bÊt kú ta ph¶i sö dông lÖnh nh©n vµ lÖnh chia trong phÇn sau.

b) C¸c lÖnh quay

LÖnh quay thùc hiÖn dÞch tÊt c¶ c¸c bit cña to¸n h¹ng sang tr¸i hoÆc ph¶i mét hay nhiÒu vÞ trÝ, bit dÞch ra khái to¸n h¹ng sÏ ®−îc ®−a vµo cê nhí ®ång thêi ®−a trë l¹i.

+ LÖnh ROL (ROtate Left)

D¹ng lÖnh: ROL ®Ých,1

HoÆc: ROL ®Ých,CL

Thao t¸c: LÖnh ROL thùc hiÖn dÞch tÊt c¶ c¸c bit cña to¸n h¹ng ®Ých sang tr¸i mét hay nhiÒu vÞ trÝ, bit MSB dÞch ra khái to¸n h¹ng sÏ ®−îc ®−a vµo cê nhí ®ång thêi ®−a trë l¹i vÞ trÝ bit LSB.

NÕu quay tr¸i mét vÞ trÝ ta dïng lÖnh thø nhÊt, nÕu quay nhiÒu h¬n mét lÇn, sè lÇn quay ®−îc ®Æt trong CL. Khi bé ®Õm b»ng 1 vµ MSB cña to¸n h¹ng ®Ých bÞ thay ®æi so víi tr−íc khi quay th× cê OF ®−îc thiÕt lËp 1. NÕu bé ®Õm kh¸c 1, OF kh«ng x¸c ®Þnh, CL kh«ng thay ®æi.

Cê: BÞ ¶nh h−ëng, ngo¹i trõ OF, CF.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF 7 6 5 4 3 2 1 0

Page 85: vµ cÊu tróc m¸y tÝnh€¦ ·

85

+ LÖnh ROR (ROtate Right)

D¹ng lÖnh: ROR ®Ých,1

HoÆc: ROR ®Ých,CL

Thao t¸c: Ng−îc víi lÖnh ROL, ROR thùc hiÖn dÞch tÊt c¶ c¸c bit cña to¸n h¹ng ®Ých sang ph¶i mét hay nhiÒu vÞ trÝ, bit LSB dÞch ra khái to¸n h¹ng sÏ ®−îc ®−a vµo cê nhí ®ång thêi ®−a trë l¹i vÞ trÝ bit MSB.

Cê: BÞ ¶nh h−ëng, ngo¹i trõ OF, CF.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CF

7 6 5 4 3 2 1 0 CF

VÝ dô 5: HiÓn thÞ tõng bit trong mét to¸n h¹ng mµ kh«ng lµm thay ®æi néi dung cña chóng. Gi¶ sö hiÓn thÞ c¸c bit cña thanh ghi AX.

top:

so1:

thoat:

MOV CX,16

MOV AH,2

ROL BX,1

JC so1

MOV DL,’0’

INT 21H

JMP thoat

MOV DL,’1’

INT 21H

Loop top

;®Õm sè bit cÇn hiÓn thÞ

;hµm hiÓn thÞ

;CF chøa bit MSB dÞch ®Õn

;CF = 1 xuèng hiÓn thÞ ‘1’

;CF = 0

;hiÓn thÞ 0

;bá qua hiÓn thÞ ‘1’

;hiÓn thÞ ‘1’

;lÆp l¹i 16 lÇn

Page 86: vµ cÊu tróc m¸y tÝnh€¦ ·

86

Muèn hiÓn thÞ tõng bit trong mét to¸n h¹ng th× ta ph¶i lÇn l−ît ®−a ®−îc c¸c bit cña to¸n h¹ng ®ã ra cê nhí. Sö dông lÖnh nh¶y JC hoÆc JNC, nÕu cã nhí (JC = 1) th× bit dÞch ra lµ bit 1, khi ®ã hiÓn thÞ ‘1’, ng−îc l¹i hiÓn thÞ ‘0’. Thùc hiÖn lÆp 16 lÇn ta in ra ®−îc 16 bit cña to¸n h¹ng. LÖnh ROL sau khi thùc hiÖn xong vßng lÆp gi¸ trÞ cña to¸n h¹ng vÉn gi÷ nguyªn.

§Ó ng¾n gän h¬n, ta cã thÓ dïng lÖnh ADC nh− sau:

top:

MOV CX,16

MOV AH,2

MOV DL,30H

ROL BX,1

ADC DL,0

INT 21H

loop top

; lÆp 16 lÇn

; hµm hiÓn thÞ

; DL = 30H + 0 + CF

; hiÓn thÞ ‘1’ hoÆc ‘0’

; lÆp l¹i nÕu CX = 0

+ LÖnh RCL (Rotate through Carry Left)

D¹ng lÖnh:

RCL ®Ých,1

HoÆc

RCL ®Ých,cl

Thao t¸c: Quay c¸c bit cña to¸n h¹ng ®Ých sang tr¸i qua cê CF mét hoÆc nhiÒu lÇn.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

+ LÖnh RCR (Rotate through Carry Right)

CF

CF

Page 87: vµ cÊu tróc m¸y tÝnh€¦ ·

87

D¹ng lÖnh:

RCR ®Ých,1

HoÆc:

RCR ®Ých,cl

Thao t¸c: Quay c¸c bit cña to¸n h¹ng ®Ých sang ph¶i qua cê CF mét hoÆc nhiÒu lÇn. Bit LSB cña to¸n h¹ng ®Ých ®−îc ®Æt vµo CF vµ néi dung cò cña CF ®−îc chuyÓn vµo bit MSB. LÖnh quay nhiÒu bit thùc chÊt lµ thùc hiÖn nhiÒu lÖnh dÞch mét bit, sè lÇn dÞch chøa trong CL.

Cê: BÞ ¶nh h−ëng: CF, OF.

M« t¶: Víi to¸n h¹ng lµ mét tõ hoÆc mét byte nh− sau:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

VÝ dô 6: §Ó ®¶o c¸c mÉu bit trong mét byte hoÆc mét tõ, ta cã thÓ sö dông kÕt hîp c¶ lÖnh quay vµ lÖnh dÞch. Dïng lÖnh dÞch tr¸i SHL ®Ó dÞch c¸c bit phÝa bªn tr¸i ra khái to¸n h¹ng, sau ®ã dïng lÖnh RCR ®Ó ®−a vµo mét thanh ghi kh¸c. §o¹n ch−¬ng tr×nh nh− sau sÏ ®¶o ng−îc mÉu bit trong thanh ghi BX:

top:

MOV CX,16

SHL BX,1

ROR AX,1

loop top

MOV BX,AX

; lÆp 16 lÇn

; dÞch bit MSB sang cê CF

; quay bit trong CF vµo AX

; lÆp l¹i nÕu CX = 0

; BX chøa mÉu bit ®¶o ng−îc

3.4.4.3. øng dông cña c¸c lÖnh thao t¸c bit

a) Vµo/ra sè nhÞ ph©n

CF

CF

Page 88: vµ cÊu tróc m¸y tÝnh€¦ ·

88

§Ó nhËp vµo tõ bµn phÝm mét sè nhÞ ph©n (10110100B) vµ l−u sè ®ã trong thanh ghi BX, thùc chÊt ta ph¶i nhËp liªn tiÕp mét d·y c¸c ký tù ‘0’ vµ ‘1’. Mçi mét ký tù ‘0’ hoÆc ‘1’ ®−îc nhËp th× AL chøa 30H hoÆc 31H, ta ph¶i ®æi chóng thµnh gi¸ trÞ cña tõng bit råi dÞch c¸c bit vµo trong thanh ghi.

§o¹n m· sau thùc hiÖn nhËp mét sè nhÞ ph©n vµo tõ bµn phÝm vµ l−u vµo BX.

mov BX,0

mov CX,16

lap:

mov AH,1

int 21H

and AL,0FH

shl BX,1

or BL,AL

loop lap

thoat:

;®Õm sè bit cÇn hiÓn thÞ

;hµm hiÓn thÞ

;CF chøa bit MSB dÞch ®Õn

;CF = 1 xuèng hiÓn thi ‘1’

;CF = 0

;hiÓn thÞ 0

;bá qua hiÓn thÞ ‘1’

;hiÓn thÞ ‘1’

;lÆp l¹i 16 lÇn

ThuËt to¸n sau hiÓn thÞ ®−a ra néi dung thanh ghi BX d−íi d¹ng sè nhÞ ph©n (®o¹n m· ch−¬ng tr×nh ®· ®−îc tr×nh bµy trong vÝ dô 5, môc 3.4.3.3).

H×nh 3.21. ThuËt to¸n vµo mét sè nhÞ ph©n 16 bit tõ bµn phÝm

Begin

Vµo 1 hoÆc 0

AND AL, 0FH

SHL BX, 1

16 lÇn

OR BL, AL

Page 89: vµ cÊu tróc m¸y tÝnh€¦ ·

89

b) Vµo/ra sè hexa

H×nh 3.23. ThuËt to¸n ®−a ra mét sè hexa

Begin

OR AL,BL/ AND AL,0FH

AL > 09H

AL = AL+37H OR AL,30H

HiÓn thÞ ký tù trong AL

4 lÇn

S

§

Quay tr¸i BX 4 lÇn

H×nh 3.22. ThuËt to¸n ®−a ra mét sè nhÞ ph©n 16 bit tõ thanh ghi BX

Begin

RCL BX, 1

HiÓn thÞ sè 1 HiÓn thÞ sè 0

16 lÇn

S

§

CF=1?

Page 90: vµ cÊu tróc m¸y tÝnh€¦ ·

90

§o¹n m· ch−¬ng tr×nh sau ®©y hiÓn thÞ néi dung cña thanh ghi BX d−íi d¹ng sè hexa.

MOV DH,4

MOV AH,02

MOV CL,04

T1: ROR BX,CL

MOV DL,BL

AND DL,0FH

ADD DL,30H

CMP DL,39H

JNG T2

ADD DL,07H

T2: INT 21

DEC DH

JNZ T1

H×nh 3.24. ThuËt to¸n vµo mét sè hexa tõ bµn phÝm

Begin

Vµo 1 sè HEXA

AL > 39H

AL = AL − 37H AND AL,0FH

DÞch tr¸i BX 4 lÇn

4 lÇn

S

§

OR BL,AL

Page 91: vµ cÊu tróc m¸y tÝnh€¦ ·

91

§o¹n m· ch−¬ng tr×nh sau ®©y cho phÐp nhËp mét sè hexa vµo thanh ghi BX.

T1:

T2:

XOR BX,BX

MOV DH,4

MOV AH,1

INT 21H

SUB AL,30H

CMP AL,9H

JNG T2

SUB DL,07H

MOV CL,04

SHL BX,CL

OR BL,AL

DEC DH

JNZ T1

3.4.5. Nhãm lÖnh xö lý ®iÒu khiÓn

3.4.5.1. ESC (ESCape)

Cho phÐp c¸c bé vi xö kh¸c, ch¼ng h¹n 8087, thùc hiÖn c¸c thao t¸c cña chóng. Bé vi xö lý 8086 kh«ng thùc hiÖn thao t¸c ngo¹i trõ viÖc lÊy c¸c to¸n h¹ng bé nhí cho c¸c bé xö lý kh¸c.

D¹ng lÖnh: ESC extenal_opcode, soure

Cê: Kh«ng.

3.4.5.2. LÖnh HLT (HaLT)

§−a bé vi xö lý vµo tr¹ng th¸i dõng ®Ó chê ng¾t ngoµi.

D¹ng lÖnh: HLT

Cê: Kh«ng.

Page 92: vµ cÊu tróc m¸y tÝnh€¦ ·

92

3.4.5.3. LÖnh LOCK (kho¸ bus)

Kho¸ bus trong m«i tr−êng cã nhiÒu bé vi xö lý.

D¹ng lÖnh: LOCK

Thao t¸c: Lock cã thÓ dïng nh− mét tiÒn tè ®Æt tr−íc bÊt cø mét lÖnh nµo. Bus sÏ bÞ kho¸ trong thêi gian thùc hiÖn lÖnh ®Ó ng¨n c¸c bé vi xö lý kh¸c truy cËp bé nhí.

Cê: Kh«ng ¶nh h−ëng.

3.4.5.4. LÖnh NOP (No OPeration)

D¹ng lÖnh: NOP

Thao t¸c: Kh«ng thùc hiÖn mét thao t¸c nµo.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.5.5. LÖnh STI (SeT Interrupt flag)

D¹ng lÖnh: STI

Thao t¸c: IF ®−îc thiÕt lËp 1.

Cê: BÞ ¶nh h−ëng IF.

3.4.5.6. LÖnh WAIT

D¹ng lÖnh: WAIT

Thao t¸c: Bé vi xö lý ë tr¹ng th¸i chê cho ®Õn khi ®−îc kÝch ho¹t b»ng mét lÖnh ng¾t ngoµi.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.6. Nhãm lÖnh xö lý chuçi

3.4.6.1. LÖnh MOVS/MOVSB/MOVSW (MOVeS/MOVeS Byte/ MOVeS Word)

ChuyÓn d÷ liÖu trong bé nhí t¹i ®Þa chØ DS: SI vµo « nhí cã ®Þa chØ ES: DI b»ng c¸ch dïng tiÒn tè REP, cã thÓ chuyÓn ®ång thêi nhiÒu byte hay word.

D¹ng lÖnh:

Page 93: vµ cÊu tróc m¸y tÝnh€¦ ·

93

MOVS

hoÆc MOVSB

hoÆc MOVSW

chuçi_®Ých, chuçi_nguån

Thao t¸c: Chuçi byte (hay word) ®−îc chuyÓn tíi to¸n h¹ng ®Ých. C¶ DI vµ SI ®Òu t¨ng lªn 1 (hoÆc 2 ®èi víi word) nÕu DF = 0; gi¶m ®i 1 (hoÆc 2 ®èi víi word) nÕu DF = 1.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.4.6.2. LÖnh CMPS/CMPSB/CMPSW (COMPareS/ COMPareS Byte/ COMPareS Word)

So s¸nh hai to¸n h¹ng lµ mét chuçi byte hay word.

D¹ng lÖnh:

CMPS

hoÆc CMPSB

hoÆc CMPSW

chuçi_®Ých, chuçi_nguån

Thao t¸c: Trõ c¸c thµnh phÇn cña chuçi nguån (®−îc chØ sè b»ng DS: SI) cho c¸c thµnh phÇn chuçi ®Ých (®−îc chØ sè b»ng ES: SI). C¸c cê tr¹ng th¸i ®−îc thiÕt lËp theo kÕt qu¶ cña phÐp tÝnh. NÕu cê ®Þnh h−íng DF = 0 th× c¶ SI vµ DI ®Òu t¨ng sau mçi phÐp tÝnh (1 khi so s¸nh byte vµ 2 khi so s¸nh word) trong tr−êng hîp cßn l¹i c¶ SI vµ DI ®Òu gi¶m (1 khi so s¸nh byte vµ 2 khi so s¸nh word).

Cê: BÞ ¶nh h−ëng, ngo¹i trõ AF, CF, SF, ZF, PF, OF.

3.4.6.3. LÖnh LODS/LODSB/LODSW (LOaDS/ LOaDS Byte/ LOaDS Word)

ChuyÓn néi dung cña byte hay word tõ bé nhí ®−îc chØ ra bëi SI vµo thanh chøa.

D¹ng lÖnh:

LODS

hoÆc LODSB

hoÆc LODSW

chuçi_nguån

Page 94: vµ cÊu tróc m¸y tÝnh€¦ ·

94

Thao t¸c: Byte (hay word) ®−îc n¹p vµo AL (hay AX). SI t¨ng lªn 1 hay 2 nÕu DF = 0; ng−îc l¹i SI gi¶m ®i 1 (hay 2) nÕu DF = 1.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.5. Ng¨n xÕp vµ thñ tôc

3.5.1. Ng¨n xÕp

Ng¨n xÕp lµ n¬i l−u tr÷ d÷ liÖu t¹m thêi. Ng¨n xÕp ho¹t ®éng theo kiÓu ‘vµo tr−íc, ra sau’ (LIFO: Last In, First Out). PhÇn tö cuèi cïng cÊt vµo ng¨n xÕp sÏ lµ ®Ønh cña ng¨n xÕp vµ phÇn tö nµy sÏ ®−îc lÊy ra ®Çu tiªn.

3.5.1.1. LÖnh PUSH (PUSH word to stack)

CÊt mét tõ d÷ liÖu vµo ng¨n xÕp.

D¹ng lÖnh:

PUSH nguån

Thao t¸c: LÖnh PUSH nguån thùc hiÖn gi¶m SP ®i 2, sau ®ã chuyÓn b¶n sao cña to¸n h¹ng nguån ng¨n xÕp cã ®Þa chØ SS: SP.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.5.1.2. LÖnh PUSHF (PUSH Flag in to stack)

ChuyÓn thanh ghi cê vµo ng¨n xÕp.

D¹ng lÖnh:

PUSHF

Thao t¸c: Gi¶m SP ®i vµ chuyÓn c¸c bit cê vµo ®Ønh ng¨n xÕp.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.5.1.3. LÖnh POP (Pop word of stack to destinnation)

LÊy d÷ liÖu ra khái ng¨n xÕp vµ ®−a vµo to¸n h¹ng ®Ých.

D¹ng lÖnh:

POP ®Ých

Thao t¸c: Néi dung cña to¸n h¹ng ®Ých ®−îc thay vµo b»ng tõ n»m ë ®Ønh ng¨n xÕp, con trá ng¨n xÕp t¨ng lªn 2.

Cê: Kh«ng bÞ ¶nh h−ëng.

Page 95: vµ cÊu tróc m¸y tÝnh€¦ ·

95

3.5.1.4. LÖnh POPF (POP word from top of stack to Flag register)

D¹ng lÖnh:

POPF

Thao t¸c: ChuyÓn néi dung cña 2 byte tõ ®Ønh cña ng¨n xÕp vµo thanh ghi cê, sau ®ã t¨ng con trá ng¨n xÕp lªn 2.

Cê: TÊt c¶ c¸c cê bÞ ¶nh h−ëng.

Chó ý: TÊt c¶ c¸c lÖnh PUSH, POP ®Òu thao t¸c víi c¸c tõ lµ « nhí hay thanh ghi, nÕu ta dïng víi c¸c byte sÏ kh«ng hîp lÖ, VÝ dô:

PUSH AL

POP BL

PUSH 2000

; kh«ng hîp lÖ

; kh«ng hîp lÖ

; kh«ng hîp lÖ

Mçi ch−¬ng tr×nh ph¶i ®−îc dµnh ra mét khèi l−îng bé nhí ®Ó lµm ng¨n xÕp, c«ng viÖc ®ã ®−îc thùc hiÖn b»ng thñ tôc khai b¸o:

.STACK 100H

Trong khai b¸o trªn, con trá SP ®−îc khëi t¹o b»ng 100H, ®©y chÝnh lµ ®Ønh hiÖn thêi cña ng¨n xÕp khi ng¨n xÕp ch−a ®−îc sö dông. D−íi ®©y m« t¶ ho¹t ®éng cña ng¨n xÕp.

0100H SP 00FEH 00FCH 00FAH ... 100H SP ... 18CEH AX

0000H 203AH BX Offset Ng¨n xÕp

H×nh 3.25. Ng¨n xÕp khi ch−a sö dông

0100H 00FEH 203AH SP 00FCH 00FAH ... 00FEH SP ... 18CEH AX

0000H 203AH BX Offset Ng¨n xÕp

H×nh 3.26a. Ng¨n xÕp sau lÖnh PUSH BX

Page 96: vµ cÊu tróc m¸y tÝnh€¦ ·

96

0100H 00FEH 203AH 00FCH 18CEH SP 00FAH ... 00FCH SP ... 18CEH AX

0000H 203AH BX Offset Ng¨n xÕp

H×nh 3.26b. Ng¨n xÕp sau lÖnh PUSH AX (tr−íc lÖnh POP BX)

0100H 00FEH 203AH SP 00FCH 18CEH 00FAH ... 00FEH SP ... 18CEH AX

0000H 18CEH BX Offset Ng¨n xÕp

H×nh 3.27a. Ng¨n xÕp sau lÖnh POP BX

0100H SP 00FEH 203AH 00FCH 18CEH 00FAH ... 00FEH SP ... 203AH DX

0000H 18CEH BX Offset Ng¨n xÕp

H×nh 3.27b. Ng¨n xÕp sau lÖnh POP DX

VÝ dô: NhËp vµo 4 sè tù nhiªn tõ 0 ®Õn 9, tÝnh tæng cña chóng, chøa kÕt qu¶ trong BL.

D−íi ®©y lµ ch−¬ng tr×nh ®Çy ®ñ:

.model small

.stack 100H

.data

.code

main proc

Page 97: vµ cÊu tróc m¸y tÝnh€¦ ·

97

XOR AX,AX

MOV CX,4

top1:

MOV AH,1

INT 21H

AND AL,0FH

PUSH AX

loop top1

XOR AX,AX

MOV CX,4

top2:

POP AX

ADD BL,AL

loop top2

main endp

end main

; xo¸ AX

; vßng lÆp CX = 4 lÇn nhËp

; hµm nhËp mét ký tù

; thùc hiÖn nhËp

; ®æi m· ký tù thµnh sè

; cÊt vµo ng¨n xÕp

; xo¸ AX

; 4 lÇn nhËp

; lÊy ký tù trong ng¨n xÕp

; BL ®· chøa tæng cña 4 sè

3.5.2. Thñ tôc

Hµm vµ thñ tôc trong hîp ng÷ cã thÓ coi lµ ch−¬ng tr×nh con trong c¸c ng«n ng÷ bËc cao h¬n. Tõ ch−¬ng tr×nh chÝnh cã thÓ dïng lÖnh CALL ®Ó gäi c¸c hµm, thñ tôc. KÕt thóc c¸c hµm, thñ tôc ph¶i cã c¸c lÖnh RET hoÆc IRET ®Ó trë vÒ ch−¬ng tr×nh chÝnh.

Có ph¸p khai b¸o mét thñ tôc nh− sau:

name proc type

; c¸c lÖnh trong th©n cña thñ tôc

ret

name endp

Trong ®ã NAME lµ tªn thñ tôc. TYPE lµ kiÓu thñ tôc, cã hai kiÓu thñ tôc lµ kiÓu NEAR vµ kiÓu FAR. NÕu c¸c dßng lÖnh gäi thñ tôc ë cïng mét ®o¹n víi thñ tôc ®ã th× sÏ lµ kiÓu NEAR, ng−îc l¹i sÏ lµ FAR. NÕu bá qua TYPE th× sÏ ngÇm ®Þnh lµ kiÓu NEAR.

Page 98: vµ cÊu tróc m¸y tÝnh€¦ ·

98

3.5.2.1. LÖnh CALL (gäi thñ tôc)

D¹ng lÖnh:

CALL name

Thao t¸c: §Þa chØ offset cña lÖnh ngay sau lÖnh CALL lµ ®Þa chØ trë vÒ cña ch−¬ng tr×nh ®−îc cÊt vµo ng¨n xÕp. §iÒu khiÓn ®−îc chuyÓn cho thñ tôc, IP chøa ®Þa chØ offset cña lÖnh ®Çu tiªn trong thñ tôc.

Cê: Kh«ng bÞ ¶nh h−ëng.

3.5.2.2. LÖnh IRET (Interrupt RETurn)

D¹ng lÖnh:

IRET

Thao t¸c: LÊy ra khái ng¨n xÕp néi dung cña CS, IP vµ thanh ghi flags.

Cê: TÊt c¶ c¸c cê ®Òu bÞ ¶nh h−ëng.

3.5.2.3. LÖnh RET (RETurn from procedure)

Tr¶ l¹i ®iÒu khiÓn khi thñ tôc ®−îc thùc hiÖn xong.

D¹ng lÖnh: RET

Thao t¸c: NÕu lÖnh RET mét thñ tôc NEAR, nã ®−îc dÞch thµnh mét lÖnh trë vÒ trong cïng ®o¹n, lÖnh nµy cËp nhËt thanh ghi IP b»ng c¸ch lÊy mét tõ ra khái ng¨n xÕp.

Cê: Kh«ng bÞ ¶nh h−ëng.

Sau ®©y lµ mét vÝ dô dïng thñ tôc:

.model small

.stack 100H

.data

x_dong DB 13,10

.code

main proc

mov AX,@data

mov DS,AX

call nhap

push BX

; khëi t¹o thanh ghi DS

; nhËp sè thø nhÊt vµo BX

; cÊt sè thø nhÊt vµo ng¨n xÕp

Page 99: vµ cÊu tróc m¸y tÝnh€¦ ·

99

mov AH,9

lea DX,x_dong

int 21H

call nhap

pop AX

add BX,AX

mov AH,9

lea DX,x_dong

int 21H

mov CX,16

mov AH,2

mov DL,30H

lap2:

rol BX,1

adc AL,0

int 21H

loop lap2

mov AH,4CH

int 21H

main endp

nhap proc near

mov BX,0000H

mov CX,10H

lap1:

mov AH,1

int 21H

cmp AL,0DH

jne thoat

and AL,0FH

shl BX,1

; xuèng dßng vÒ ®Çu dßng

; nhËp sè thø hai vµo BX

; lÊy sè thø nhÊt ®Æt vµo AX

; céng hai sè l−u kÕt qu¶ ë BX

; xuèng dßng vÒ ®Çu dßng

; hiÓn thÞ kÕt qu¶ d−íi d¹ng

; nhÞ ph©n

; ch−¬ng tr×nh con nhËp vµo

; mét sè nhÞ ph©n

Page 100: vµ cÊu tróc m¸y tÝnh€¦ ·

100

or BL,AL

loop lap1

thoat:

ret

nhap endp

end main

Bµi tËp ch−¬ng 3 1. Cho biÕt kÕt qu¶ cña thanh ghi AX khi vi xö lý thùc hiÖn xong ®o¹n ch−¬ng

tr×nh sau:

b) MOV AX,1

MOV CX,5

TOP:

MUL CL

LOOP TOP

a) MOV BH,0

MOV AX,0

T:

ADD BH,1

MUL BH

CMP BH,45

JNE T

d) mov AH,1

int 21H

c) mov AH,1

int 21H

mov BL,AL

mov AH,2

mov DL,0DH

int 21H

mov DL,0AH

int 21H

mov DL,BL

mov CL,AL

CMP AL,61H

JNZ T

MOV AH,2

mov DL,CL

INT 21H

JMP TH

T:CMP AL,41H

JNZ TH

MOV AH,2

mov DL,CL

INT 21H

INT 21H

TH:

Page 101: vµ cÊu tróc m¸y tÝnh€¦ ·

101

2. ViÕt ch−¬ng tr×nh t×m MAX cña 2 sè kh«ng b»ng nhau, cÊt vµo ng¨n xÕp sè

lín, gi¶ sö 2 sè ®ang n»m trong AL vµ AH.

3. ViÕt ch−¬ng tr×nh thùc hiÖn phÐp to¸n céng vµ hiÓn thÞ kÕt qu¶ d−íi d¹ng sè nhÞ ph©n.

AX = 0 + 1 + 2 +...+ 255.

4. ViÕt ch−¬ng tr×nh thùc hiÖn phÐp to¸n céng vµ hiÓn thÞ kÕt qu¶ d−íi d¹ng sè hexa.

AX = 1 + 5 + 10 +...+ 100.

5. ViÕt ch−¬ng tr×nh thùc hiÖn phÐp to¸n AX = 7!, sau ®ã hiÓn thÞ kÕt qu¶ d−íi d¹ng sè nhÞ ph©n hoÆc sè thËp ph©n.

6. ViÕt ch−¬ng tr×nh thùc hiÖn phÐp to¸n AX = n! (0 < n < 10), n ®−îc nhËp vµo

tõ bµn phÝm, sau ®ã hiÓn thÞ kÕt qu¶ d−íi d¹ng sè thËp ph©n.

7. ViÕt ch−¬ng tr×nh thùc hiÖn nhËp liªn tiÕp mét d·y c¸c ký tù khi nµo gÆp

enter th× kÕt thóc. HiÓn thÞ d·y ký tù theo chiÒu ng−îc l¹i.

8. ViÕt ch−¬ng tr×nh thùc hiÖn nhËp vµo hai sè hexa tõ bµn phÝm, tÝnh tæng cña hai sè vµ hiÓn thÞ tæng d−íi d¹ng sè hexa.

9. ViÕt ch−¬ng tr×nh thùc hiÖn nhËp vµo hai sè hexa tõ bµn phÝm, tÝnh tÝch cña hai sè vµ hiÓn thÞ tÝch d−íi d¹ng sè hexa.

Page 102: vµ cÊu tróc m¸y tÝnh€¦ ·

102

Ch−¬ng 4. Ch−¬ng 4. Ch−¬ng 4. Ch−¬ng 4. Bé nhí vµ hÖ thèng l−u tr÷

4.1. Nguyªn t¾c tæ chøc bé nhí

Bé nhí m¸y tÝnh (memory) lµ n¬i l−u tr÷ ch−¬ng tr×nh vµ d÷ liÖu, gåm bé nhí trong vµ bé nhí ngoµi. Bé nhí trong (internal memory) lµ c¸c vi m¹ch nhí b¸n dÉn cã tèc ®é truy cËp cao, n¨ng l−îng tiªu thô thÊp nh−ng dung l−îng nhá. V× vËy, m¸y tÝnh cÇn ph¶i cã thªm c¸c bé nhí ngoµi (external memory) ®Ó chøa ch−¬ng tr×nh, d÷ liÖu cã dung l−îng lín cña ng−êi sö dông. Trong m¸y tÝnh, bé nhí ®−îc ph©n chia thµnh 6 cÊp nh− h×nh 4.1.

−−−− CÊp 0: TÖp c¸c thanh ghi (registers) bªn trong bé vi xö lý lµ møc nhí thÊp nhÊt.

−−−− CÊp 1: Cache s¬ cÊp L1 (primary cache) lµ bé nhí cã tèc ®é truy cËp nhanh gÇn b»ng tèc ®é truyÒn d÷ liÖu trong bé vi xö lý nh−ng dung l−îng nhá vµ ®−îc tÝch hîp ngay trªn chip ®èi víi nh÷ng bé vi xö lý hiÖn ®¹i.

−−−− CÊp 2: Cache thø cÊp L2 (secondary cache) lµ bé nhí truy cËp nhanh nh−ng dung l−îng nhá h¬n bé nhí chÝnh vµ th−êng n»m bªn ngoµi chip vi xö lý.

−−−− CÊp 3: Bé nhí chÝnh (main memory), ®−îc bé vi xö lý ®¸nh ®Þa chØ trùc tiÕp, chøa d÷ liÖu vµ c¸c ch−¬ng tr×nh ®ang ®−îc sö dông hiÖn hµnh, ®©y chÝnh lµ ROM vµ RAM.

H×nh 4.1. Ph©n cÊp hÖ thèng nhí trong m¸y tÝnh

CPU

Bé nhí ®Öm (møc 1)

Bé nhí ®Öm (møc 2)

Bé nhí chÝnh

Bé nhí ngoµi

(c¸c æ ®Üa, thÎ nhí)

Bé nhí m¹ng

Bé nhí trong Bé nhí ngoµi

TËp thanh ghi

Page 103: vµ cÊu tróc m¸y tÝnh€¦ ·

103

−−−− CÊp 4: Bé nhí ngoµi (external memory), kh«ng ®−îc bé vi xö lý ®¸nh ®Þa chØ trùc tiÕp, bé nhí ngoµi cã dung l−îng rÊt lín, lín h¬n rÊt nhiÒu lÇn so víi bé nhí chÝnh nh−ng tèc ®é truy cËp l¹i chËm h¬n: Cã thÓ kÓ ra mét sè thiÕt bÞ th«ng dông thuéc vÒ bé nhí ngoµi nh−: æ ®Üa cøng (Hard Disk Drive−HDD), æ ®Üa mÒm (Floppy Disk Drive−FDD). §Üa CDROM (Compact Disk Read Only Memory), ®Üa DVD (Digital Versatile Disk), Flash Disk, Memory Card...

−−−− CÊp 5: Bé nhí m¹ng lµ bé nhí mµ mét m¸y tÝnh cã thÓ truy cËp tíi bé nhí cña mét m¸y kh¸c trong m¹ng m¸y tÝnh.

4.2. Bé nhí trong

Bé nhí trong ®−îc cÊu t¹o tõ c¸c vi m¹ch nhí b¸n dÉn (ROM, RAM). Mçi mét vi m¹ch nhí l¹i ®−îc chia thµnh c¸c « nhí nhá cã ®Þa chØ riªng, x¸c ®Þnh gäi lµ ®Þa chØ « nhí. Trong m¸y tÝnh, mçi mét ®Þa chØ nhí chøa mét byte chøa d÷ liÖu, hoÆc cã thÓ lµ word (2 byte), hoÆc doubleword (4 byte). H×nh 4.2 lµ vÝ dô vÒ bé nhí ROM (16×8bit). Cã 16 « nhí ®−îc ph©n biÖt bëi bèn tÝn hiÖu ®Þa chØ A0, A 1, A2, A 3. V× c¸c d÷ liÖu trong m¸y tÝnh ®−îc biÓu diÔn d−íi d¹ng sè nhÞ ph©n nªn ®Þa chØ cña bé nhí còng ®−îc biÓu diÔn d−íi d¹ng sè nhÞ ph©n. Mçi « nhí cã 8 bit (D0, D1, D2,... D7) chøa mét byte d÷ liÖu cã gi¸ trÞ tõ 00000000B ®Õn 11111111B. §Ó l−u ®−îc mét bit th«ng tin cã thÓ dïng c¸c phÇn tö nhí nh− diode, tô ®iÖn, transistor, c¸c flip−flop,...

0 1 2 3

4 5 6

1

7

8 9 10 11

12 13 14 15

4D 65 6D 6F

72 79 20 49

73 20 55 73

65 66 75 6C

0

0

0

0

VDD

VDD

A0

A1

A2

A3

D0 D1

D2 D3

D4 D5

D6 D7

1 0

1 1

0 0

1 0

M

H×nh 4.2. ROM (16××××8bit)

Page 104: vµ cÊu tróc m¸y tÝnh€¦ ·

104

4.2.1. Bé nhí ROM (Read Only Memory)

ROM lµ bé nhí chØ ®äc, ®©y lµ bé nhí rÊt quan träng ®èi víi bÊt kú mét hÖ thèng vi xö lý nµo. D÷ liÖu l−u trong ROM kh«ng bÞ mÊt khi mÊt nguån ®iÖn. Do ®Æc tr−ng nµy nªn ROM th−êng ®−îc dïng chøa c¸c ch−¬ng tr×nh qu¶n lý, ®iÒu khiÓn phÇn cøng cña hÖ thèng (th−êng ®−îc gäi lµ c¸c ch−¬ng tr×nh hÖ thèng), vÝ dô nh− trong hÖ thèng m¸y tÝnh, ROM chøa BIOS, trong c¸c thiÕt bÞ ®iÖn tö gia dông, ROM chøa ch−¬ng tr×nh ®iÒu khiÓn sù ho¹t ®éng cña c¸c thiÕt bÞ ®ã…

4.2.1.1. Nguyªn t¾c cÊu t¹o vµ ho¹t ®éng

A1A0 D4D3D2D1D0

1 1 0 1 1 0 1

1 0 1 0 1 1 1

0 1 1 0 1 1 1

0 0 1 1 1 1 0

− Nguyªn t¾c cÊu t¹o:

ROM cã thÓ ®−îc chÕ t¹o b»ng c«ng nghÖ l−ìng cùc hoÆc MOS, ROM l−ìng cùc cã thêi gian truy cËp nhanh h¬n, tÝnh n¨ng kÝch ho¹t tèt h¬n, ROM c«ng nghÖ MOS cã thµnh phÇn chñ yÕu lµ c¸c transistor tr−êng.

Trªn h×nh 4.3 m« t¶ cÊu t¹o cña mét bé nhí ROM ®¬n gi¶n sö dông diode cho c¸c bit nhí, mçi mét bit nhí cã diode mang gi¸ trÞ logic 0, bit nhí kh«ng cã diode mang gi¸ trÞ logic 1.

C¸c diode còng H×nh 4.4. ROM dïng ma trËn transistor

H×nh 4.3. ROM dïng ma trËn diode

m bit d÷ liÖu

2n « nhí

n ®−êng ®Þa chØ

Gi¶i m·

11

10

01

00

Page 105: vµ cÊu tróc m¸y tÝnh€¦ ·

105

cã thÓ ®−îc thay b»ng c¸c transistor, khi ®ã sÏ cã c¸c vi m¹ch ROM dïng ma trËn transistor (h×nh 4.4).

− Nguyªn t¾c ho¹t ®éng:

Khi hµng nµo nèi víi 5V (®−îc chän) th× diode giao gi÷a hµng ®ã vµ cét sÏ th«ng vµ th«ng tin ®äc ®−îc trªn cét ®ã lµ 1, cét nµo kh«ng cã diode nèi víi hµng ®ã th× sÏ mang th«ng tin 0.

HiÖn nay ROM cã nguyªn t¾c cÊu t¹o vµ ho¹t ®éng nh− trªn Ýt ®−îc nh¾c tíi, thay vµo ®ã lµ c¸c lo¹i PROM, EPROM vµ EEPROM cã dung l−îng cao, thuËn tiÖn trong viÖc lËp tr×nh h¬n nhiÒu. ChÝnh v× vËy, kh¸i niÖm “ROM lµ bé nhí chØ ®äc” kh«ng cßn thÝch hîp n÷a, thay vµo ®ã lµ kh¸i niÖm “ROM lµ bé nhí kh«ng bÞ mÊt th«ng tin khi mÊt nguån ®iÖn”.

4.2.1.2. Ph©n lo¹i

a) Bé nhí PROM (Programmable ROM)

Lµ mét lo¹i bé nhí ROM cã thÓ lËp tr×nh ®−îc mét lÇn. Khi xuÊt x−ëng, PROM ch−a l−u th«ng tin, khi cÇn l−u th«ng tin, PROM sÏ ®−îc "lËp tr×nh". C«ng viÖc lËp tr×nh sÏ t¹o ra c¸c xung dßng ®iÖn ®ñ lín qua mét sè bit nhí chän läc, xung ®iÖn nµy sÏ lµm ®øt c¸c cÇu ch× (h×nh 4.5), nhê viÖc lµm ®øt hoÆc kh«ng lµm ®øt) c¸c c¸c cÇu ch×, c¸c bit trong PROM sÏ cã gi¸ trÞ b»ng "0" (hoÆc b»ng "1"). Khi ®· lËp tr×nh, néi dung cña PROM kh«ng thÓ thay ®æi ®−îc.

b) EPROM (Erasable Programming ROM)

EPROM lµ lo¹i ROM ®−îc xo¸ b»ng nguån tia cùc tÝm (UV−Ultraviolet light) chiÕu trªn c¸c transistor vµ ®−îc lËp tr×nh b»ng xung ®iÖn thÕ cao. C¸c gi¸ trÞ logic ®−îc ghi ng−îc víi gi¸ trÞ xo¸.

Nguyªn t¾c cÊu t¹o vµ ho¹t ®éng (h×nh 4.6).

Cùc cöa transistor tr−êng ®−îc ®Æt trong líp c¸ch ®iÖn. Khi ®Æt ®iÖn ¸p −35V gi÷a cùc nguån vµ cùc m¸ng th× cùc cöa sÏ cã ®iÖn tÝch c¶m øng. §iÖn tÝch nµy sÏ l−u m·i ë ®ã v× kh«ng cã ®−êng tho¸t. §iÖn tÝch nµy ®Õn l−ît nã l¹i t¹o ra kªnh dÉn trong MOS khi bá nguån −35V ®i. ViÖc ®Æt nguån −35V vµo transistor MOS lµ viÖc n¹p cho EPROM. EPROM b»ng c¸ch chiÕu tia

H×nh 4.5. PROM

Page 106: vµ cÊu tróc m¸y tÝnh€¦ ·

106

cùc tÝm vµo transistor th× ®iÖn tÝch trªn cùc cöa sÏ bÞ tiªu tan ®i do tia cùc tÝm lµm cho líp oxide c¸ch ®iÖn trë thµnh dÉn ®iÖn.

NhiÒu h·ng s¶n xuÊt ROM ®· t×m c¸ch t¹o ra ROM ghi xo¸ ®−îc b»ng ®iÖn ¸p. C¸c ROM nµy ®−îc gäi lµ EEPROM. VÒ nguyªn t¾c chung th× nã gièng nh− EPROM nh−ng líp c¸ch ®iÖn gi÷a cùc cöa vµ kªnh dÉn ®−îc chia thµnh hai líp kh¸c nhau vµ thªm cùc cöa ®iÒu khiÓn. Khi ®Æt ®iÖn ¸p ®ñ lín vµo cùc cöa ®iÒu khiÓn th× lµm cho c¸c ®iÖn tö cã thÓ ®i qua ®−îc líp c¸ch ®iÖn b»ng hiÖu øng ®−êng hÇm, nh− vËy ta ®· xo¸ ®−îc ®iÖn tÝch ë trªn cùc cöa hay xo¸ ®−îc th«ng tin nhí trong ROM.

c) Bé nhí EEPROM (Electrically EPROM)

Lµ bé nhí cã thÓ ghi, xo¸ b»ng xung ®iÖn. Sè lÇn cã thÓ ghi, xo¸ cho mét vi m¹ch nhiÒu h¬n nhiÒu so víi c¸c bé nhí ROM kh¸c (vµi chôc lÇn ®Õn vµi chôc ngh×n lÇn). ViÖc n¹p cho c¸c vi m¹ch nhí nµy nhê c¸c m¹ch n¹p, c¸c

H×nh 4.6. EPROM

§K

TN

Cùc m¸ng Cùc nguån

Cùc cöa

Líp oxide

§Õ

§−êng word

§−êng bit

Cùc ®iÒu khiÓn

Líp nghÌo oxide

CS

D S EL

Kªnh dÉn

EL = sè electron khi < 50% = 1 dßng ch¶y > 50%

§−êng word

§−êng bit

Cùc ®iÒu khiÓn

Líp nghÌo oxide

CS

D S EL

Kªnh dÉn

EL = sè electron khi > 50% = 1 dßng ch¶y < 50%

Page 107: vµ cÊu tróc m¸y tÝnh€¦ ·

107

m¹ch n¹p sÏ ®−a c¸c ®Þa chØ cña c¸c « nhí lªn BUS ®Þa chØ ®ång thêi ®−a d÷ liÖu vµ xung tÝch cùc thÝch hîp vµo ch©n cho phÐp n¹p, khi ®ã d÷ liÖu sÏ ®−îc n¹p vµo EEPROM.

VÒ nguyªn t¾c chung, EEPROM gièng nh− EPROM nh−ng líp c¸ch ®iÖn gi÷a cùc cöa vµ kªnh dÉn ®−îc chia thµnh hai líp kh¸c nhau vµ thªm cùc cöa ®iÒu khiÓn. Khi ®Æt ®iÖn ¸p ®ñ lín vµo cùc cöa ®iÒu khiÓn th× c¸c h¹t ®iÖn tö cã thÓ ®i qua ®−îc líp c¸ch ®iÖn b»ng hiÖu øng ®−êng hÇm, ®iÒu nµy ®ång nghÜa víi viÖc ®· xo¸ ®−îc ®iÖn tÝch ë trªn cùc cöa hay xo¸ ®−îc th«ng tin nhí trong EEPROM nhê xung ®iÖn thay v× tia cùc tÝm.

d) Bé nhí flash ROM

HiÖn nay bé nhí flash ROM xuÊt hiÖn rÊt nhiÒu thay thÕ cho ®Üa mÒm, ®Üa cøng. Flash ho¹t ®éng nh− bé nhí RAM nh−ng l¹i kh«ng mÊt d÷ liÖu khi mÊt nguån ®iÖn. Bé nhí nµy cho phÐp hÖ thèng thay ®æi ®−îc néi dung sau khi thiÕt bÞ ®−îc s¶n xuÊt.

Bé nhí EEPROM vµ flash ROM th−êng ®−îc øng dông réng trong c¸c lÜnh vùc ®o l−êng, ®iÒu khiÓn dïng vi xö lý.

4.2.2. RAM (Random Access Memory)

RAM lµ bé nhí truy cËp ngÉu nhiªn, th«ng tin l−u trong RAM sÏ bÞ mÊt khi mÊt nguån ®iÖn.

Trong m¸y tÝnh, bao giê còng chØ cã mét kh«ng gian bé nhí ®−îc ®iÒu chØnh vµ kh«ng gian ®ã ®−îc gäi lµ bé nhí chÝnh cña vi xö lý. Bé nhí chÝnh cña m¸y tÝnh bao gåm bé nhí ROM vµ bé nhí RAM. Bé nhí ROM cã dung l−îng nhá h¬n rÊt nhiÒu so víi RAM v× ROM chØ chøa c¸c ch−¬ng tr×nh vµo/ra c¬ së BIOS nh− ch−¬ng tr×nh khëi ®éng m¸y tÝnh, ch−¬ng tr×nh phôc vô cho viÖc x©m nhËp æ ®Üa card ®å ho¹... Mäi ch−¬ng tr×nh vµ d÷ liÖu cña ng−êi sö dông ®−îc l−u tr÷ ë æ ®Üa ngoµi, khi m¸y tÝnh ho¹t ®éng nã sÏ ®−îc ®−a vµo bé nhí RAM ®Ó thùc thi, RAM ®ãng vai trß lµ n¬i chøa th«ng tin t¹m thêi cho CPU khi CPU ho¹t ®éng. C¸c lÖnh cña ch−¬ng tr×nh ®−îc ®−a vµo bé nhí b»ng qu¸ tr×nh ghi bé nhí, khi ch¹y ch−¬ng tr×nh th× bé vi xö lý sÏ ®äc nh÷ng lÖnh ®ã ra. RAM lµ mét hÖ thèng bé nhí mµ trong ®ã c¸c vïng nhí ®Òu cã thÓ truy cËp ®Õn dÔ dµng nh− nhau, vi xö lý dïng c¸ch truy cËp trùc tiÕp vµo RAM.

4.2.2.1. CÊu t¹o vµ nguyªn t¾c ho¹t ®éng

a) RAM tÜnh (SRAM − Static RAM)

Page 108: vµ cÊu tróc m¸y tÝnh€¦ ·

108

SRAM cã ®Æc ®iÓm lµ tèc ®é nhanh, dung l−îng nhá, gi¸ thµnh ®¾t, thÝch hîp dïng ®Ó chÕ t¹o bé nhí cache nh»m c¶i thiÖn tèc ®é cña hÖ thèng. Bé nhí tÜnh ®−îc chÕ t¹o b»ng c«ng nghÖ l−ìng cùc hoÆc c«ng nghÖ MOS víi thêi gian truy cËp cì vµi chôc ns.

H×nh 4.7 lµ cÊu t¹o cña 1 « nhí SRAM, mçi bit nhí cña SRAM lµ mét m¹ch lËt hai tr¹ng th¸i æn ®Þnh víi c¸c transistor MOS.

Nguyªn t¾c ho¹t ®éng:

D©y ®Þa chØ lµ ®−êng tÝn hiÖu cho phÐp chän ®Þa chØ, nã ®−a tÝn hiÖu ®Þa chØ ®Õn phÇn tö ®Ó cã thÓ ®äc hoÆc ghi th«ng tin ®èi víi phÇn tö ®ã. Hai d©y

DL vµ DL lµ hai d©y cho phÐp x¸c ®Þnh tr¹ng th¸i cña phÇn tö ®Ó cã thÓ ®äc hoÆc ghi th«ng tin ®èi víi phÇn tö.

− ë tr¹ng th¸i nhí: Trªn ®−êng d©y ®Þa chØ cã ®iÖn ¸p 0,3V thÊp h¬n 0,5V trªn hai d©y bit lµm cho hai emitter nèi víi hai d©y bit kh«ng dÉn. Tr¹ng th¸i cña m¹ch lËt ®−îc duy tr× bëi hai emitter nèi víi ®Þa chØ. Lóc nµy trong m¹ch sÏ lu«n ë tr¹ng th¸i cè ®Þnh cã mét transistor th«ng vµ mét transistor t¾t.

H×nh 4.7. CÊu t¹o cña mét « nhí SRAM

+ 3,5 V

20K 20K

0,5 V

KhuÕch ®¹i vi sai Ghi Ghi

D©y ®Þa chØ

0,3V

3V

D©y bit DL

D©y bit

DL

Page 109: vµ cÊu tróc m¸y tÝnh€¦ ·

109

− Khi cÇn ghi hoÆc ®äc phÇn tö ta cÇn thùc hiÖn chän phÇn tö b»ng c¸ch n©ng ®iÖn ¸p trªn d©y ®Þa chØ lªn 3V lµm cho hai emitter nèi víi d©y ®Þa chØ sÏ kh«ng dÉn n÷a. Lóc nµy trªn hai emitter nèi víi hai d©y bit sÏ cã mét d©y cã dßng emitter nÕu transistor nèi víi nã th«ng lµm ®iÖn thÕ cña nã cao h¬n d©y kia. ViÖc so s¸nh ®iÖn ¸p trªn hai d©y bit sÏ cho ta biÕt transistor nµo ®ang th«ng hay biÕt ®−îc tr¹ng th¸i cña phÇn tö. §©y chÝnh lµ nguyªn t¾c ®äc bé nhí.

− §Ó ghi th«ng tin vµo phÇn tö th× cïng víi viÖc n©ng cao ®iÖn ¸p trªn ®−êng d©y ®Þa chØ nh»m liªn kÕt hai emiter nèi víi nã, ta nhËn thÊy r»ng nÕu ®Æt mét ®iÖn thÕ ®ñ lín vµo hai emitter nèi víi d©y bit cña transistor ®ang th«ng th× transistor nµy t¾t lµm cho phÇn tö n»m ë tr¹ng th¸i mµ ta muèn, tøc lµ ®· ghi ®−îc th«ng tin.

b) RAM ®éng (DRAM − Dynamic RAM)

Mçi mét phÇn tö nhí cña DRAM lµ c¸c tô ®iÖn. DRAM dïng c¸ch l−u tr÷ th«ng tin b»ng c¸ch n¹p hoÆc kh«ng n¹p ®iÖn tÝch lªn c¸c tô ®iÖn, v× thÕ sau mét kho¶ng thêi gian, bé nhí cÇn ph¶i ®−îc lµm t−¬i b»ng c¸ch ghi ®äc, nÕu kh«ng ®iÖn tÝch trªn c¸c tô bÞ phãng vµ dÉn ®Õn mÊt th«ng tin. V× lý do nµy mµ c¸c RAM ®éng ph¶i cã c¸c m¹ch phô thùc hiÖn c«ng viÖc “lµm t−¬i”.

¦u ®iÓm cña lo¹i RAM nµy lµ cã dung l−îng lín (cã thÓ tÝch hîp ®−îc sè l−îng lín c¸c phÇn tö trªn mét ®¬n vÞ diÖn tÝch) nh−ng tèc ®é chËm vµ th−êng ®−îc sö dông lµm bé nhí chÝnh.

Nguyªn t¾c ho¹t ®éng:

− ë tr¹ng th¸i nhí d÷ liÖu: TÝn hiÖu chän T1 vµ T3 kh«ng cã, tô C ®−îc tÝch ®iÖn.

− Ghi th«ng tin: Khi truyÒn ®iÖn ®Õn d©y ghi tÝn hiÖu cÇn ghi vµ tÝn hiÖu chän T1 th× tô C ®−îc n¹p qua T1 ®ang th«ng. Nh− vËy, ta ®· ghi ®−îc th«ng tin vµo phÇn tö.

Chän ®äc

D©y ghi D©y ®äc

T1 T3

T2

Chän ghi

C

H×nh 4.8. CÊu t¹o cña mét « nhí DRAM

Page 110: vµ cÊu tróc m¸y tÝnh€¦ ·

110

− §äc th«ng tin: §−a tÝn hiÖu chän T3, do ®ã T3 th«ng, nªn trªn ®−êng d©y ®äc cã ®iÖn thÕ t−¬ng ®−¬ng ®iÖn thÕ cña tô C.

− Lµm t−¬i bé nhí: NÕu cã tÝn hiÖu chän ®ång thêi ®Õn T1 vµ T3 th× th«ng tin ®äc ®−îc sau khi ®−îc khuÕch ®¹i ®−a vµo ®Ó ghi l¹i cho tô C.

4.2.2.2. Ph©n lo¹i RAM

VÒ c¬ b¶n, RAM ®−îc ph©n thµnh hai lo¹i chÝnh nh− ®· tr×nh bµy ë trªn. Tuy nhiªn hiÖn nay, do tèc ®é ho¹t ®éng cña c¸c bé vi xö lý ngµy cµng cao nªn RAM lu«n ®−îc nghiªn cøu, c¶i thiÖn kh«ng ngõng c¶ vÒ phÇn cøng còng nh− phÇn mÒm. C¸c chip nhí DRAM th−êng ®−îc l¾p r¸p thµnh c¸c thanh RAM c¾m ngay trªn c¸c khe c¾m trªn b¶n m¹ch chÝnh gÇn bé vi xö lý. DRAM ®−îc chia thµnh mét sè lo¹i: SDRAM (Synchronus DRAM), SDR SDRAM (Single Data Rate SDRAM), DDR SDRAM (Double Data Rate SDRAM), DRDRAM (Direct Rambus DRAM).

4.2.3. GhÐp nèi 8086 víi c¸c vi m¹ch ROM27xxx vµ RAM62xxx

4.2.3.1. CÊu tróc chung cña mét vi m¹ch nhí

Mét chip nhí ®−îc chÕ t¹o bao gåm: Mét ma trËn nhí, c¸c m¹ch logic gi¶i m· ®Þa chØ cho « nhí, c¸c m¹ch logic cho phÐp ®äc ra hay ghi vµo « nhí, c¸c m¹ch vµo/ra, më réng ®Þa chØ.

Dung l−îng vi m¹ch nhí lµ sè bit th«ng tin tèi ®a mµ bé nhí cã thÓ l−u tr÷ nã. §èi víi bé nhí trong m¸y tÝnh, ®¬n vÞ nhí ®−îc tÝnh theo byte cßn víi chip nhí, ®¬n vÞ nhí ®−îc tÝnh theo bit. Mét vi m¹ch nhí th−êng ®−îc biÓu diÔn d−íi d¹ng s¬ ®å cÊu tróc nh− h×nh 4.9, bao gåm cã c¸c nhãm tÝn hiÖu sau:

− Nhãm tÝn hiÖu ®Þa chØ: Bao gåm n ®−êng ®Þa chØ, sè l−îng ®−êng ®Þa chØ cã liªn quan tíi dung l−îng cña bé nhí theo c«ng thøc sau:

A0 ÷ An−1

H×nh 4.9. S¬ ®å cÊu tróc chung cña m¹ch nhí RAM

OE

D0 ÷ Dm−1

WE

CE

Page 111: vµ cÊu tróc m¸y tÝnh€¦ ·

111

Dung l−îng (byte) = 2n .

C¸c « nhí kÒ nhau sÏ cã ®Þa chØ kÕ tiÕp nhau. NÕu cã n bit ®Ó biÓu diÔn cho mét ®Þa chØ th× sè ®Þa chØ tèi ®a cã thÓ cã lµ 2n, tõ ®Þa chØ 0 ®Õn 2n − 1. TÝn hiÖu ®Þa chØ ®−îc biÓu diÔn d−íi d¹ng nhÞ ph©n lµ An − 1 An − 2.... A2 A1 A0.

− Nhãm tÝn hiÖu d÷ liÖu: Gåm m ®−êng d÷ liÖu, sè l−îng ®−êng d÷ liÖu cã liªn quan tíi ®é dµi cña « nhí (chÝnh b»ng sè bit trong mét « nhí ®−îc biÓu diÔn d−íi d¹ng nhÞ ph©n lµ Dm − 1 Dm − 2.... D2D1D0). VÝ dô, chip nhí 27128 lµ vi m¹ch nhí ROM cã dung l−îng 128Kbit hay b»ng 32K×8 bit (32K « nhí, mçi « nhí 8 bit), bé nhí ROM nµy cã sè ®−êng ®Þa chØ n = 15, sè ®−êng d÷ liÖu lµ m = 8.

− Nhãm tÝn hiÖu ®iÒu khiÓn: Gåm cã tÝn hiÖu cho phÐp ®äc OE (Output Enable) ®Ó cho phÐp d÷ liÖu ®−îc ®−a ra, ®èi víi vi m¹ch nhí RAM cßn cã

tÝn hiÖu cho phÐp ghi WE (Write Enable). Ngoµi ra, cßn cã thÓ cã c¸c tÝn

hiÖu chèt ®Þa chØ hµng RAS(Row Access Stroble), tÝn hiÖu chèt ®Þa chØ cét

CAS (Column Access Stroble) ®èi víi RAM ®éng. C¸c ch©n tÝn hiÖu nµy ®Òu ®−îc tÝch cùc ë møc thÊp.

− Nhãm tÝn hiÖu chän vi m¹ch: Gåm cã tÝn hiÖu chän chip CS (Chip

Select) hay cho phÐp vi m¹chCE (Chip Enable). C¸c tÝn hiÖu chän vi m¹ch th−êng ®−îc nèi víi ®Çu ra cña m¹ch gi¶i m· ®Þa chØ. Khi mét vi m¹ch nhí kh«ng ®−îc chän th× bus d÷ liÖu cña nã bÞ treo.

4.2.3.2. Gi¶i m· ®Þa chØ cho bé nhí

Mçi mét « nhí cña vi m¹ch nhí khi ghÐp nèi víi CPU ®Òu ®−îc g¸n mét ®Þa chØ x¸c ®Þnh b»ng m¹ch gi¶i m· bªn trong vi m¹ch nhí, víi mçi mét vi m¹ch nhí ph¶i ®−îc g¸n b»ng mét vïng ®Þa chØ riªng, x¸c ®Þnh n»m trong kh«ng gian tæng thÓ cña bé nhí. ViÖc g¸n ®Þa chØ cho vi m¹ch nhí ®−îc thùc hiÖn nhê mét xung lÊy tõ m¹ch gi¶i m· ®Þa chØ.

M¹ch gi¶i m· ®Þa chØ lu«n ph¶i ®¶m b¶o ®ång thêi c¶ hai ®iÒu kiÖn:

− NÕu vi xö lý ®−a ra ®Þa chØ cña mét « nhí n»m trong vi m¹ch nhí nµo ®ã ®· ®−îc gi¶i m· th× ph¶i truy cËp ®äc/ghi ®−îc « nhí ®ã, tøc lµ ch©n tÝn

hiÖu CE cña vi m¹ch nhí ®ã ph¶i ®−îc tÝch cùc.

− NÕu vi xö lý ®−a ra ®Þa chØ cña mét « nhí n»m ngoµi vi m¹ch nhí nµo ®ã ®· ®−îc gi¶i m· th× sÏ kh«ng truy cËp ®−îc tíi « nhí ®ã, ch©n tÝn hiÖu

CE cña vi m¹ch nhí ®ã kh«ng ®−îc tÝch cùc... (®iÒu kiÖn nµy ®Ó tr¸nh xung ®ét bé nhí).

Page 112: vµ cÊu tróc m¸y tÝnh€¦ ·

112

a) Gi¶i m· ®Þa chØ dïng c¸c cæng logic

VÝ dô 1: X©y dùng m¹ch gi¶i m· ®Þa chØ cho IC 2716 cã ®Þa chØ ®Çu lµ FF800H.

Bé vi xö lý 8086 sö dông 20 bit ®Þa chØ nªn cã thÓ qu¶n lý tèi ®a bé nhí cã dung l−îng 1Mbyte. Tuy nhiªn, IC 2716 lµ vi m¹ch nhí ROM cã dung l−îng lµ 16Kbit = 2KB×8 bit (11 ®−êng ®Þa chØ vµ 20 ®−êng d÷ liÖu) nªn ta cÇn 11 ®−êng ®Þa chØ ®Ó qu¶n lý tõng « nhí (A0 – A10). Sè cßn l¹i (9 ®−êng

®Þa chØ A14 − A19) tæ hîp ®Ó ®−a vµo ch©n cho phÐp vi m¹ch CE .

A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

1111 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (FF800H)

1111 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1111

1111 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 1111 0000

.... .... .... .... .... .... .... .... .... . . . . . . . . . . .

.... .... .... .... .... .... .... .... .... . . . . . . . . . . .

.... .... .... .... .... .... .... .... .... . . . . . . . . . . .

1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 (FFFFFH)

Cã møc logic 0 khi tÊt c¶ A11 ®Õn A 19 ®Òu b»ng 1

D0

D1 .

.

D7

H×nh 4.10. S¬ ®å m¹ch gi¶i m! vÝ dô 1

RD cña 8086

bus d÷ liÖu bus ®Þa chØ

A19 A18 A17 A16 A15 A14 A13 A12 A11

2716 (2K××××8) EPROM

CS

A0 A1 ... A10

D0 D1 ... D7

Page 113: vµ cÊu tróc m¸y tÝnh€¦ ·

113

Vïng ®Þa chØ yªu cÇu cÇn gi¶i m· n»m trong kho¶ng ®Þa chØ tõ FF800H ®Õn FFFFFH.

Nh×n vµo c¸c ®Þa chØ cña vi m¹ch nhí ta thÊy c¸c bit ®Þa chØ tõ A0 − A10 thay ®æi theo tõng « nhí cßn c¸c bit A11 − A19 cè ®Þnh b»ng 1, c¸c bit nµy sÏ

®−îc tæ hîp ®Ó t¹o ra tÝn hiÖu cã møc logic thÊp ®−a tíi ch©n CE . M¹ch gi¶i m· ®−îc thiÕt kÕ nh− h×nh 4.10.

VÝ dô 2: ThiÕt kÕ m¹ch ghÐp nèi gi÷a 8086 vµ c¸c IC nhí SRAM 4KB×8 bit ®Ó thµnh bé nhí 4 KB×16 bit. §Þa chØ ®Çu cña bé nhí lµ: 7C000H.

Gi¶i:

− X¸c ®Þnh sè IC cÇn m¾c song song:

m = 2816

==IC 1 cña liÖu d− réng é§

muèn mong liÖu d− réng é§.

Nh− vËy cÇn 2 IC m¾c song song.

− X¸c ®Þnh d¶i ®Þa chØ bé nhí:

§Þa chØ b¾t ®Çu: 7C000H ®Õn 7CFFFH.

+ §Þa chØ b¾t ®Çu ë d¹ng nhÞ ph©n lµ: 0111 1100 0000 0000 0000

+ §Þa chØ kÕt thóc ë d¹ng nhÞ ph©n lµ: 0111 1100 1111 1111 1111

− X¸c ®Þnh c¸c tÝn hiÖu ®Þa chØ ®−a trùc tiÕp vµo c¸c IC nhí:

+ PhÇn thay ®æi trong d¶i ®Þa chØ trªn sÏ ®−a trùc tiÕp vµo c¸c IC nhí SRAM (A0 ®Õn A11).

+ PhÇn ®Þa chØ H×nh 4.11. S¬ ®å m¹ch gi¶i m! vÝ dô 2

A0 − A11

RD

WR

OE

WE

CE

D0 − D7

CE

D8 − D15

A14 A15 A16

A17

A18

IOM/

A12

A13

A19

Page 114: vµ cÊu tróc m¸y tÝnh€¦ ·

114

thay ®æi sÏ ®−a vµo m¹ch gi¶i m· ®Ó t¹o ra tÝn hiÖu chän c¸c vi m¹ch SRAM (A12 ®Õn A19).

− X©y dùng m¹ch gi¶i m· dïng m¹ch NAND.

+ TÝn hiÖu ®−a trùc tiÕp vµo m¹ch NAND lµ: A14 ®Õn A18, M/ IO .

+ TÝn hiÖu ®−a vµo m¹ch NAND th«ng qua m¹ch ®¶o lµ: A12, A13, A19.

+ VÏ s¬ ®å m¹ch nh− h×nh 4.11.

b) Gi¶i m· ®Þa chØ dïng c¸c vi m¹ch gi¶i m· 74LS139, 74LS138

M¹ch gi¶i m· ®Þa chØ dïng c¸c cæng logic sÏ trë nªn cång kÒnh khi cÇn gi¶i m· cho nhiÒu vi m¹ch nhí. V× vËy ng−êi ta Ýt dïng cæng logic mµ th−êng dïng c¸c vi m¹ch gi¶i m· cã s½n.

§Çu vµo §Çu ra

/G2A /G2B G1 C B A /Y0 /Y1 /Y2 /Y3 /Y4 /Y5 /Y6 /Y7

1 x x x x x 1 1 1 1 1 1 1 1

x 1 x x x x 1 1 1 1 1 1 1 1

x x 0 x x x 1 1 1 1 1 1 1 1

0 0 1 0000 0000 0000 0000 1 1 1 1 1 1 1

0 0 1 0000 0000 1111 1 0000 1 1 1 1 1 1

0 0 1 0000 1111 0000 1 1 0000 1 1 1 1 1

0 0 1 0000 1111 1111 1 1 1 0000 1 1 1 1

0 0 1 1111 0000 0000 1 1 1 1 0000 1 1 1

0 0 1 1111 0000 1111 1 1 1 1 1 0000 1 1

0 0 1 1111 1111 0000 1 1 1 1 1 1 0000 1

0 0 1 1111 1111 1111 1 1 1 1 1 1 1 0000

H×nh 4.12. Vi m¹ch gi¶i m! 74LS138

VÝ dô 3: X©y dùng m¹ch gi¶i m· ®Þa chØ cho 4 vi m¹ch nhí RAM(4KB×8bit) kÒ nhau, ®Þa chØ ®Çu cña vi m¹ch thø nhÊt lµ E0000H.

Trong vÝ dô nµy chóng ta cã 4 vi m¹ch nhí, sè l−îng nµy trïng khíp víi sè l−îng ®Çu ra mµ vi m¹ch 74LS139 cã, v× vËy chóng ta sö dông vi m¹ch nµy.

C¸ch tÝnh to¸n ®Þa chØ hoµn toµn t−¬ng tù nh− trong vÝ dô 1, h×nh 4.14 lµ m¹ch gi¶i m· hoµn chØnh:

A

B

C

G2A

G2B

G1

Y0

74LS138

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Page 115: vµ cÊu tróc m¸y tÝnh€¦ ·

115

/G A B /Y0 /Y1 /Y2 /Y3

1 X X 1 1 1 1

0 0000 0000 0000 1 1 1

0 0000 1111 1 0000 1 1

0 1111 0000 1 1 0000 1

0 1111 1111 1 1 1 0000

A

B

G

Y0

74LS139

Y1

Y2

Y3

H×nh 4.12. Vi m¹ch gi¶i m! 74LS139

WRRD

RAM4 4KB×8bit

WE

CEOE

A0 – A11 D0 – D7

WRRD

RAM4 4KB×8bit

WE

CEOE

A0 – A11 D0 – D7

WRRD

RAM4 4KB×8bit

WE

CEOE

A0 – A11 D0 – D7

WRRD

RAM4 4KB×8bit

WE

CEOE

A0 – A11 D0 – D7

74LS139

CE

A12 A13

74LS139

CE

A12 A13

A14 A15

A16

M/ IO

A17

A18

A19

H×nh 4.14. S¬ ®å m¹ch gi¶i m! ®Þa chØ cña vÝ dô 3

Page 116: vµ cÊu tróc m¸y tÝnh€¦ ·

116

VÝ dô 4: X©y dùng m¹ch gi¶i m· ®Þa chØ cho 8 vi m¹ch nhí RAM (16KB×8bit) kÒ nhau, ®Þa chØ ®Çu cña vi m¹ch thø nhÊt lµ F0000H.

Tõ A13 ®Õn A 15 chän mét IC2764. Tõ A16 ®Õn A 19 chän m¹ch gi¶i m·.

4.3. HÖ thèng l−u tr÷ ngoµi

C¸c hÖ thèng l−u tr÷ nãi chung cã thÓ hiÓu lµ c¸c thiÕt bÞ l−u tr÷ ngoµi, chóng lµ cÊp thÊp nhÊt trong ph©n cÊp cña hÖ thèng nhí m¸y tÝnh.

4.3.1. Mét sè phÇn tö l−u tr÷ ®iÓn h×nh

Dùa theo theo tÝnh chÊt vËt lý cña viÖc ghi/®äc th«ng tin ng−êi ta ph©n chia c¸c thiÕt bÞ l−u tr÷ thµnh 3 nhãm chÝnh:

+ ThiÕt bÞ nhí tõ tÝnh.

+ ThiÕt bÞ nhí quang.

+ ThiÕt bÞ nhí flash.

74LS138 bus d÷ liÖu

bus ®Þa chØ A

B

C

G2A

G2B

G1

0

1

2

3

4

5

6

7

A13 A14 A15

A16

A17 A18 A19

Kh«ng gian ®Þa chØ F0000H − FFFFFH

F0000 − F1FFF

F2000 − F3FFF

F4000 − F5FFF

F6000 − F7FFF

F8000 − F9FFF

FA000 − FBFFF

FC000 − FDFFF

FE000 − F1FFF

CS CS

CS CS

CS CS

CS CS

2764 (8K×8) EPROM

A0 ... A12

D0 ... D7

RD cña 8086

IOM/

H×nh 4.15. S¬ ®å m¹ch gi¶i m! ®Þa chØ cña vÝ dô 4

Page 117: vµ cÊu tróc m¸y tÝnh€¦ ·

117

4.3.1.1. §Üa cøng (Hard Disk)

CÊu t¹o cña mét æ cøng gåm c¸c khèi sau:

− Khèi ®Üa vµ hép ®Üa.

− Khèi ®Çu tõ trong ®Þnh vÞ ®Çu tõ.

− Khèi ®iÖn tö ®iÒu khiÓn.

a) Khèi ®Üa vµ hép ®Üa

§Üa cøng th−êng chøa nhiÒu ®Üa ®Æt chång lªn nhau trªn mét trôc t¹o thµnh chång ®Üa. C¸c ®Üa c¸ch nhau mét kho¶ng c¸ch vµi mm ®Ó ®Çu tõ chuyÓn ®éng. Nh− vËy, cã rÊt nhiÒu ®Çu tõ, mçi ®Çu tõ ®äc/ghi cho mét mÆt (trõ hai mÆt ngoµi cña ®Üa d−íi cïng vµ ®Üa trªn cïng). Trªn mÆt mçi ®Üa ng−êi ta chia thµnh c¸c r·nh lµ c¸c vßng trßn ®ång t©m (track). Th«ng th−êng cã tõ 5000 ®Õn 30000 track/1 mÆt, trªn c¸c r·nh nµy l¹i ®−îc chia thµnh c¸c cung gäi lµ c¸c sector (cã tõ 100 ®Õn 500 sector/1 track), sector lµ ®¬n vÞ nhá nhÊt cña æ ®Üa cøng, mçi sector chøa 512 byte d÷ liÖu. C¸c r·nh cã cïng chØ sè trªn c¸c ®Üa gäi lµ 1 xilanh. Th«ng th−êng mét æ ®Üa gåm 1 ®Õn 12 ®Üa quay víi tèc ®é 3600 ®Õn 15000 vßng/phót.

Xilanh

C¸c r·nh (Track)

C¸c sector

H×nh 4.16. C¸ch bè trÝ ®Üa, ph©n chia ®Üa thµnh c¸c ®¬n vÞ nhá

Page 118: vµ cÊu tróc m¸y tÝnh€¦ ·

118

b) Khèi ®Çu tõ trong ®Þnh vÞ ®Çu tõ

Sè ®Çu tõ = ((sè ®Üa) * 2) – 2.

(v× hai ®Üa ngoµi cïng ®Ó b¶o vÖ ®Çu tõ).

c) Khèi ®iÖn tö ®iÒu khiÓn: phÇn ®iÖn tö gåm bé phËn ®iÒu khiÓn quay ®Üa, ®iÒu khiÓn motor vµ ®iÒu khiÓn ®Çu tõ ghi/®äc.

Khi ®Üa kh«ng quay tøc lµ kh«ng cã ghi/®äc tin, ®Çu tõ tú lªn mÆt ®Üa. Khi ghi/®äc th«ng tin, ®Çu tõ tù n©ng lªn mét kho¶ng 0,2mm ®Õn 1mm khái mÆt ®Üa do ¸p lùc cña kh«ng khÝ chuyÓn ®éng nhanh trong æ ®Üa. Khi ®äc/ghi d÷ liÖu, ®Çu tõ cÇn ph¶i ®−îc di chuyÓn tíi ®óng sector cã chøa th«ng tin cÇn ®äc, ®Ó lµm ®−îc ®iÒu nµy, c¸c sector ®Òu ®−îc ®Þnh ®Þa chØ riªng biÖt, thêi gian di chuyÓn cña ®Çu tõ ®Õn c¸c sector ®−îc gäi lµ thêi gian truy cËp cña ®Çu tõ, kho¶ng thêi gian nµy cì 5 ®Õn 12ms, tuy nhiªn thùc tÕ th× thêi gian nµy chØ b»ng 33% trªn lý thuyÕt. §Ó t×m ra mét sector, ®Çu tõ ph¶i quay 1/2 vßng quanh track, thêi gian nµy lµ thêi gian trÔ quay. Khi ®Çu tõ ®· di chuyÓn ®−îc ®Õn vÞ trÝ cÇn ghi/®äc th× th«ng sè cÇn quan t©m n÷a lµ thêi gian ghi/®äc. Th«ng sè nµy phô thuéc vµo kÝch th−íc ®Üa, tèc ®é quay, mËt ®é cña c¸c sector trªn track vµ ®¸p øng cña m¹ch ®iÖn tö kÕt nèi gi÷a ®Üa vµ m¸y tÝnh. Mét æ ®Üa víi kÝch th−íc ®Üa lµ 3,5inchs (≈ 0,889m), quay 15000 vßng/phót th× tèc ®é ®ã lµ 65Mbyte. Th«ng sè thêi gian cuèi cïng trong tæng thêi gian ghi/®äc d÷ liÖu tõ m¸y tÝnh lªn ®Üa lµ thêi gian ®¸p øng cña m¹ch ®iÒu khiÓn ®Çu tõ khi nhËn lÖnh tõ m¸y tÝnh.

VÝ dô, mét æ ®Üa m¸y tÝnh cã thêi gian truy cËp cña ®Çu tõ trung b×nh lµ 5ms, tèc ®é ghi/®äc lµ 40Mbyte, tèc ®é quay lµ 10000 vßng/phót, ®¸p øng cña bé ®iÒu khiÓn ®Çu tõ lµ 0,1ms th× thêi gian ghi/®äc cho 1 sector sÏ lµ:

5ms * 33% + 0,5 vßng / (10000*60) + 0.5KB / (40*1024) + 0,1ms

Trong tÊt c¶ c¸c thiÕt bÞ l−u tr÷ th× æ ®Üa cøng lu«n ®−îc chó träng ph¸t triÓn. Hai vÊn ®Ò ®−îc quan t©m nhÊt ®ã lµ mËt ®é th«ng tin cã thÓ l−u tr÷ trªn mét diÖn tÝch nhÊt ®Þnh vµ gi¸ thµnh cho mét ®¬n vÞ l−u tr÷. Tõ n¨m 1988, mËt ®é th«ng tin ®· t¨ng lªn 29%/n¨m, ®Õn n¨m 1996 lµ 60%/n¨m vµ ®Õn 2001 lµ 100%/n¨m, con sè cô thÓ lµ 60 triÖu bit/2,5cm2.

Ngoµi æ ®Üa cøng th«ng dông ra, cßn cã æ ®Üa mÒm cã cÊu t¹o vµ ho¹t ®éng t−¬ng tù æ ®Üa cøng, b¨ng tõ... Tuy nhiªn c¸c thiÕt bÞ nµy ®Òu kh«ng thÓ so s¸nh ®−îc víi æ ®Üa cøng vÒ dung l−îng, tèc ®é nªn nãi tíi hÖ thèng l−u tr÷ tõ tÝnh th«ng th−êng ng−êi ta chØ nh¾c tíi æ ®Üa cøng.

4.3.1.2. §Üa mÒm

CÊu t¹o cña æ ®Üa mÒm (h×nh 4.17) bao gåm:

Page 119: vµ cÊu tróc m¸y tÝnh€¦ ·

119

− §Çu tõ vµ motor b−íc ®iÒu khiÓn ®Çu tõ.

− §Üa tõ, motor ®iÒu khiÓn ®Üa quay.

− M¹ch ®iÒu khiÓn hÖ thèng motor vµ ho¹t ®éng ghi/®äc th«ng tin trªn ®Üa.

Khi CPU ®äc/ghi d÷ liÖu, ®Üa ®−îc quay bëi mét motor ®iÒu khiÓn víi tèc ®é 300 vßng/phót víi ®Üa cã dung l−îng 360Kbyte hoÆc 360 vßng/phót víi c¸c lo¹i ®Üa kh¸c. §Üa mÒm cã hai mÆt nªn cã hai ®Çu tõ ®äc/ghi d÷ liÖu. §Çu tõ ®−îc g¾n ë ®Çu cÇn truy xuÊt (access arm). ChuyÓn ®éng quay cña mét motor b−íc (stepping motor) sÏ biÕn thµnh chuyÓn ®éng tÞnh tiÕn theo ph−¬ng b¸n kÝnh cña cÇn truy xuÊt qua mét c¬ cÊu b¸nh r¨ng. §Çu tõ cã mét cuén d©y c¶m øng, khi ®äc, sù biÕn ®æi tõ th«ng cña phÇn tö l−u tr÷ tin ®−îc biÕn thµnh ®iÖn thÕ c¶m øng ë hai ®Çu ra cña cuén d©y t¹o nªn tÝn hiÖu d÷ liÖu (data signal). Khi ghi, cuén d©y sÏ ph¸t ra tõ tr−êng qua khe tõ ®Ó tõ ho¸ c¸c bét s¾t tõ m¹ trªn mÆt ®Üa thµnh c¸c tr¹ng th¸i t−¬ng øng víi c¸c møc d÷ liÖu 0 vµ 1.

Disk: ®Üa tõ Take up Spindle:trôc n©ng

Motor Shaft: trôc motor Spindle Motor: motor quay

Disk Rotation: h−íng quay cña ®Üa Access Arm: cÇn truy xuÊt

Read/Write Head: ®Çu tõ ®äc /ghi Track: r·nh tõ

Head Movement: ph−¬ng chuyÓn ®éng cña ®Çu tõ

Rotation of stepper Motor: h−íng quay cña motor b−íc

Stepper Motor For Head Movement: motor b−íc ®iÒu khiÓn chuyÓn ®éng cña ®Çu tõ

Take up Spindle

Read/Write Head

Stepper Motor For Head Movement

Head Movement

Access Arm

Spindle Motor

Disk Rotation

Disk Rotation

Disk

H×nh 4.17a. CÊu t¹o cña æ ®Üa mÒm lý thuyÕt

Page 120: vµ cÊu tróc m¸y tÝnh€¦ ·

120

H×nh 4.17b. CÊu t¹o cña æ ®Üa mÒm thùc tÕ

4.3.1.3. §Üa quang sè

CÊu t¹o cña æ ®Üa quang sè bao gåm:

− Gi¸ quay vµ motor ®iÒu khiÓn quay ®Üa.

− Nguån laser vµ c¸c thiÕt bÞ ®Ó tiªu thô, thay ®æi ®−êng truyÒn ®iÒu chÕ c−êng ®é s¸ng vµ biÕn ®æi quang sang ®iÖn.

− C¸c s¬ ®å ®iÖn tö ®iÒu khiÓn tèc ®é quay, thêi ®iÓm ph¸t s¸ng thu nhËn tÝn hiÖu ®iÖn, thay ®æi tõ tr−êng b»ng ®äc ®iÖn.

− Khèi ®iÒu khiÓn ghÐp nèi víi m¸y tÝnh.

Tuú theo nguyªn t¾c ®äc/ghi quang hay tõ quang, ta cã hai cÊu tróc ghi/®äc kh¸c nhau:

− CÊu tróc ghi/®äc quang.

− CÊu tróc ghi/®äc tõ quang.

ChØ cã mét nguån diode laser b¸n dÉn ®iÒu chÕ c−êng ®é s¸ng b»ng dßng ®iÖn g©y tõ tr−êng, lµm quay ¸nh s¸ng ph©n cùc, nªn cÇn cã kÝnh ph©n cùc ®Ó läc chïm s¸ng cã c¸c cùc hçn lo¹n thµnh ¸nh s¸ng ph©n cùc.

Nguyªn t¾c ghi/®äc: Dùa theo ®Üa quay hay tõ quang ta cã hai c¸ch ghi/®äc nh−ng ®Òu sö dông mét nguån s¸ng laser nh− nhau.

Page 121: vµ cÊu tróc m¸y tÝnh€¦ ·

121

− Ghi/®äc quang: ®−îc tiÕn hµnh bëi mét chïm tia laser (ph¸t bëi mét diode laser). Khi ghi, c−êng ®é ¸nh s¸ng m¹nh hay yÕu ®Òu lµm bÒ mÆt ®Üa thay ®æi tr¹ng th¸i. Khi ®äc, chïm tia laser (c−êng ®é nhá h¬n lóc ghi 10 lÇn) sÏ ph¶n x¹ kh¸c nhau, ë bÒ mÆt sÏ cho c−êng ®é kh¸c nhau vµ tuú theo tr¹ng th¸i bÒ mÆt ®· bÞ biÕn d¹ng cña ®Üa lóc ghi.

− Ghi/®äc tõ quang: kü thuËt nµy dïng cho hai lo¹i ®Üa tõ quang. Sö dông ph−¬ng ph¸p ghi/®äc chuyÓn pha vµ n¾n cùc v× nã cã lîi lµ cho phÐp xo¸ sè liÖu vµ t¸i sö dông ®−îc ®Üa.

C¸c lo¹i ®Üa quang sè:

− WRAM (Write RAM): lo¹i ®Üa nµy cã thÓ ghi l¹i nhiÒu lÇn nªn ®−îc dïng nh− ®Üa cøng vµ ®Üa mÒm. WRAM lµ lo¹i tõ quang, c¸c ®Çu ®äc còng cã thÓ ®äc ®−îc ®Üa Worm. Nã lµ ph−¬ng tiÖn rÊt tèt ®èi víi c¸c tÖp CAD/CAM vµ h×nh ®å ho¹ lín (chôc−tr¨m GByte).

− WORM (Write Once Read Many) cã ®−êng kÝnh 12 hay 30cm, mét hay hai mÆt cho ghi chØ mét lÇn (kh«ng xo¸ ®−îc) vµ sè lÇn ®äc v« h¹n. Nhê viÖc t¹o thµnh cung vµ r·nh, thêi gian truy cËp trung b×nh 100ms. Nã nh− mét thiÕt bÞ ngoµi chuÈn gièng ®Üa cøng.

− CD−ROM: lµ lo¹i ®Üa cã d¹ng gièng nh− ®Üa CD ©m thanh, ®−êng kÝnh 12cm. Mçi ®Üa chøa 600 − 660MByte (t−¬ng ®−¬ng víi 500 ®Üa mÒm AT).

4.3.2. C¸c nguyªn t¾c tæ chøc hÖ thèng l−u tr÷

4.3.2.1. Nguyªn t¾c tæ chøc hÖ thèng l−u tr÷ theo kiÓu RAID (Redundant Arrays of Inexpensive Disks)

Nhu cÇu l−u tr÷ th«ng tin ngµy mét gia t¨ng ®ßi hái con ng−êi ph¶i cho ra ®êi nh÷ng hÖ thèng cã kh¶ n¨ng l−u tr÷ mét l−îng th«ng tin lín, thêi gian truy cËp th«ng tin nhanh vµ ®Æc biÖt lµ tÝnh an toµn trong viÖc l−u gi÷ th«ng tin. Cã ý kiÕn cho r»ng chØ cÇn t¨ng dung l−îng cña æ ®Üa lªn, cã ý kiÕn kh¸c cho r»ng bè trÝ nhiÒu æ ®Üa thµnh mét m¶ng lín trong ®ã cho

phÐp truy cËp ®ång thêi c¸c ®Üa. ý kiÕn thø nhÊt tá ra kh«ng hîp lý v× kh«ng thÓ t¨ng m·i dung l−îng cña æ ®Üa lªn khi kü thuËt ch−a cho phÐp

h¬n n÷a dung l−îng lín th× thêi gian truy cËp l¹i chËm h¬n. ý kiÕn thø hai hîp lý h¬n v× gi¶i quyÕt ®−îc c¶ hai vÊn ®Ò, ®ã lµ dung l−îng vµ thêi gian truy cËp. Tuy nhiªn nÕu ta ®Æt gi¶ thiÕt lµ c¸c æ ®Üa cã cïng møc ®é tin cËy th× hÖ thèng cho bëi ý kiÕn thø hai l¹i cã ®é an toµn chØ b»ng 1/n lÇn hÖ thèng cho bëi ý kiÕn thø nhÊt (n lµ sè ®Üa sö dông trong m¶ng). MÆt h¹n chÕ cña tæ chøc hÖ thèng l−u tr÷ theo m¶ng gåm c¸c ®Üa sÏ ®−îc kh¾c phôc b»ng c¸ch thªm vµo c¸c ®Üa phô (®Üa d− thõa), c¸c ®Üa nµy sÏ lµm nhiÖm vô

Page 122: vµ cÊu tróc m¸y tÝnh€¦ ·

122

kh¾c phôc c¸c sù cè tõ c¸c ®Üa kh¸c (c¸c ®Üa ®ang ho¹t ®éng), ®©y chÝnh lµ nguyªn t¾c c¬ b¶n cña mét hÖ thèng l−u tr÷ ®−îc tæ chøc theo kiÓu RAID.

Lµm thÕ nµo ®Ó ph¸t hiÖn lçi ë c¸c ®Üa trong hÖ thèng RAID?

§èi víi c¸c ®Üa tõ th× trªn mçi sector ®Òu cã ghi c¸c th«ng tin phô ®Ó ph¸t hiÖn ra lçi trªn chÝnh sector ®ã. Khi ®äc mét sector, phÇn m¹ch ®iÒu khiÓn sÏ ®äc lu«n c¶ c¸c th«ng tin phô ®ã vµ ph©n tÝch lËp tøc sÏ ph¸t hiÖn ra lçi hoÆc mÊt th«ng tin.

Mét vÊn ®Ò kh¸c, lµm thÕ nµo ®Ó gi¶m thêi gian söa lçi trong hÖ thèng RAID?

C¸ch phæ biÕn nhÊt lµ thªm vµo hÖ thèng c¸c ®Üa phô, c¸c ®Üa nµy sÏ ®−îc ®−a vµo ho¹t ®éng ngay khi cã mét ®Üa trong hÖ thèng bÞ lçi, th«ng tin cña ®Üa bÞ lçi nµy sÏ ®−îc x©y dùng l¹i tõ chÝnh d÷ liÖu dù tr÷ cña nã chøa trong mét ®Üa kh¸c trong hÖ thèng RAID.

ViÖc thay thÕ c¸c phÇn tö lçi vµ x©y dùng l¹i d÷ liÖu tõ c¸c phÇn tö ®ã cã thÓ thùc hiÖn nhê vµo c¸c phÇn tö “nãng” lu«n ®−îc th−êng trùc s½n sµng. Nh− vËy hÖ thèng l−u tr÷ theo kiÓu RAID sÏ gióp hÖ thèng m¸y tÝnh nãi chung cã thÓ lu«n trong tr¹ng th¸i s½n sµng.

RAID cÊp 0: Trong cÊp nµy cña RAID, d÷ liÖu ®−îc lÊy ra tõ c¸c ®Üa trong hÖ thèng nh−ng kh«ng cã c¸c th«ng tin phô ®i kÌm ®Ó ph¸t hiÖn vµ kh¾c khôc lçi khi cã sù cè.

RAID cÊp 1 vµ cÊp 2: Trong cÊp nµy, c¸c ®Üa trong hÖ thèng ®−îc tæ chøc thµnh cÆp. Khi th«ng tin ®−îc ghi lªn ®Üa chÝnh th× còng ®ång thêi ®−îc ghi lªn ®Üa phô. Khi ®Üa chÝnh bÞ sù cè, ®Üa phô sÏ thay thÕ vµ cã chøc n¨ng hoµn toµn nh− ®Üa chÝnh. HÖ thèng tæ chøc theo kiÓu nµy sÏ cÇn rÊt nhiÒu ®Üa dÉn tíi l·ng phÝ.

RAID cÊp 3: Kh¸c h¼n víi cÊp 2, ë cÊp nµy, hÖ thèng chØ cÇn mét ®Üa phô “§Üa d− thõa” cho N ®Üa kh¸c.

Th«ng tin ghi vµo ®Üa phô kh«ng ph¶i lµ nguyªn b¶n th«ng tin ë c¸c ®Üa kh¸c mµ chØ lµ tËp hîp c¸c th«ng tin l−u trªn c¸c ®Üa kh¸c vµ th«ng tin kiÓm tra khi mét ®Üa cã sù cè. Nh÷ng th«ng tin l−u trªn ®Üa phô nµy cho phÐp kh«i phôc l¹i th«ng tin bÞ mÊt trªn bÊt kú mét ®Üa nµo trong hÖ thèng.

RAID cÊp 4 vµ cÊp 5: ë 2 cÊp nµy, tû lÖ ®Üa phô (®Üa dù phßng)/ ®Üa chÝnh còng gièng nh− ë cÊp 3 chØ kh¸c ë c¸ch truy cËp c¸c ®Üa. Th«ng th−êng ho¹t ®éng truy cËp ®äc diÔn ra trªn tÊt c¶ c¸c ®Üa, tuy nhiªn hÖ thèng vÉn cho phÐp mét vµi ho¹t ®éng truy cËp ®äc ®¬n lÎ diÔn ra trªn mét

Page 123: vµ cÊu tróc m¸y tÝnh€¦ ·

123

vµi ®Üa. Ho¹t ®éng nµy diÔn ra trong thêi gian c¸c th«ng tin kiÓm so¸t lçi ®−îc ®äc ra trªn mçi sector.

Ho¹t ®éng ghi ®¬n lÎ th× phøc t¹p h¬n nhiÒu, ®Çu tiªn d÷ liÖu míi ®−îc ghi vµo mét ®Üa nµo ®ã ph¶i ®−îc ®äc vµ so s¸nh víi d÷ liÖu ë tÊt c¶ c¸c ®Üa cßn l¹i ®Ó t×m ra c¸c bit kh¸c nhau, sau ®ã c¸c bit kh¸c nhau ®ã ®−îc ghi vµo ®Üa dù phßng vµ d÷ liÖu míi ®−îc ghi vµo ®Üa. Theo c¸ch nµy th× sÏ mÊt rÊt nhiÒu qu¸ tr×nh truy cËp, v× vËy ®Ó ®¬n gi¶n ho¸ ng−êi ta lµm theo c¸ch kh¸c nh− sau: D÷ liÖu míi cÇn ghi vµo mét ®Üa nµo ®ã sÏ ®−îc so s¸nh víi d÷ liÖu cò ë ®Üa ®ã. Sù kh¸c nhau gi÷a hai d÷ liÖu nµy l¹i ®−îc so s¸nh víi d÷ liÖu ë ®Üa dù phßng, kÕt qu¶ sÏ ®−îc c¸c bit kh¸c nhau ghi vµo ®Üa dù phßng cßn d÷ liÖu míi ghi vµo ®Üa cÇn ghi ban ®Çu.

Sù kh¸c nhau duy nhÊt gi÷a RAID 4 vµ RAID 5 lµ c¸c ®Üa dù phßng (chøa tËp hîp c¸c th«ng tin cña c¸c ®Üa) ®−îc tËp trung trong mét khèi ®èi víi RAID 4 vµ ph©n t¸n trong c¸c khèi ®èi víi RAID 5.

RAID cÊp 6: §©y lµ cÊp ®é cã tÝnh an toµn cao nhÊt ®èi víi d÷ liÖu ®−îc l−u tr÷. Th«ng tin d− thõa cã kh¶ n¨ng ph¸t hiÖn vµ söa lçi cho d÷ liÖu trªn mçi ®Üa ®−îc ph©n tÝch theo hai c¸ch: C¸ch thø nhÊt gièng nh− c¸c cÊp ®é 4, 5 cña RAID. §ã lµ cã mét hÖ thèng ®Üa ch½n lÎ ®Ó l−u l¹i c¸c th«ng tin d− thõa cña mçi ®Üa. C¸ch thø hai lµ ph©n tÝch trªn toµn bé c¬ së d÷ liÖu vµ th«ng tin ë c¸c ®Üa kh¸c. Theo c¸ch nµy th× sè l−îng “®Üa d− thõa” sÏ ph¶i lín gÊp ®«i so víi ë cÊp 4 vµ 5 cña RAID.

4.3.2.2. KÕt nèi gi÷a c¸c phÇn tö l−u tr÷ vµ CPU

M¸y tÝnh gåm nhiÒu c¸c hÖ thèng con liªn kÕt víi nhau bëi c¸c bus, chøc n¨ng c¬ b¶n cña bus lµ truyÒn th«ng tin gi÷a c¸c khèi, hÖ thèng con trong m¸y tÝnh víi nhau.

¦u ®iÓm cña kiÕn tróc dïng bus nãi chung ®ã lµ sù linh ho¹t trong kÕt nèi, trao ®æi th«ng tin gi÷a c¸c thµnh phÇn, c¸c hÖ thèng con vµ chi phÝ thÊp. Nh−îc ®iÓm lµ th−êng t¹o ra c¸c ®iÓm “th¾t nót cæ chai”. §Ó kh¾c phôc, ng−êi ta ®−a ra khuyÕn nghÞ nªn giíi h¹n l−u l−îng th«ng tin trao ®æi trong c¸c ho¹t ®éng vµo/ra ®èi víi tõng hÖ thèng vµ mét sè phÇn tö vµo/ra nªn kÕt nèi trùc tiÕp víi c¸c hÖ thèng l−u tr÷ kh«ng qua bus cña m¸y tÝnh.

Bus trong m¸y tÝnh th«ng th−êng gåm 2 lo¹i chÝnh: bus kÕt nèi CPU vµ bé nhí chÝnh; bus kÕt nèi CPU vµ c¸c phÇn tö vµo/ra. Ngoµi ra còng cã thÓ ph©n lo¹i theo chøc n¨ng, khi ®ã chóng ta cã bus ®Þa chØ, bus d÷ liÖu vµ bus ®iÒu khiÓn. Trong khi bus kÕt nèi CPU vµ bé nhí chÝnh th−êng cã ®é réng x¸c ®Þnh (phô thuéc vµo dung l−îng bé nhí), tèc ®é cao, kho¶ng c¸ch ng¾n

Page 124: vµ cÊu tróc m¸y tÝnh€¦ ·

124

th× bus kÕt nèi CPU vµ c¸c phÇn tö vµo/ra th−êng ph¶i ®−îc dù trï ®é réng v× c¸c phÇn tö vµo/ra th−êng kh«ng cè ®Þnh, bus nµy còng cã tèc ®é chËm vµ dµi h¬n vÒ mÆt vËt lý.

Mét chu tr×nh cña bus th−êng gåm hai qu¸ tr×nh chÝnh: göi ®Þa chØ; ®äc hoÆc ghi d÷ liÖu, h×nh 4.18 minh ho¹ cho mét chu tr×nh bus ®¬n gi¶n.

Clock

Address

Data

Read

Wait

Mét chu tr×nh ®äc b¾t ®Çu b»ng viÖc CPU göi mét ®Þa chØ cÇn ®äc lªn bus ®Þa chØ cïng víi tÝn hiÖu cho phÐp ®äc (/RD). HÖ tÝn hiÖu nµy t¸c ®éng lªn bé nhí vµ kÕt qu¶ lµ bé nhí göi lªn bus d÷ liÖu mét hoÆc mét sè byte øng víi ®Þa chØ CPU ®· göi mµ nã ®ang l−u gi÷ cïng víi mét tÝn hiÖu ®îi mét chu kú ®ång hå tr−íc khi chuyÓn sang mét chu tr×nh kh¸c. Chu tr×nh ghi tõ CPU vµo bé nhí hoÆc ghi ra c¸c thiÕt bÞ ngoµi còng t−¬ng tù nh− vËy.

VÊn ®Ò thiÕt kÕ bus nh− thÕ nµo, chän kiÓu nµo, ®é réng, tèc ®é... ra sao sÏ cã ¶nh h−ëng rÊt lín ®Õn hiÖu n¨ng cña toµn hÖ thèng. Trong néi dung cña môc nµy chóng ta chØ ®Ò cËp tíi viÖc thiÕt kÕ bus kÕt nèi c¸c phÇn tö l−u tr÷ trong hÖ thèng l−u tr÷ vµ CPU.

H×nh 4.19 lµ mét vÝ dô ®iÓn h×nh vÒ tæ chøc bus vµ kÕt nèi c¸c phÇn tö l−u tr÷ víi CPU trong c¸c m¸y tÝnh ®Ó bµn. Theo c¸ch tæ chøc nµy, bus ®−îc ph©n cÊp theo chøc n¨ng, tõ trªn xuèng d−íi, bus kÕt nèi gi÷a CPU vµ bé nhí chÝnh cã tèc ®é cao nhÊt cßn bus cho c¸c phÇn tö vµo/ra cã tèc ®é thÊp nhÊt. Th«ng tin tõ c¸c hÖ thèng l−u tr÷ ë ®©y cã thÓ ®−îc chuyÓn tíi CPU theo hai c¸ch: C¸ch thø nhÊt lµ chuyÓn qua bus I/O vµ chuyÓn tíi bé

A0 − Am

D0 − Dn

H×nh 4.18. Minh ho¹ mét chu tr×nh BUS ®¬n gi¶n

Page 125: vµ cÊu tróc m¸y tÝnh€¦ ·

125

nhí chÝnh tr−íc khi ®−îc ®äc vµo CPU. C¸ch thø hai cã thÓ qua hÖ thèng m¹ng råi còng ®−îc chuyÓn vÒ bé nhí chÝnh.

Mét vÊn ®Ò ®Æt ra khi sö dông bus chung ®ã lµ lµm thÕ nµo ®Ó CPU cã thÓ biÕt ®−îc ®©u lµ c¸c phÇn tö vµo/ra ®Ó cã thÓ truy cËp ®äc/ghi? Cã ba c¸ch thøc mµ tuú theo tõng bé vi xö lý kh¸c nhau sÏ lùa chän c¸ch thøc kh¸c nhau:

− Kh«ng gian ®Þa chØ vËt lý mµ CPU cã thÓ qu¶n lý ®−îc chia thµnh hai phÇn riªng biÖt: mét phÇn cho bé nhí chÝnh vµ mét phÇn cho c¸c phÇn tö vµo/ra.

− CPU cã hç trî nh÷ng tÝn hiÖu ®Æc tr−ng cho phÐp truy cËp c¸c phÇn tö vµo/ra (vÝ dô nh− tÝn hiÖu IO/M ë 8086).

− Trong tËp lÖnh cã nh÷ng nhãm lÖnh dµnh riªng cho ho¹t ®éng vµo/ra.

BUS kÕt nèi CPU vµ bé nhí chÝnh

CACHE

CPU

Bé nhí chÝnh Bé t−¬ng

thÝch BUS

AGP BUS

Bé t−¬ng thÝch BUS

PCI BUS

Bé t−¬ng thÝch BUS

I/O BUS

M¹ng

C¸c phÇn tö l−u tr÷

H×nh 4.19. Tæ chøc bus ë m¸y tÝnh

Page 126: vµ cÊu tróc m¸y tÝnh€¦ ·

126

Trong thùc tÕ nhiÒu khi ta cÇn trao ®æi thËt nhanh víi thiÕt bÞ ngo¹i vi nh− khi ®−a d÷ liÖu ra mµn h×nh hoÆc ®iÒu khiÓn ®Üa. Tr−êng hîp ®ã ta cÇn cã ®−îc kh¶ n¨ng ghi/®äc trùc tiÕp kh«ng th«ng qua CPU th× míi ®¸p øng ®−îc yªu cÇu vÒ tèc ®é trao ®æi. §Ó lµm ®−îc ®iÒu nµy c¸c hÖ vi xö lý cÇn cã nh÷ng vi m¹ch chuyªn dông ®iÒu khiÓn x©m nhËp trùc tiÕp vµo bé nhí (DMA − Direct Memory Access), ®iÓn h×nh lµ vi m¹ch 8237A cña Intel cã thÓ ®iÒu khiÓn chuyÓn 1 byte trong mét m¶ng d÷ liÖu ra thiÕt bÞ ngo¹i vi chØ hÕt 4 chu kú ®ång hå trong khi 8086 lµm hÕt kho¶ng 40 chu kú. Trong tr−êng hîp nµy, CPU ë tr¹ng th¸i “treo” nh−êng l¹i quyÒn ®iÒu khiÓn bus cho c¸c thiÕt bÞ vµo/ra. VÊn ®Ò nµy sÏ ®−îc ®Ò cËp tíi trong ch−¬ng 7.

C©u hái vµ bµi tËp ch−¬ng 4 1. V× sao ph¶i ph©n cÊp bé nhí cña m¸y tÝnh?

2. V× sao vi xö lý ®äc/ghi d÷ liÖu ë ROM vµ RAM nhanh h¬n ë æ ®Üa cøng?

3. Khi ®−îc RESET, 8086 sÏ thùc hiÖn ch−¬ng tr×nh trong bé nhí nµo tr−íc tiªn, v× sao?

4. Sè ®−êng ®Þa chØ cña bé vi xö lý cã liªn quan nh− thÕ nµo víi dung l−îng cña bé nhí trªn hÖ thèng m¸y tÝnh ®ã?

5. X©y dùng m¹ch gi¶i m· ®Þa chØ cho 8 vi m¹ch nhí RAM (16KB×8bit) kÒ nhau, ®Þa chØ ®Çu cña vi m¹ch thø nhÊt lµ 80000H.

6. X©y dùng m¹ch gi¶i m· ®Þa chØ cho bé nhí gåm c¸c vi m¹ch nhí ®−îc bè trÝ nh− sau:

ROM(16KB×8bit) 60000H (®Þa chØ ®Çu cña ROM)

32KB

RAM1(16KB×8bit)

RAM2(16KB×8bit)

16KB

RAM3(16KB×8bit)

7. X©y dùng m¹ch gi¶i m· ®Þa chØ cho bé nhí gåm c¸c vi m¹ch nhí ®−îc bè trÝ nh− sau:

Page 127: vµ cÊu tróc m¸y tÝnh€¦ ·

127

ROM(128KB×8bit) 00000H (®Þa chØ ®Çu cña ROM)

RAM1(128KB×8bit)

RAM2(128KB×8bit)

8. X©y dùng m¹ch gi¶i m· ®Þa chØ cho bé nhí gåm c¸c vi m¹ch nhí ®−îc bè trÝ nh− sau:

ROM(256KB×8bit) 00000H (§Þa chØ ®Çu cña ROM)

RAM1(128KB×8bit)

RAM2(256KB×8bit) 0FFFFFH

1MB

512KB

Page 128: vµ cÊu tróc m¸y tÝnh€¦ ·

128

9. Cho s¬ ®å m¹ch ghÐp nèi nh− h×nh d−íi. X¸c ®Þnh ®Þa chØ ®Çu, cuèi cña cña c¸c vi m¹ch nhí.

62256

10 9 8 7 6 5 4 3

25 24 21 23

2 26

1

20

22 27

11 12 13 15 16 17 18 19

28

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14

CE

OE WE

D0 D1 D2 D3 D4 D5 D6 D7

VCC

A14

AND4

74LS138

1 2 3

15 14 13 12 11 10 9 7

6 4 5

A B C

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

G1 G2A G2B

VCC

D0

D7

/WR

A15

A13

A17

AND2

A13

D0..D7

A0 A14

/RD NAND4

/RD A19

A0

A18

VCC

A0..A19

27128

10 9 8 7 6 5 4 3

25 24 21 23

2 26

1

11 12 13 15 16 17 18 19

20

22 27

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13

VPP

D0 D1 D2 D3 D4 D5 D6 D7

CE

OE PGM

A16

D7

D0

Page 129: vµ cÊu tróc m¸y tÝnh€¦ ·

129

10. Cho s¬ ®å m¹ch ghÐp nèi nh− h×nh d−íi. X¸c ®Þnh ®Þa chØ ®Çu, cuèi cña cña c¸c vi m¹ch nhí.

ROM1

109876543

25242123

2

1112131516171819

2227

1

20

A0A1A2A3A4A5A6A7A8A9A10A11A12

O0O1O2O3O4O5O6O7

OEPGM

VPP

CE

RAM

109876543

252421232

261

20

2227

1112131516171819

28

A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14

CE

OEWE

D0D1D2D3D4D5D6D7

VCC

A19

A14

M-/IO

/RD

D7

AND2 12

3

A13

VCC

/RD

D7

A0

ROM2

109876543

252421232

26

1

1112131516171819

20

2227

A0A1A2A3A4A5A6A7A8A9A10A11A12A13

VPP

D0D1D2D3D4D5D6D7

CE

OEPGM

A17

A13

VCC

A0A0

74LS138

123

15141312111097

645

ABC

Y0Y1Y2Y3Y4Y5Y6Y7

G1G2AG2B

OR41

23

45

OR21

2

3

A16

D0

D7

A15

D0 D0

A14

/WR

A12

/RD

A18

D0..D7

A0..A19

Page 130: vµ cÊu tróc m¸y tÝnh€¦ ·

130

Ch−¬ng 5. Ch−¬ng 5. Ch−¬ng 5. Ch−¬ng 5. Vµo, ra d÷ liÖu

5.1. C¸c tÝn hiÖu phôc vô trao ®æi d÷ liÖu

Trao ®æi d÷ liÖu víi thiÕt bÞ ngoµi thùc chÊt lµ viÖc ghi/®äc d÷ liÖu ®Õn tõ thiÕt bÞ ngoµi. §Ó thùc hiÖn chøc n¨ng nµy ngoµi ®−êng bus d÷ liÖu, bé vi xö lý cßn cÇn ph¶i cã c¸c ®−êng tÝn hiÖu ®Þa chØ ®Ó qu¶n lý c¸c thiÕt bÞ ngoµi, c¸c ®−êng tÝn hiÖu ®iÒu khiÓn viÖc ghi/®äc d÷ liÖu, c¸c ®−êng tÝn hiÖu tr¹ng th¸i, cô thÓ nh− sau:

H×nh 5.1. C¸c tÝn hiÖu phôc vô viÖc trao ®æi d÷ liÖu trªn 8086

Trong sè c¸c ®−êng tÝn hiÖu phôc vô viÖc trao ®æi d÷ liÖu cña 8086 cã mét sè ®−êng lµ tÝn hiÖu ®a hîp, ®Ó sö dông ®−îc c¸c ®−êng tÝn hiÖu nµy ®óng môc ®Ých th× cÇn cã mét m¹ch chèt t¸ch riªng c¸c tÝn hiÖu trªn c¸c ch©n ®a hîp (h×nh 5.2).

H×nh 5.2. T¸ch tÝn hiÖu ®Þa chØ trªn c¸c ch©n ®a hîp

§iÒu khiÓn hÖ thèng

§iÒu khiÓn bus

M/IO (S2)

DT/R (S1)

/RD

/WR

/DEN (S0)

HOLD (RQ/GT0)

HLDA (RQ/GT1)

INTA (QS1)

ALE (QS0)

AD0

AD1

...

AD15

A16/S3

A17/S4

A18/S5

A19/S6

16 ®−êng ®a hîp bus ®Þa chØ vµ d÷ liÖu

4 ®−êng bus ®Þa chØ cao vµ tr¹ng th¸i

Page 131: vµ cÊu tróc m¸y tÝnh€¦ ·

131

AD12

74HC573

23456789

111

1918171615141312

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

AD11

AD9

A16

A12

A18A17/S4A1

A14

AD7

AD10

A16/S3

AD2

74HC573

23456789

111

1918171615141312

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

AD0

A19

AD13

0

A19/S6AD3

AD6

A8

A3

08086/LCC

1716151413121110987654343

4038

4241

3334

25

21

19

20

2426

36

37

3235

293031

2827

AD0AD1AD2AD3AD4AD5AD6AD7AD8AD9

AD10AD11AD12AD13AD14AD15

A18/S5A19/S6

A16/S3A17/S4

RQ/GT1/HLDARQ/GT0/HOLD

READY

CLK

NMI

INTR

RSTTEST

MN/MX

BHE/S7

LOCK/WRRD

S0/DENS1/DT/RS2/M/IO

QS0/ALEQS1/INTA

AD4

A15

A18/S5

AD5

A11

AD14

0

A9

A4

A17

AD15

A10

AD8

A0

74HC573

23456789

111

1918171615141312

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

A5

AD1A2

A13

A6A7

Page 132: vµ cÊu tróc m¸y tÝnh€¦ ·

132

5.2. Vµo/ra d÷ liÖu víi 8255A

5.2.1. S¬ ®å cÊu tróc, s¬ ®å ch©n vi m¹ch 8255A

D0 – D7: bus d÷ liÖu (hai chiÒu).

Reset: Cho phÐp khëi t¹o tr¹ng th¸i ban ®Çu cho vi m¹ch.

/CS (Chip Select): TÝn hiÖu chän vi m¹ch

/RD (Read): TÝn hiÖu cho phÐp ®äc

/WR (Write): TÝn hiÖu cho phÐp ghi

A0 – A1: TÝn hiÖu ®Þa chØ

PA7 – PA0: Cæng A

PB7 – PB0: Cæng B

PC7 – PC0: Cæng C

5.2.1.1. PhÇn ghÐp nèi víi vi xö lý

PhÇn ghÐp nèi víi vi xö lý bao gåm:

H×nh 5.3. S¬ ®å ch©n, s¬ ®å logic cña 8255A

PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2

PA4

PA5

PA6

PA7

WR

RESET

D0

D1

D2

D3

D4

D5

D6

D7

Vcc

PB7

PB6

PB5

PB4

PB3

1

20 21

40

D0 – D7 PA0 –PA7

PB0 – PB7

PC0 – PC7

RD

WR

RESET

8255A

8255A

A0 A1 CS

Page 133: vµ cÊu tróc m¸y tÝnh€¦ ·

133

− Bé ®Öm d÷ liÖu ®Ó trao ®æi th«ng tin vÒ d÷ liÖu hai chiÒu (vµo/ra) gi÷a ®−êng d©y cña vi xö lý vµ ®−êng d©y bus néi cña 8255A.

− Bé logic ®iÒu khiÓn ®äc/ghi: lµ bé gi¶i m· ®Þa chØ lÖnh do c¸c thanh ghi ®Öm vµ thanh ghi ®iÒu khiÓn.

5.2.1.2. PhÇn ghÐp nèi víi thiÕt bÞ ngoµi

PhÇn ghÐp nèi víi thiÕt bÞ ngoµi bao gåm:

− Cæng A: Thanh ghi ®Öm d÷ liÖu (8 bit) vµo/ra tuú theo ch−¬ng tr×nh khëi ph¸t.

− Cæng B: Thanh ghi ®Öm sè liÖu (8 bit) vµo/ra tuú theo ch−¬ng tr×nh khëi ph¸t.

H×nh 5.4. S¬ ®å khèi vi m¹ch 8255A

Cöa A (8bit) 8 I/O

PA0 – PA7

Cöa C nöa cao (4bit)

4 I/O

PC7 – PC4

Cöa C nöa thÊp (4bit)

4 I/O PC3 – PC0

Cöa B (8bit)

4 I/O PB7 – PB0

§iÒu khiÓn nhãm B

§Öm d÷ liÖu

D0 – D7

Logic ®iÒu khiÓn ®äc/ghi

RD

WR A1 A0

Reset

§iÒu khiÓn nhãm A

Page 134: vµ cÊu tróc m¸y tÝnh€¦ ·

134

− Cæng C: Nöa cao (4 bit).

− Cæng C: Nöa thÊp (4 bit).

Tuú theo chÕ ®é sö dông ghi bëi tõ ®iÒu khiÓn cæng C cã thÓ ®−îc dïng:

− Trao ®æi d÷ liÖu vµo hoÆc ra.

− §iÒu khiÓn hoÆc ®èi tho¹i víi thiÕt bÞ ngoµi vµ vi xö lý khi cæng A vµ B ë chÕ ®é 0 b»ng c¸ch x¸c lËp vµ xo¸ tõng bit PCi.

− §iÒu khiÓn hoÆc ®èi tho¹i víi thiÕt bÞ ngoµi vµ vi xö lý khi cæng A vµ B ë chÕ ®é 1 vµ 2.

5.2.1.3. PhÇn c¸c m¹ch ®iÒu khiÓn néi bé

Cã c¸c khèi ®iÒu khiÓn nhãm A, nhãm B; khèi ®iÒu khiÓn c¸c cæng A, B vµ C.

5.2.2. C¸c lÖnh ghi/®äc c¸c cæng vµ thanh ghi ®iÒu khiÓn

Víi tæ hîp cña c¸c tÝn hiÖu ®Þa chØ (A0A1), tÝn hiÖu chän vi m¹ch (/CS), c¸c tÝn hiÖu ®äc (/RD), ghi (/WR) cña vi xö lý, ta cã thÓ cã c¸c lÖnh ghi vµ ®äc kh¸c nhau cho c¸c cæng (A, B, C) vµ thanh ghi ®iÒu khiÓn t¹o ra sù di chuyÓn d÷ liÖu gi÷a ®−êng d©y d÷ liÖu, c¸c cæng vµ thanh ghi ®iÒu khiÓn. Nh− vËy, vi m¹ch 8255A cã ®Æc ®iÓm lµ kh«ng cã lÖnh ®äc thanh ghi tr¹ng th¸i mµ dïng lÖnh ®äc cæng C khi vi m¹ch ë chÕ ®é 1 vµ 2, cßn ë chÕ ®é 0, kh«ng ®äc ®−îc tr¹ng th¸i.

A1 A0 /CS /RD /WR LÖnh (cña VXL) ChiÒu di chuyÓn d÷ liÖu

0 0 0 0 1

0 1 0 0 1

1 0 0 0 1

§äc cæng A

§äc cæng B

§äc cæng C

Cæng A → D0 − D7

Cæng B → D0 − D7

Cæng C → D0 − D7

1 1 0 0 1 Kh«ng cã gi¸ trÞ

0 0 0 1 0

0 1 0 1 0

1 0 0 1 0

1 1 0 1 0

Ghi cæng A

Ghi cæng B

Ghi cæng C

Ghi thanh ghi ®iÒu khiÓn

D0 − D7→ Cæng A

D0 − D7→ Cæng B

D0 − D7→ Cæng C

D0 − D7 thanh ghi ®iÒu khiÓn

x x 1 x x Vi m¹ch ë tr¹ng th¸i ®iÖn trë cao

Kh«ng cã trao ®æi d÷ liÖu

B¶ng 5.1. Logic ghi/®äc cña 8255A

Page 135: vµ cÊu tróc m¸y tÝnh€¦ ·

135

5.2.3. C¸c chÕ ®é ho¹t ®éng

Tuú gi¸ trÞ ghi vµo thanh ghi ®iÒu khiÓn khi khëi t¹o, vi m¹ch cã thÓ ho¹t ®éng ë c¸c chÕ ®é 0, 1, 2 kh¸c nhau, chiÒu cña c¸c cæng A, B, C cã thÓ lµ ra hoÆc vµo.

5.2.3.1. ChÕ ®é 0

ChÕ ®é nµy cßn ®−îc gäi lµ chÕ ®é vµo/ra c¬ së v×:

− C¸c cæng A, B vµ C ®−îc sö dông ®éc lËp víi nhau.

− C¸c cæng A, B vµ C cã thÓ vµo hoÆc ra tuú thuéc gi¸ trÞ cña tõ ®iÒu khiÓn chÕ ®é ghi vµo thanh ghi ®iÒu khiÓn.

− D÷ liÖu ra ®−îc chèt.

− D÷ liÖu vµo kh«ng ®−îc chèt.

− Kh«ng cã sù ®èi tho¹i víi thiÕt bÞ ngoµi.

D7 D6 D5 D4 D3 D2 D1 D0

H×nh 5.5. CÊu tróc tõ ®iÒu khiÓn cña 8255A

ChÕ ®é nhãm A 00: ChÕ ®é 0 01: ChÕ ®é 1 1x: ChÕ ®é 2

ChiÒu cæng C 1: Vµo 0: Ra

ChiÒu cæng C thÊp 1: Vµo 0: Ra

ChiÒu cæng B 1: Vµo 0: Ra

ChÕ ®é nhãm B 1: ChÕ ®é 1 0: ChÕ ®é 0

ChiÒu cæng A 1: Vµo 0: Ra

1

H×nh 5.6. M« t¶ ho¹t ®éng cña 8255A ë chÕ ®é 0

PC4 – PC7 PB0 – PB7

I/O

PA0 – PA7

I/O

/WR /RD D0 – D7 A0 A1 CS

PB PC PA A

I/O I/O

PC0 – PC3

Page 136: vµ cÊu tróc m¸y tÝnh€¦ ·

136

5.2.3.2. ChÕ ®é 1

ChÕ ®é nµy cßn gäi lµ chÕ ®é vµo/ra cã ®ét cöa hay ®èi tho¹i víi c¸c bit cña cæng C. C¸c cæng A, B, C ®−îc chia thµnh 2 nhãm:

− Nhãm A gåm cæng A ®Ó trao ®æi d÷ liÖu vµ cæng C cao (PC7 – PC4) ®Ó ®èi tho¹i víi vi xö lý vµ thiÕt bÞ ngoµi.

− Nhãm B gåm cæng B ®Ó trao ®æi d÷ liÖu vµ cæng C thÊp (PC0 – PC3) ®Ó ®èi tho¹i víi vi xö lý vµ thiÕt bÞ ngoµi.

ChiÒu vµ chÕ ®é cña cæng A, B do tõ ®iÒu khiÓn quyÕt ®Þnh, cßn c¸c tÝn hiÖu ®èi tho¹i PCi phô thuéc chiÒu cæng vµo hay ra.

ë chÕ ®é 1 ta thÊy:

− PC0 lu«n lµ tÝn hiÖu INTRB − tÝn hiÖu yªu cÇu ng¾t ch−¬ng tr×nh cho cæng B.

− PC3 lu«n lµ tÝn hiÖu INTRA − tÝn hiÖu yªu cÇu ng¾t ch−¬ng tr×nh cho cæng A.

− PC2 lu«n lµ tÝn hiÖu vµo, nhËn c¸c tÝn hiÖu yªu cÇu STBB vµ x¸c nhËn ACKB cña thiÕt bÞ ngoµi cho cæng B t−¬ng øng víi chiÒu vµo hay chiÒu ra. Cßn cæng A nÕu lµ cæng vµo, PC4 nhËn STBA cña thiÕt bÞ ngoµi vµ PC6 nhËn ACKA cña thiÕt bÞ ngoµi nÕu cæng A lµ cæng ra.

5.2.3.3. ChÕ ®é 2

ChÕ ®é nµy chØ dïng cho cæng A víi vµo/ra thuËn nghÞch vµ c¸c bit PC3, PC4 – PC7 dïng lµm c¸c tÝn hiÖu ®èi tho¹i, trong ®ã:

H×nh 5.7. M« t¶ ho¹t ®éng cña 8255A ë chÕ ®é 1

PB PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PA

Cöa vµo: PB0 – PB7 INTRB IBFB STBB INTRA STBA IBFA I/O I/O PA0 – PA7

Cöa ra: PB0 – PB7 INTRB OBFB ACKB INTR A I/O I/O ACKA OBFA PA0 – PA7

§èi tho¹i cöa B §èi tho¹i cöa A

Page 137: vµ cÊu tróc m¸y tÝnh€¦ ·

137

− PC3 cho tÝn hiÖu yªu cÇu ng¾t INTRA chung cho c¶ hai chiÒu vµ gièng chÕ ®é 1.

− PC4 cho tÝn hiÖu vµo STBA khi cæng A cã chiÒu vµo.

− PC6 cho tÝn hiÖu vµo ACKA khi cæng A cã chiÒu ra.

Chung c¶ hai chÕ ®é 1 vµ 2 c¸c bit cßn l¹i dïng lµm ®èi tho¹i cña cæng C ®Òu lµ c¸c tÝn hiÖu ra:

− IBFA, IBFB chØ d÷ liÖu vµo ®· ghi ®Çy vµo c¸c cæng A hoÆc B ®Ó yªu cÇu thiÕt bÞ ngoµi kh«ng ®−a d÷ liÖu vµo n÷a.

− OBFA, OBFB chØ d÷ liÖu ra ®· ghi ®Çy vµo c¸c cæng A hoÆc B ®Ó yªu cÇu thiÕt bÞ ngoµi ®äc d÷ liÖu.

5.2.4. GhÐp nèi 8255 víi vi xö lý vµ thiÕt bÞ ngoµi

8255A lµ mét trong c¸c vi m¹ch hç trî c¸c bé vi xö lý thÕ hÖ 8086 trong viÖc giao tiÕp víi c¸c thiÕt bÞ ngoµi. Trong mét hÖ thèng m¸y tÝnh 8255A lµ trung gian gi÷a vi xö lý vµ c¸c thiÕt bÞ ngoµi (h×nh 5.8).

5.2.4.1. PhÇn ghÐp nèi víi vi xö lý

C¸c tÝn hiÖu ®−êng d©y vÒ d÷ liÖu (D0 ÷ D7), ®Þa chØ thÊp (A0 A1), tÝn hiÖu cho phÐp ®äc /RD, cho phÐp ghi /WR ®−îc nèi th¼ng víi c¸c tÝn hiÖu t−¬ng øng cña 8255A.

H×nh 5.8. Phèi ghÐp 8086 víi 8255A

/INTR D0 ÷ D7

/RD/WR

RESETVXL

A0A1

A2 ÷ An

8

8

PA0 ÷ PA7

8

PC0 ÷ PC7

Gi¶i m· ®Þa chØ cao

8

PB0 ÷ PB7

D0 ÷ D7 INTRA, INTRB

/RD /WR RESET

8255A A0 A1 /CS

ThiÕt bÞ

ngoµi

Page 138: vµ cÊu tróc m¸y tÝnh€¦ ·

138

TÝn hiÖu /CS cña 8255A ®−îc nèi víi bé gi¶i m· c¸c ®Þa chØ cao (A2 − An) cña vi xö lý.

C¸c tÝn hiÖu yªu cÇu ng¾t ch−¬ng tr×nh INTRA, INTRB cña 8255A ®−îc nèi vµo lèi vµo INTR cña vi xö lý.

5.2.4.2. PhÇn ghÐp nèi víi thiÕt bÞ ngoµi

Tuú thuéc vµo thiÕt bÞ ngoµi (®−a tin vµo, nhËn tin ra) sè bit cña ®−êng d©y d÷ liÖu (8, 16 bit) vµ ph−¬ng thøc trao ®æi th«ng tin mµ ta cã thÓ sö dông 8255A ë c¸c chÕ ®é kh¸c nhau.

− 8255A ë chÕ ®é 0: Ba cæng A, B vµ C ®Òu cã thÓ ®−îc dïng ®Ó trao ®æi d÷ liÖu ®éc lËp víi nhau.

− 8255A ë chÕ ®é 1: ChØ cã hai cæng PA, PB lµ trao ®æi d÷ liÖu ®éc lËp nhau, cßn c¸c ®−êng d©y PCi cña cæng PC ®−îc dïng ®Ó ®èi tho¹i cho c¸c cæng PA vµ PB. C¸c ®−êng d©y nµy cã chiÒu x¸c ®Þnh vµ cã vai trß x¸c ®Þnh (kh«ng thÓ thay ®æi chiÒu vµ vai trß sö dông).

− 8255A ë chÕ ®é 2: ChØ cho cæng A cã thÓ trao ®æi d÷ liÖu vµo/ra, c¸c bit cña cæng PC còng cã vai trß vµ chiÒu x¸c ®Þnh.

5.2.5. Mét sè vÝ dô lËp tr×nh víi 8255A

VÝ dô 1: ViÕt ch−¬ng tr×nh ®iÒu khiÓn c¸c LED s¸ng tuÇn tù theo vßng trßn víi thêi gian trÔ lµ 1s. Gi¶ sö ®Þa chØ c¸c cæng A, B, C vµ thanh ghi ®iÒu khiÓn ®· ®−îc ®Þnh s½n lµ 19H, 1BH, 1DH, 1FH (h×nh 5.9).

H×nh 5.9. 8255A ®iÒu khiÓn c¸c LED s¸ng tuÇn tù

PA0123

456

PA7

8 0 8 6

+Vcc

+Vcc

LED1

LED8

8255A

Page 139: vµ cÊu tróc m¸y tÝnh€¦ ·

139

D−íi ®©y lµ ch−¬ng tr×nh ®Çy ®ñ:

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE

;

CREG EQU 1FH

PC EQU 1DH

PB EQU 1BH

PA EQU 19H

;

ORG 1000H

MOV AL,10000000B

; tõ ®iÒu khiÓn (MODE0 c¸c cæng cã chiÒu ra)

OUT CREG,AL

;

MOV AL,00000000B ; cÊm c¸c cæng B, C

OUT PB,AL

OUT PC,AL

;

MOV AL,00000001B ; LED thø nhÊt s¸ng

L:

OUT PA,AL

CALL TIMER ; trÔ 1 gi©y

ROL AL,1

JMP L

;

INT 3

;

TIMER:

MOV CX,1

TIMER2:

Page 140: vµ cÊu tróc m¸y tÝnh€¦ ·

140

PUSH CX

MOV CX,0

TIMER1:

NOP

NOP

NOP

NOP

LOOP TIMER1

POP CX

LOOP TIMER2

RET

;

CODE ENDS

END

VÝ dô 2: ViÕt ch−¬ng tr×nh ®iÒu khiÓn c¸c LED s¸ng nÕu kho¸ K ®ãng vµ t¾t nÕu kho¸ K më (h×nh 5.10).

H×nh 5.10. 8255A ®iÒu khiÓn c¸c LED t¾t/më theo kho¸ K

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE

;

PA0123 456

PC0 PA7

8 0 8 6

+Vcc

+Vcc

+Vcc

K

8255A

Page 141: vµ cÊu tróc m¸y tÝnh€¦ ·

141

CREG EQU 1FH

PC EQU 1DH

PB EQU 1BH

PA EQU 19H

;

ORG 1000H

MOV AL,10000001B

; tõ ®iÒu khiÓn (MODE0,a,b RA,PCi vµo)

OUT CREG,AL

;

MOV AL,00000000B ; cÊm cæng B

OUT PB,AL

;

nh:

IN AL,PC ;kiÓm tra kho¸ K

AND AL,01H

CMP AL,01H

JNE ledtat

MOV AL,11111111B ; LED s¸ng

OUT PA,AL

JMP lap

ledtat:

MOV AL,00000000B ; LED tat

OUT PA,AL

lap:

JMP nh

CODE ENDS

END

Page 142: vµ cÊu tróc m¸y tÝnh€¦ ·

142

5.3. Vµo/ra d÷ liÖu b»ng DMA (DIRECT MEMORY ACCESS)

5.3.1. Nguyªn t¾c trao ®æi d÷ liÖu víi thiÕt bÞ ngo¹i vi b»ng c¸ch truy cËp trùc tiÕp bé nhí

Trong c¸c c¸ch ®iÒu khiÓn viÖc trao ®æi d÷ liÖu gi÷a thiÕt bÞ ngo¹i vi vµ hÖ vi xö lý b»ng c¸ch th¨m dß tr¹ng th¸i s½n sµng cña thiÕt bÞ ngo¹i vi hay b»ng c¸ch ng¾t bé vi xö lý ®· ®−îc nãi ®Õn trong phÇn tr−íc, d÷ liÖu th−êng ®−îc chuyÓn tõ bé nhí qua bé vi xö lý råi tõ ®ã ghi vµo thiÕt bÞ ngo¹i vi hoÆc ng−îc l¹i tõ thiÕt bÞ ngo¹i vi vµo bé vi xö lý vµ chuyÓn ®Õn bé nhí. Theo c¸c c¸ch nµy, tèc ®é trao ®æi phô thuéc rÊt nhiÒu vµo tèc ®é cña bé vi xö lý.

Trong thùc tÕ, nhiÒu khi ta cÇn trao ®æi nhanh víi thiÕt bÞ ngo¹i vi nh− khi ®−a d÷ liÖu ra mµn h×nh hoÆc ®iÒu khiÓn ®Üa. Tr−êng hîp ®ã ta cÇn cã ®−îc kh¶ n¨ng ghi/®äc trùc tiÕp kh«ng th«ng qua CPU th× míi ®¸p øng ®−îc yªu cÇu vÒ tèc ®é trao ®æi. §Ó lµm ®−îc ®iÒu nµy, c¸c hÖ vi xö lý cÇn cã nh÷ng vi m¹ch chuyªn dông ®Ó ®iÒu khiÓn x©m nhËp trùc tiÕp vµo bé nhí (DMA), ®iÓn h×nh lµ vi m¹ch 8237A cña Intel cã thÓ ®iÒu khiÓn chuyÓn 1 byte trong mét m¶ng d÷ liÖu ra thiÕt bÞ ngo¹i vi chØ hÕt 4 chu kú ®ång hå trong khi 8086 lµm hÕt kho¶ng 40 chu kú.

LAP: MOV AL,[SI] ; 10 chu kú

OUT PORT,AL ; 10

INC SI ; 2

LOOP LAP ; 17

; tæng 39 chu kú

5.3.2. S¬ ®å khèi hÖ thèng trao ®æi kiÓu DMA

§Ó hç trî cho kh¶ n¨ng trao ®æi trùc tiÕp bé nhí, c¸c CPU th−êng cã ch©n yªu cÇu treo HOLD. Khi thiÕt bÞ ngo¹i vi cã yªu cÇu trao ®æi trùc tiÕp bé nhí th× th«ng qua ch©n nµy b¸o cho CPU biÕt. §Õn l−ît CPU khi nhËn ®−îc yªu cÇu treo nÕu chÊp nhËn nã sÏ tù treo ra khái hÖ thèng vµ ®−a xung HLDA ra ngoµi ®Ó cho phÐp sö dông bus.

S¬ ®å khèi cña mét hÖ thèng trao ®æi theo kiÓu DMA ®−îc cho nh− h×nh 5.11.

Page 143: vµ cÊu tróc m¸y tÝnh€¦ ·

143

Ta nhËn thÊy trong hÖ thèng nµy khi CPU treo th× nã trao quyÒn sö dông bus cho DMA. Trong tr−êng hîp nµy, DMA ph¶i cã tr¸ch nhiÖm qu¶n lý toµn bé hÖ thèng. §Ó lµm ®−îc ®iÒu ®ã, DMA ph¶i t¹o ra ®−îc c¸c tÝn hiÖu gièng nh− CPU vµ b¶n th©n nã ph¶i lµ mét thiÕt bÞ lËp tr×nh ®−îc.

Qu¸ tr×nh ho¹t ®éng cã thÓ tãm t¾t nh− sau: Khi thiÕt bÞ ngo¹i vi cã yªu cÇu trao ®æi d÷ liÖu trùc tiÕp víi bé nhí, nã ®−a yªu cÇu treo DRQ = 1 ®Õn DMAC, DMAC sÏ ®−a yªu cÇu HRQ = 1 ®Õn ch©n HOLD cña CPU. NhËn ®−îc yªu cÇu treo CPU sÏ tù treo c¸c bus cña m×nh vµ tr¶ lêi qua tÝn hiÖu HLDA = 1 ®Õn ch©n HACK cña DMAC. DMAC th«ng b¸o cho thiÕt bÞ ngo¹i vi qua tÝn hiÖu DACK = 1. Khi qu¸ tr×nh DMA kÕt thóc th× DMAC ®−a ra tÝn hiÖu HRQ = 0.

5.3.3. C¸c ph−¬ng thøc trao ®æi d÷ liÖu

Trong thùc tÕ cã 3 kiÓu trao ®æi d÷ liÖu b»ng c¸ch x©m nhËp trùc tiÕp bé nhí.

* Trao ®æi c¶ m¶ng d÷ liÖu

Trong chÕ ®é nµy, CPU bÞ treo trong suèt qu¸ tr×nh trao ®æi m¶ng d÷ liÖu. ChÕ ®é nµy ®−îc dïng khi ta cã nhu cÇu trao ®æi d÷ liÖu víi æ ®Üa hoÆc mµn h×nh, c¸c thñ tôc diÔn ra nh− sau:

− CPU ph¶i ghi tõ ®iÒu khiÓn vµ tõ chÕ ®é lµm viÖc vµo DMAC ®Ó quy ®Þnh c¸ch thøc lµm viÖc, ®Þa chØ ®Çu cña m¶ng, ®é dµi cña m¶ng…

− Khi thiÕt bÞ ngo¹i vi cã yªu cÇu trao ®æi d÷ liÖu, nã ®−a DRQ = 1 ®Õn DMAC:

H×nh 5.11. S¬ ®å khèi mét hÖ thèng trao ®æi d÷ liÖu b»ng DMA

CPU

HOLD

HLDA

DMAC HRQ DRQ

HACK DACK

I/O DRQ DACK

MEM

Page 144: vµ cÊu tróc m¸y tÝnh€¦ ·

144

+ DMAC ®−a ra tÝn hiÖu HRQ ®Õn ch©n HOLD cña CPU ®Ó yªu cÇu treo CPU. TÝn hiÖu HOLD ph¶i ë møc cao trong suèt qu¸ tr×nh trao ®æi.

+ NhËn ®−îc yªu cÇu treo, CPU kÕt thóc chu kú bus hiÖn t¹i sau ®ã nã treo c¸c bus cña m×nh vµ ®−a tÝn hiÖu HLDA b¸o cho DMAC ®−îc toµn quyÒn sö dông bus.

+ DMAC ®−a ra xung DACK b¸o cho thiÕt bÞ ngo¹i vi biÕt lµ ®· cã thÓ trao ®æi d÷ liÖu.

+ DMAC b¾t ®Çu chuyÓn d÷ liÖu tõ bé nhí ra thiÕt bÞ ngo¹i vi b»ng c¸ch ®−a ®Þa chØ cña byte ®Çu ra bus ®Þa chØ vµ ®−a tÝn hiÖu MEMR = 0 ®Ó ®äc mét byte tõ bé nhí ra bus d÷ liÖu. TiÕp ®ã DMAC ®−a ra tÝn hiÖu IOW = 0 ®Ó ghi d÷ liÖu ra thiÕt bÞ ngo¹i vi. Sau ®ã DMAC gi¶m sè byte cÇn chuyÓn ®i, cËp nhËt ®Þa chØ cña byte cÇn ®äc tiÕp vµ lÆp l¹i cho ®Õn khi hÕt m¶ng d÷ liÖu.

− Khi qu¸ tr×nh DMA kÕt thóc, DMAC ®−a ra tÝn hiÖu HRQ = 0 ®Ó b¸o cho CPU biÕt ®Ó CPU giµnh l¹i quyÒn ®iÒu khiÓn bus hÖ thèng.

* Treo CPU ®Ó trao ®æi tõng byte

Trong c¸ch trao ®æi nµy CPU kh«ng bÞ treo l©u dµi nh−ng thØnh tho¶ng l¹i bÞ treo mét kho¶ng thêi gian rÊt ng¾n ®ñ ®Ó trao ®æi mét byte d÷ liÖu (CPU bÞ lÊy mÊt mét sè chu kú ®ång hå). Do bÞ lÊy mÊt mét sè chu kú ®ång hå nªn tèc ®é xö lý mét c«ng viÖc nµo ®ã bÞ chËm l¹i. C¸ch ho¹t ®éng t−¬ng tù nh− lÇn tr−íc chØ kh¸c lµ mçi lÇn trao ®æi mét byte.

* TËn dông thêi gian CPU kh«ng dïng bus ®Ó trao ®æi d÷ liÖu

Trong c¸ch trao ®æi d÷ liÖu nµy ta ph¶i cã logic phô thªm ngoµi cÇn thiÕt ®Ó ph¸t hiÖn chu kú xö lý néi bé cña CPU (kh«ng dïng ®Õn bus ngoµi) vµ tËn dông c¸c chu kú ®ã ®Ó tiÕn hµnh trao ®æi. Trong c¸ch nµy th× DMAC vµ CPU thay nhau sö dông bus vµ kiÓu x©m nhËp nµy kh«ng ¶nh h−ëng g× ®Õn ho¹t ®éng cña CPU.

Page 145: vµ cÊu tróc m¸y tÝnh€¦ ·

145

Ch−¬ng 6. Ch−¬ng 6. Ch−¬ng 6. Ch−¬ng 6. Ng¾t vµ xö lý ng¾t

6.1. Kh¸i niÖm vµ sù cÇn thiÕt ph¶i ng¾t CPU

Trong thùc tÕ ng−êi ta rÊt muèn tËn dông kh¶ n¨ng cña CPU ®Ó lµm thªm ®−îc nhiÒu c«ng viÖc kh¸c n÷a, chØ khi nµo cÇn trao ®æi d÷ liÖu th× míi yªu cÇu CPU t¹m dõng c«ng viÖc hiÖn t¹i ®Ó phôc vô viÖc trao ®æi d÷ liÖu. Sau khi hoµn thµnh viÖc trao ®æi d÷ liÖu th× CPU l¹i quay vÒ lµm tiÕp c«ng viÖc hiÖn ®ang bÞ gi¸n ®o¹n. C¸ch lµm viÖc theo kiÓu nµy gäi lµ ng¾t CPU (gi¸n ®o¹n ho¹t ®éng cña CPU). Mét hÖ thèng sö dông ng¾t cã thÓ ®¸p øng rÊt nhanh c¸c yªu cÇu trao ®æi d÷ liÖu trong khi vÉn cã thÓ lµm ®−îc c¸c c«ng viÖc kh¸c. Khi hÖ thèng cã sö dông ng¾t th× nã ph¶i ®−îc tæ chøc sao cho cã kh¶ n¨ng thùc hiÖn c¸c ch−¬ng tr×nh phôc vô ng¾t t¹i c¸c ®Þa chØ x¸c ®Þnh cña CPU. Khi nghiªn cøu c¸c tÝn hiÖu cña CPU 8086, ta ®· thÊy vi m¹ch nµy cã c¸c ch©n tÝn hiÖu cho c¸c yªu cÇu ng¾t che ®−îc INTR vµ kh«ng che ®−îc NMI. C¸c ch©n tÝn hiÖu yªu cÇu ng¾t nµy sÏ ®−îc sö dông vµo viÖc ®−a c¸c yªu cÇu ng¾t tõ bªn ngoµi ®Õn CPU.

6.2. Tæ chøc ng¾t ë 8086

Trong hÖ vi xö lý 8086 cã thÓ xÕp c¸c nguyªn nh©n g©y ra ng¾t CPU vµo 3 nhãm nh− sau:

* Nhãm c¸c ng¾t cøng

Ng¾t cøng lµ c¸c yªu cÇu ng¾t CPU do c¸c tÝn hiÖu ®Õn tõ c¸c ch©n INTR vµ NMI.

Ng¾t cøng NMI lµ yªu cÇu ng¾t kh«ng che ®−îc t−¬ng ®−¬ng víi ng¾t mÒm INT2. C¸c lÖnh CLI (xo¸ cê IF) vµ STI (lËp cê IF) kh«ng cã ¶nh h−ëng ®Õn viÖc nhËn biÕt tÝn hiÖu yªu cÇu ng¾t NMI.

Ng¾t cøng INTR lµ yªu cÇu ng¾t che ®−îc. C¸c lÖnh CLI vµ STI cã ¶nh h−ëng trùc tiÕp tíi tr¹ng th¸i cña cê IF trong bé vi xö lý, tøc lµ ¶nh h−ëng tíi viÖc CPU cã nhËn biÕt yªu cÇu ng¾t t¹i ch©n nµy hay kh«ng. Yªu cÇu ng¾t t¹i ch©n INTR cã thÓ cã kiÓu ng¾t N n»m trong kho¶ng 0 − 0FFH. KiÓu ng¾t nµy ph¶i ®−îc ®−a bus d÷ liÖu ®Ó CPU cã thÓ ®äc ®−îc khi cã xung INTA trong chu kú tr¶ lêi chÊp nhËn ng¾t.

BiÓu ®å thêi gian cña c¸c xung liªn quan ®Õn qu¸ tr×nh trªn ®−îc m« t¶ trªn h×nh 6.1

Page 146: vµ cÊu tróc m¸y tÝnh€¦ ·

146

* Nhãm c¸c ng¾t mÒm

Ng¾t mÒm lµ khi CPU thùc hiÖn c¸c lÖnh ng¾t d¹ng INT N, trong ®ã N lµ sè hiÖu hay kiÓu ng¾t n»m trong kho¶ng 0 − 225.

* Nhãm c¸c hiÖn t−îng ngo¹i lÖ

§ã lµ ng¾t do c¸c lçi n¶y sinh trong qu¸ tr×nh ho¹t ®éng cña CPU nh− phÐp chia cho 0, x¶y ra trµn khi tÝnh to¸n.

Yªu cÇu ng¾t sÏ ®−îc CPU kiÓm tra th−êng xuyªn t¹i chu kú ®ång hå cuèi cïng cña mçi lÖnh.

Trªn h×nh 6.2 tr×nh bµy mét c¸ch ®¬n gi¶n ®Ó ®−a ®−îc sè hiÖu ng¾t N vµo bus d÷ liÖu trong khi còng t¹o ra yªu cÇu ng¾t ®−a vµo ch©n INTR cña bé vi xö lý 8086.

H×nh 6.1. Chu kú tr¶ lêi ng¾t cña CPU 8086

Sè hiÖu ng¾t

D7 − D0

INTA

LOCK

INTR

H×nh 6.2. §−a sè hiÖu ng¾t vµo bus d÷ liÖu

AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7

INTA INTR

OC1 OC2 LS244

+5V

8086

Page 147: vµ cÊu tróc m¸y tÝnh€¦ ·

147

Gi¶ thiÕt trong mét thêi ®iÓm nhÊt ®Þnh chØ cã mét yªu cÇu ng¾t IRi ®−îc t¸c ®éng vµ khi ®ã ë ®Çu ra cña m¹ch NAND sÏ cã xung yªu cÇu ng¾t ®Õn CPU. TÝn hiÖu IRi ®−îc ®ång thêi ®−a qua m¹ch khuÕch ®¹i ®Öm ®Ó t¹o ra sè hiÖu ng¾t t−¬ng øng, sè hiÖu ng¾t nµy sÏ ®−îc CPU ®äc vµo khi nã ®−a ra tÝn hiÖu tr¶ lêi INTA.

B¶ng 6.1. Quan hÖ gi÷a IRi vµ sè hiÖu ng¾t N t−¬ng øng

ADADADAD7777 IRIRIRIR6666 IRIRIRIR5555 IRIRIRIR4444 IRIRIRIR3333 IRIRIRIR2222 IRIRIRIR1111 IRIRIRIR0000 NNNN

1 1 1 1 1 1 1 0 FEH (254)

1 1 1 1 1 1 0 1 FDH (253)

1 1 1 1 1 0 1 1 FBH (251)

1 1 1 1 0 1 1 1 F7H (247)

1 1 1 0 1 1 1 1 EFH (239)

1 1 0 1 1 1 1 1 DFH (223)

1 0 1 1 1 1 1 1 BFH (191)

6.3. §¸p øng cña CPU khi cã yªu cÇu ng¾t

Khi cã yªu cÇu ng¾t kiÓu N ®Õn ch©n CPU vµ nÕu yªu cÇu ®ã ®−îc cho phÐp, CPU thùc hiÖn c¸c c«ng viÖc sau:

1. SP ← SP−2, {SP} ← ER, trong ®ã {SP} lµ « nhí do SP chØ ra.

(chØ ra ®Ønh míi cña ng¨n xÕp, cÊt thanh ghi cê vµo ®Ønh ng¨n xÕp)

2. IF ← 0, TF ← 0.

(cÊm c¸c ng¾t kh¸c t¸c ®éng vµo CPU, cho CPU ch¹y ë chÕ ®é b×nh th−êng).

3. SP ← SP−2, {SP} ← CS.

(chØ ra ®Ønh míi cña ng¨n xÕp, cÊt phÇn ®Þa chØ ®o¹n cña ®Þa chØ trë vÒ vµo ®Ønh ng¨n xÕp).

4. SP ← SP−2, {SP} ← IP.

(chØ ra ®Ønh míi cña ng¨n xÕp, cÊt phÇn ®Þa chØ lÖch cña ®Þa chØ trë vÒ vµo ®Ønh ng¨n xÕp).

5. {N*4} → IP, {N*4+2} → CS.

Page 148: vµ cÊu tróc m¸y tÝnh€¦ ·

148

(lÊy lÖnh t¹i ®Þa chØ míi cña ch−¬ng tr×nh con phôc vô ng¾t kiÓu N t−¬ng øng trong b¶ng vect¬ ng¾t).

6. T¹i cuèi ch−¬ng tr×nh phôc vô ng¾t, khi gÆp lÖnh IRET

{SP} → IP, SP ← SP + 2

{SP} → CS, SP ← SP + 2

{SP} → FR, SP ← SP + 2

(bé vi xö lý quay l¹i ch−¬ng tr×nh chÝnh t¹i ®Þa chØ trë vÒ vµ víi gi¸ trÞ cò cña thanh ghi cê ®−îc lÊy ra tõ ng¨n xÕp).

VÒ mÆt cÊu tróc ch−¬ng tr×nh, khi cã ng¾t x¶y ra th× ch−¬ng tr×nh chÝnh (CTC) liªn hÖ víi ch−¬ng tr×nh con phôc vô ng¾t (CTCPVN) nh− m« t¶ trªn h×nh 6.3.

Intel ®· quy ®Þnh mét sè kiÓu ng¾t mÒm ®Æc biÖt ®−îc xÕp vµo ®Çu b¶ng vector ng¾t nh− sau:

+ INT 0: Ng¾t mÒm do phÐp chia cho sè 0 g©y ra.

+ INT 1: Ng¾t mÒm ®Ó ch¹y tõ lÖnh øng víi tr−êng hîp cê TF = 1.

CTC

th©n CTC CPU tù: + CÊt thanh ghi F + Xo¸ IF vµ TF lÖnh cÊt c¸c thanh ghi + CÊt CS, IP + LÊy ®Þa chØ ch−¬ng tr×nh phôc vô ng¾t

th©n CTCPVN

CPU tù: + LÊy l¹i IP, CS + LÊy l¹i thanh ghi F

CTC

LÖnh lÊy c¸c thanh ghi IRET

CTCPVN

H×nh 6.3. Liªn hÖ gi÷a CTC vµ CTCPVN khi cã ng¾t

Page 149: vµ cÊu tróc m¸y tÝnh€¦ ·

149

+ INT 2: Ng¾t cøng do tÝn hiÖu tÝch cùc t¹i ch©n NMI g©y ra.

+ INT 3: Ng¾t mÒm ®Ó ®Æt ®iÓm dõng cña ch−¬ng tr×nh t¹i mét ®Þa chØ nµo ®ã.

+ INT 4: (hoÆc lÖnh INT O): ng¾t mÒm øng víi tr−êng hîp cê trµn OF = 1.

C¸c kiÓu ng¾t kh¸c cßn l¹i th× ®−îc dµnh cho Intel vµ cho ng−êi sö dông (IBM kh«ng hoµn toµn tu©n thñ c¸c quy ®Þnh nµy khi chÕ t¹o c¸c m¸y PC/XT vµ PC/AT):

+ INT 5 − INT 1FH: dµnh riªng cho Intel trong c¸c bé vi xö lý cao cÊp kh¸c.

+ INT 20H − INT FFH: dµnh cho ng−êi sö dông.

C¸c kiÓu ng¾t N trong INT N ®Òu t−¬ng øng víi c¸c ®Þa chØ x¸c ®Þnh cña CTCPVN mµ ta cã thÓ tra ®−îc trong b¶ng c¸c vector ng¾t. Intel quy ®Þnh b¶ng nµy n»m trong RAM b¾t ®Çu tõ ®Þa chØ 00000H vµ dµi 1Kbyte (v× 8086 cã tÊt c¶ 256 kiÓu ng¾t, mçi kiÓu ng¾t øng víi 1 vector ng¾t, 1 vector ng¾t cÇn 4 byte ®Ó chøa ®Þa chØ ®Çy ®ñ cho CS : IP cña CTCPVN). Trªn b¶ng 6.2 giíi thiÖu mét phÇn b¶ng vector ng¾t cña CPU 8086.

B¶ng 6.2. B¶ng vector ng¾t cña 8086 t¹i 1KB RAM ®Çu tiªn

03FEH − 03FFH CS cña CTCPVN INT FFH

03FCH − 03FDH IP cña CTCPVN INT FFH

0082H − 0083H CS cña CTCPVN INT 20H

0080H − 0081H IP cña CTCPVN INT 20H

000AH − 000BH CS cña CTCPVN INT 2

0008H − 0009H IP cña CTCPVN INT 2

0006H − 0007H CS cña CTCPVN INT 1

0004H − 0005H IP cña CTCPVN INT 1

0002H − 0003H CS cña CTCPVN INT 0

0000H − 0001H IP cña CTCPVN INT 0

Page 150: vµ cÊu tróc m¸y tÝnh€¦ ·

150

Xö lý −u tiªn khi ng¾t:

Cã mét vÊn ®Ò rÊt thùc tÕ ®Æt ra lµ nÕu t¹i cïng mét thêi ®iÓm cã nhiÒu yªu cÇu ng¾t thuéc c¸c lo¹i ng¾t kh¸c nhau cïng ®ßi hái CPU phôc vô th× CPU xö lý c¸c yªu cÇu ng¾t ®ã nh− thÕ nµo? C©u tr¶ lêi lµ CPU xö lý c¸c yªu cÇu ng¾t theo thø tù −u tiªn víi nguyªn t¾c ng¾t nµo cã møc −u tiªn cao nhÊt sÏ ®−îc CPU nhËn biÕt vµ phôc vô tr−íc.

Ngay tõ khi ®−îc chÕ t¹o (th−êng gäi lµ ngÇm ®Þnh), CPU 8086 cã kh¶ n¨ng ph©n biÖt c¸c møc −u tiªn kh¸c nhau cho c¸c lo¹i ng¾t theo thø tù tõ cao xuèng thÊp nh− sau:

Møc −u tiªn:

+ Ng¾t néi bé: INT 0 (phÐp chia cho 0), INT N, INT 0.

+ Ng¾t kh«ng che ®−îc NMI.

+ Ng¾t che ®−îc INTR.

+ Ng¾t ®Ó ch¹y tõng lÖnh INT 1.

§Ó thÊy râ ho¹t ®éng cña CPU trong c¬ chÕ ng¾t −u tiªn ta cã thÓ lÊy mét vÝ dô cô thÓ nh− sau:

Gi¶ thiÕt t¹i mét thêi ®iÓm nµo ®ã, trong khi CPU (ë tr¹ng th¸i cho phÐp ng¾t víi cê IF = 1) ®ang thùc hiÖn phÐp chia vµ cã lçi x¶y ra do sè chia b»ng 0, ®óng vµo lóc ®ã CPU còng nhËn ®−îc yªu cÇu ng¾t tõ ®Çu vµo INTR, CPU sÏ xö lý ra sao trong tr−êng hîp nµy?

Theo thø tù −u tiªn ngÇm ®Þnh trong viÖc xö lý ng¾t cña CPU 8086 th× INT 0 cã møc −u tiªn cao h¬n INTR, v× vËy ®Çu tiªn CPU sÏ thùc hiÖn ch−¬ng tr×nh phôc vô ng¾t INT 0 ®Ó ®¸p øng víi lçi ®Æc biÖt do phÐp chia cho 0 g©y ra vµ cê IF bÞ xo¸ vÒ 0. Yªu cÇu ng¾t INTR sÏ tù ®éng bÞ cÊm cho tíi khi ch−¬ng tr×nh phôc vô ng¾t INT 0 ®−îc hoµn tÊt vµ trë vÒ IRET, cê IF cò ®−îc tr¶ l¹i. TiÕp theo ®ã CPU sÏ ®¸p øng yªu cÇu ng¾t INTR b»ng c¸ch thùc hiÖn ch−¬ng tr×nh phôc vô ng¾t dµnh cho INTR.

6.4. Vi m¹ch xö lý ng¾t 8259A

Trong tr−êng hîp cã nhiÒu yªu cÇu ng¾t che ®−îc tõ bªn ngoµi ph¶i phôc vô ta th−êng dïng vi m¹ch cã s½n 8259A ®Ó gi¶i quyÕt vÊn ®Ò −u tiªn. M¹ch 8259A ®−îc gäi lµ m¹ch ®iÒu khiÓn ng¾t −u tiªn (Priority Interrupt Controller − PIC). §ã lµ mét vi m¹ch cì lín lËp tr×nh ®−îc, cã thÓ xö lý

Page 151: vµ cÊu tróc m¸y tÝnh€¦ ·

151

tr−íc ®−îc 8 yªu cÇu ng¾t víi 8 møc −u tiªn kh¸c nhau ®Ó t¹o ra mét yªu cÇu ng¾t ®−a ®Õn ®Çu vµo INTR (yªu cÇu ng¾t che ®−îc) cña CPU 8086. NÕu nèi tÇng 1 m¹ch 8259A chñ víi 8 m¹ch 8259A thî ta cã thÓ n©ng tæng sè c¸c yªu cÇu ng¾t víi c¸c møc −u tiªn kh¸c nhau lªn thµnh 64.

H×nh 6.4. S¬ ®å khèi cña PIC 8259A

Ghi chó:

IR0 − IR7: C¸c yªu cÇu ng¾t.

IRR: Thanh ghi yªu cÇu ng¾t. ISR: Thanh ghi c¸c yªu cÇu ng¾t ®ang ®−îc phôc vô. IMR: Thanh ghi mÆt n¹ ng¾t.

PR: Bé xö lý −u tiªn.

SP/EN: Slave Prorgam/ENable buffer (lËp tr×nh thµnh m¹ch thî/ më ®Öm bus d÷ liÖu).

CAS0 − CAS2: TÝn hiÖu nèi tÇng gi÷a c¸c PIC 8259A víi nhau.

6.4.1. C¸c khèi chøc n¨ng chÝnh cña PIC 8259A

D0 − D7

®Õn bus0

BUS MBI B0

Logic ®iÒu khiÓn

INTA INT

IR0

IR1

IR7

IRR PR ISR

IMR

§Öm nèi tÇng vµ so s¸nh

CAS0 CAS10

CAS2

SP/EN

CS

RD

WR AD

Logic ghi/®äc

§Õn BUS0

Page 152: vµ cÊu tróc m¸y tÝnh€¦ ·

152

+ Thanh ghi IRR: ghi nhí c¸c yªu cÇu ng¾t cã t¹i ®Çu vµo IRi.

+ Thanh ghi ISR: ghi nhí c¸c yªu cÇu ng¾t ®ang ®−îc phôc vô trong sè c¸c yªu cÇu ng¾t IRi.

+ Thanh ghi IMR: ghi nhí mÆt n¹ ng¾t ®èi víi c¸c yªu cÇu ng¾t IRi.

+ Logic ®iÒu khiÓn: khèi nµy cã nhiÖm vô göi yªu cÇu ng¾t tíi INTR cña 8086 khi cã tÝn hiÖu t¹i c¸c ch©n IRi vµ nhËn tr¶ lêi chÊp nhËn yªu cÇu ng¾t INTA tõ CPU ®Ó råi ®iÒu khiÓn viÖc ®−a ra kiÓu ng¾t trªn bus d÷ liÖu.

+ §Öm bus d÷ liÖu: dïng ®Ó phèi ghÐp 8259A víi bus d÷ liÖu cña CPU.

+ Logic ®iÒu khiÓn ghi/®äc: dïng cho viÖc ghi c¸c tõ ®iÒu khiÓn vµ ®äc c¸c tõ tr¹ng th¸i cña 8259A.

+ Khèi ®Öm nèi tÇng vµ so s¸nh: ghi nhí vµ so s¸nh sè hiÖu cña c¸c m¹ch 8259A cã mÆt trong hÖ vi xö lý.

6.4.2. C¸c tÝn hiÖu cña 8259A

Mét sè tÝn hiÖu trong m¹ch 8259A cã tªn gièng nh− c¸c tÝn hiÖu tiªu chuÈn cña hÖ vi xö lý 8086. Ta cã thÓ thÊy râ vµ hiÓu ®−îc ý nghÜa cña chóng ngay trªn h×nh 6.4. Ngoµi c¸c tÝn hiÖu nµy ra, cßn cã mét sè tÝn hiÖu ®Æc biÖt kh¸c cña 8259A ®ã lµ:

+ CAS0 − CAS2 [I, O]: lµ c¸c ®Çu vµo ®èi víi c¸c m¹ch 8259A thî hoÆc c¸c ®Çu ra cña m¹ch 8259A chñ dïng khi cÇn nèi tÇng ®Ó t¨ng thªm c¸c yªu cÇu ng¾t cÇn xö lý.

+ SP/EN [I, O]: khi 8259A lµm viÖc ë chÕ ®é kh«ng cã ®Öm bus d÷ liÖu th× ®©y lµ tÝn hiÖu vµo dïng lËp tr×nh ®Ó biÕn m¹ch 8259A thµnh m¹ch thî (SP = 0) hoÆc m¹ch chñ (SP = 1), khi 8259A lµm viÖc trong hÖ vi xö lý ë chÕ ®é cã ®Öm bus d÷ liÖu th× ch©n nµy lµ tÝn hiÖu ra EN dïng më ®Öm bus d÷ liÖu ®Ó 8086 vµ 8259A th«ng vµo bus d÷ liÖu hÖ thèng, lóc nµy viÖc ®Þnh nghÜa m¹ch 8259A lµ chñ hoÆc thî ph¶i thùc hiÖn th«ng qua tõ ®iÒu khiÓn khëi ®Çu ICW4.

+ INT [O]: TÝn hiÖu yªu cÇu ng¾t ®Õn ch©n INTR cña CPU 8086.

+ INTA [I]: Nèi víi tÝn hiÖu b¸o chÊp nhËn ng¾t INTA cña CPU.

PIC 8259A chñ (ë chÕ ®é kh«ng ®Öm) nèi víi CPU 8086 ë chÕ ®é MIN. Trªn h×nh 6.5 lµ s¬ ®å nèi m¹ch PIC 8259A lµm viÖc ®éc lËp (m¹ch chñ) víi bus cña CPU 8086 lµm viÖc ë chÕ ®é MIN.

Page 153: vµ cÊu tróc m¸y tÝnh€¦ ·

153

PIC 8259A chñ nèi víi CPU 8086 ë chÕ ®é MAX.

Bus hÖ thèng cña 8086 ë chÕ

®é MIN

D0 − D7

RD WR AD

D0 − D7

RD WR AD

IR0 IR7 C¸c yªu cÇu

ng¾t

+5V

A0 − A7

MIO/

INTA

INTR

INTA

INTR

SP/EN

H×nh 6.5. Nèi bus 8086 chÕ ®é MIN víi PIC 8259A (®Þa chØ cæng FE−−−−FFH)

8086

8288

3X373

245

8259A 8086

H×nh 6.6. Nèi CPU 8086 chÕ ®é MAX víi PIC 8259A

Page 154: vµ cÊu tróc m¸y tÝnh€¦ ·

154

NÕu hÖ vi xö lý 8086 lµm viÖc ë chÕ ®é MAX th−êng ta ph¶i dïng m¹ch ®iÒu khiÓn bus 8288 vµ c¸c ®Öm bus ®Ó cung cÊp c¸c tÝn hiÖu thÝch hîp cho bus hÖ thèng. M¹ch 8259A ph¶i lµm viÖc ë chÕ ®é cã ®Öm ®Ó nèi ®−îc víi bus hÖ thèng nµy.

Trªn h×nh 6.6 lµ s¬ ®å CPU 8086 lµm viÖc ë chÕ ®é MAX nèi víi PIC 8259A. Trong m¹ch nµy, ta nhËn thÊy tÝn hiÖu ®Þa chØ cho 8259A ®−îc lÊy ra tõ bus hÖ thèng, trong khi ®ã tÝn hiÖu d÷ liÖu cña nã ®−îc nèi víi bus d÷ liÖu cña vi xö lý vµ tõ ®ã ®−îc th«ng qua c¸c ®Öm ®Ó nèi vµo bus hÖ thèng.

6.4.3. LËp tr×nh cho PIC 8259A

§Ó m¹ch PIC 8259A cã thÓ ho¹t ®éng ®−îc theo yªu cÇu, sau khi bËt nguån cÊp ®iÖn PIC cÇn ph¶i ®−îc lËp tr×nh b»ng c¸ch ghi vµo c¸c thanh ghi (t−¬ng ®−¬ng víi c¸c cæng) bªn trong nã c¸c tõ ®iÒu khiÓn khëi ®Çu (ICW) vµ tiÕp sau ®ã lµ c¸c tõ ®iÒu khiÓn ho¹t ®éng (OCW).

C¸c tõ ®iÒu khiÓn khëi ®Çu dïng ®Ó t¹o nªn c¸c kiÓu lµm viÖc c¬ b¶n cho PIC 8259A, cßn c¸c tõ ®iÒu khiÓn ho¹t ®éng sÏ quyÕt ®Þnh c¸ch thøc lµm viÖc cô thÓ cña PIC 8259A. Tõ ®iÒu khiÓn ho¹t ®éng sÏ ®−îc ghi khi ta muèn thay ®æi ho¹t ®éng cña PIC 8259A.

6.4.3.1.C¸c tõ ®iÒu khiÓn khëi ®Çu ICW

PIC 8259A cã tÊt c¶ 4 tõ ®iÒu khiÓn khëi ®Çu lµ ICW1 ®Õn ICW4. Trong khi lËp tr×nh cho PIC 8259A kh«ng ph¶i lóc nµo ta còng cÇn dïng c¶ 4 tõ ®iÒu khiÓn ®ã. Tuú theo c¸c tr−êng hîp øng dông cô thÓ mµ cã lóc ta cÇn ghi liªn tiÕp c¶ 4 tõ ®iÒu khiÓn khëi ®Çu nh−ng cã lóc ta chØ cÇn ghi vµo ®ã 2 hay 3 tõ lµ ®ñ.

a) ICW1

Bit D0 cña ICW1 quyÕt ®Þnh 8259A sÏ ®−îc nèi víi hä vi xö lý nµo. §Ó lµm viÖc víi hÖ 16 – 32 bit (8086 hoÆc hä 80×86) th× ICW1 nhÊt thiÕt ph¶i cã IC4 = 1 (tøc lµ ta lu«n cÇn ®Õn ICW4), cßn ®èi víi hÖ 8 bit nh− hä 8080/85 th× ph¶i cã IC4 = 0 (vµ nh− vËy c¸c bit cña ICW4 sÏ bÞ xo¸ vÒ 0). C¸c bit cßn l¹i cña ICW1 ®Þnh nghÜa c¸ch thøc t¸c ®éng cña xung yªu cÇu ng¾t (t¸c ®éng theo s−ên hay theo møc) t¹i c¸c ch©n yªu cÇu ng¾t IR cña m¹ch 8259A vµ viÖc bè trÝ c¸c m¹ch 8259A kh¸c trong hÖ lµm viÖc ®¬n lÎ hay theo chÕ ®é nèi tÇng.

Page 155: vµ cÊu tróc m¸y tÝnh€¦ ·

155

C¸c bit ®−îc ®¸nh dÊu x lµ kh«ng quan träng vµ th−êng ®−îc lÊy gi¸ trÞ 0 ®Ó lËp tr×nh cho c¸c øng dông sau nµy.

ICW1

A0 D7 D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM ADI SNGL IC4

b) ICW2

Tõ ®iÒu khiÓn khëi ®Çu nµy cho phÐp chän kiÓu ng¾t (sè hiÖu ng¾t) øng víi c¸c bit T3 – T7 cho c¸c ®Çu vµo yªu cÇu ng¾t. C¸c bit T0 – T2 ®−îc 8259A tù ®éng g¸n gi¸ trÞ tuú theo ®Çu vµo yªu cÇu ng¾t cô thÓ IRi. VÝ dô nÕu ta muèn c¸c ®Çu vµo cña m¹ch 8259A cã kiÓu ng¾t lµ 40H – 47H ta chØ cÇn ghi gi¸ trÞ 40H vµo c¸c bit T3 – T7. NÕu lµm nh− vËy th× IR0 sÏ cã kiÓu ng¾t lµ 40H, IR1 sÏ cã kiÓu ng¾t lµ 41H.

ICW2

A0 D7 D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 T2 T1 T0

§Ó chän kiÓu (sè hiÖu) ng¾t cho m¹ch 8259A

øng víi m· cña yªu cÇu ng¾t IR0 − IR7

c) ICW3

Tõ ®iÒu khiÓn khëi ®Çu nµy chØ dïng ®Õn khi bit SNGL thuéc tõ ®iÒu khiÓn khëi ®Çu ICW1 cã gi¸ trÞ 0, nghÜa lµ trong hÖ cã c¸c m¹ch 8259A lµm viÖc ë chÕ ®é nèi tÇng. ChÝnh v× vËy tån t¹i 2 lo¹i ICW3: 1 cho m¹ch 8259A chñ vµ 1 cho m¹ch 8259A thî.

ICW3 cho m¹ch chñ: dïng ®Ó chØ ra ®Çu vµo yªu cÇu ng¾t IRi nµo cña nã cã tÝn hiÖu INT cña m¹ch thî nèi vµo.

Kho¶ng c¸ch gi÷a c¸c vector ng¾t: 1: c¸ch 4 byte (80×86/88) 0: c¸ch 8 byte (8080/85)

1: cÇn ICW4 0: bá ICW4 Kh«ng cÇn ®Ó ý ®èi víi hÖ 16 − 32 bit

C¸ch t¸c ®éng cña xung yªu cÇu ng¾t: 1: theo s−ên d−¬ng 0: theo s−ên ©m

1: chØ cã 1 m¹ch PIC 0: cã nhiÒu m¹ch PIC

Page 156: vµ cÊu tróc m¸y tÝnh€¦ ·

156

ICW3 cho m¹ch thî: dïng lµm ph−¬ng tiÖn ®Ó c¸c m¹ch nµy ®−îc nhËn biÕt, v× vËy tõ ®iÒu khiÓn khëi ®Çu nµy ph¶i chøa m· sè i øng víi ®Çu vµo IRi cña m¹ch chñ mµ m¹ch thî ®· cho nèi vµo. M¹ch thî sÏ so s¸nh m· sè nµy víi m· sè nhËn ®−îc ë CAS2 − CAS0. NÕu b»ng nhau th× sè hiÖu ng¾t sÏ ®−îc ®−a ra bus khi cã INTA.

ICW3 chñ

A0 D7 D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0

1: ®Çu vµo IRi nèi víi m¹ch 8259A thî 0: ®Çu vµo IRi kh«ng nèi víi m¹ch thî

ICW3 thî

A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0

M· ho¸ sè hiÖu cña m¹ch thî 0 − 7 nèi vµo IR0 − IR7

d) ICW4

Tõ ®iÒu khiÓn khëi ®Çu nµy chØ dïng ®Õn khi trong tõ ®iÒu khiÓn ICW1 cã bit D0 =1 (IC4).

Bit µPM cho ta kh¶ n¨ng chän lo¹i vi xö lý ®Ó lµm viÖc víi 8259A. Bit µPM = 1 cho phÐp c¸c bé vi xö lý tõ 8086/88 hoÆc cao h¬n lµm viÖc víi 8259A.

Bit SFNM = 1 cho phÐp chän chÕ ®é −u tiªn cè ®Þnh ®Æc biÖt. Trong chÕ ®é nµy, yªu cÇu ng¾t víi møc −u tiªn cao nhÊt hiÖn thêi tõ mét m¹ch thî lµm viÖc theo kiÓu nèi tÇng sÏ ®−îc m¹ch chñ nhËn biÕt ngay c¶ khi m¹ch chñ cßn ®ang ph¶i phôc vô mét yªu cÇu ng¾t ë mét m¹ch thî kh¸c nh−ng víi møc −u tiªn thÊp h¬n. Sau khi c¸c yªu cÇu ng¾t ®−îc phôc vô xong th× ch−¬ng tr×nh phôc vô ng¾t ph¶i cã lÖnh kÕt thóc yªu cÇu ng¾t (EOI) ®Æt tr−íc lÖnh trë vÒ (IRET) ®−a ®Õn cho m¹ch 8259A chñ.

Bit SFNM = 0 th× chÕ ®é −u tiªn cè ®Þnh ®−îc chän (IR0: møc −u tiªn cao nhÊt, IR7: møc −u tiªn thÊp nhÊt). Thùc ra ®èi víi m¹ch 8259A kh«ng dïng ®Õn ICW4 th× chÕ ®é nµy ®· ®−îc chän nh− ngÇm ®Þnh. Trong chÕ ®é −u tiªn cè ®Þnh, t¹i mét thêi ®iÓm chØ cã mét yªu cÇu ng¾t i ®−îc phôc vô (bit ISRi = 1), lóc nµy tÊt c¶ c¸c yªu cÇu kh¸c víi møc −u tiªn thÊp h¬n ®Òu bÞ

Page 157: vµ cÊu tróc m¸y tÝnh€¦ ·

157

cÊm, tÊt c¶ c¸c yªu cÇu kh¸c víi møc −u tiªn cao h¬n cã thÓ ng¾t c¸c yªu cÇu kh¸c cã møc −u tiªn thÊp h¬n.

Bit BUF cho phÐp ®Þnh nghÜa m¹ch 8259A ®Ó lµm viÖc víi CPU trong tr−êng hîp cã ®Öm hoÆc kh«ng cã ®Öm nèi víi bus hÖ thèng. Khi lµm viÖc ë chÕ ®é cã ®Öm (BUF = 1), bit M/S = 1/0 cho phÐp ta chän m¹ch 8259A ®Ó lµm viÖc ë chÕ ®é chñ/thî. SP/EN trë thµnh ®Çu ra cho phÐp më ®Öm ®Ó PIC vµ CPU th«ng víi bus hÖ thèng.

Bit AEOI = 1 cho phÐp chän c¸ch kÕt thóc yªu cÇu ng¾t tù ®éng. Khi AEOI = 1 th× 8259A tù ®éng xo¸ ISRi = 0 khi xung INTA cuèi cïng chuyÓn lªn møc cao mµ kh«ng lµm thay ®æi thø tù −u tiªn. Ng−îc l¹i, khi ta chän c¸ch kÕt thóc yªu cÇu ng¾t th−êng (AEOI = 0) th× ch−¬ng tr×nh phôc vô ng¾t ph¶i cã thªm lÖnh EOI ®Æt tr−íc lÖnh IRET ®Ó kÕt thóc cho 8259A.

ICW4

A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNM BUF M/S AEOI µPM

6.4.3.2. C¸c tõ ®iÒu khiÓn ho¹t ®éng OCW

C¸c tõ ®iÒu khiÓn ho¹t ®éng OCW sÏ quyÕt ®Þnh m¹ch 8259A sÏ ho¹t ®éng nh− thÕ nµo sau khi nã ®· ®−îc khëi ®Çu b»ng c¸c tõ ®iÒu khiÓn ICW. TÊt c¶ c¸c tõ ®iÒu khiÓn ho¹t ®éng sÏ ®−îc ghi vµo c¸c thanh ghi trong PIC khi A0 = 0, trõ OCW1 ®−îc ghi khi A0 = 1.

a) OCW1

OCW1 dïng ®Ó ghi gi¸ trÞ cña c¸c bit mÆt n¹ vµo thanh ghi mÆt n¹ ng¾t IMR. Khi mét bit mÆt n¹ nµo ®ã cña IMR ®−îc lËp th× yªu cÇu ng¾t t−¬ng øng víi mÆt n¹ ®ã sÏ kh«ng ®−îc 8259A nhËn biÕt n÷a (bÞ che). Tõ ®iÒu khiÓn nµy ph¶i ®−îc ®−a ®Õn 8259A ngay sau khi ghi ra c¸c ICW cña 8259A.

1: EOI tù ®éng 0: EOI th−êng

1: cho hä 80×86/88

0x: 8259A ë chÕ ®é kh«ng ®Öm 10: m¹ch 8259A thî ë chÕ ®é ®Öm 11: m¹ch 8259A chñ ë chÕ ®é ®Öm

1: chÕ ®é −u tiªn cè ®Þnh ®Æc biÖt

0: kh«ng ph¶i chÕ ®é −u tiªn cè ®Þnh ®Æc biÖt

Page 158: vµ cÊu tróc m¸y tÝnh€¦ ·

158

OCW1

A0 D7 D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0

MÆt n¹ ng¾t t¹i c¸c yªu cÇu ng¾t 1: cã mÆt n¹ 0: kh«ng cã mÆt n¹

b) OCW2

C¸c bit R, SL vµ EOI phèi hîp víi nhau cho phÐp chän ra c¸c c¸ch thøc kÕt thóc yªu cÇu ng¾t kh¸c nhau. Mét vµi c¸ch kÕt thóc yªu cÇu ng¾t cßn t¸c ®éng c¸c yªu cÇu ng¾t ®−îc chØ ®Ých danh víi møc −u tiªn ®−îc m· ho¸ bëi 3 bit L2L1L0.

Giíi thiÖu c¸c chÕ ®é lµm viÖc cña 8259A:

− ChÕ ®é −u tiªn cè ®Þnh: (nh− tr×nh bµy trong phÇn ICW4).

− ChÕ ®é quay møc −u tiªn tù ®éng: ë chÕ ®é nµy sau khi mét yªu cÇu ng¾t ®−îc phôc vô xong, 8259A sÏ xo¸ bit t−¬ng øng cña nã trong thanh ghi ISR vµ g¸n cho ®Çu vµo cña nã møc −u tiªn thÊp nhÊt ®Ó t¹o ®iÒu kiÖn cho c¸c yªu cÇu ng¾t kh¸c cã thêi c¬ ®−îc phôc vô.

− ChÕ ®é quay møc −u tiªn chØ ®Ých danh: ë chÕ ®é nµy ta cÇn chØ râ ®Çu vµo IRi nµo, víi i = L2L1L0, ®−îc g¸n møc −u tiªn thÊp nhÊt, ®Çu vµo IRi+1 sÏ tù ®éng ®−îc g¸n møc −u tiªn cao nhÊt.

OCW2

A0 D7 D6 D5 D4 D3 D2 D1 D0 1 R SL EOI 0 0 L2 L1 L0

KÕt thóc 0 0 1 LÖnh EOI th−êng ng¾t (EOI) 0 1 1 LÖnh EOI chØ ®Ých danh (*) §æi møc 1 0 1 §æi møc −u tiªn khi cã EOI th−êng −u tiªn tù 1 0 0 LËp chÕ ®é quay khi cã EOI tù ®éng

®éng 0 0 0 Xo¸ chÕ ®é quay khi cã EOI tù ®éng §æi møc 1 1 1 §æi møc −u tiªn khi cã EOI ®Ých danh (*) −u tiªn 1 1 0 LÖnh lËp møc −u tiªn (*)

®Ých danh 0 1 0 Kh«ng lµm g×

(*): dïng tæ hîp L2 L1 L0

M· ho¸ møc −u tiªn ng¾t bÞ t¸c ®éng 000... møc 0 111... møc 7

Page 159: vµ cÊu tróc m¸y tÝnh€¦ ·

159

c) OCW3

Tõ ®iÒu khiÓn ho¹t ®éng OCW3 sau khi ®−îc ghi vµo 8259A cho phÐp.

+ Chän ra c¸c thanh ghi ®Ó ®äc.

+ Th¨m dß tr¹ng th¸i yªu cÇu ng¾t b»ng c¸ch kiÓm tra tr¹ng th¸i cña ®Çu vµo yªu cÇu ng¾t IRi víi møc −u tiªn cao nhÊt cïng m· cña ®Çu vµo ®ã.

+ Thao t¸c víi mÆt n¹ ®Æc biÖt.

OCW3

A0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P ERIS RIS

B»ng viÖc ®−a vµo 8259A tõ ®iÒu khiÓn OCW3 víi bit P = 1, ta cã thÓ ®äc ®−îc trªn bus d÷ liÖu ë lÇn ®äc tiÕp ngay sau ®ã tõ th¨m dß, trong ®ã cã c¸c th«ng tin vÒ yªu cÇu ng¾t víi møc −u tiªn cao nhÊt ®ang ho¹t ®éng vµ m· t−¬ng øng víi yªu cÇu ng¾t Êy theo d¹ng thøc nh− sau:

D7 D6 D5 D4 D3 D2 D1 D0 I x x x x W2 W1 W0

Bit ESMM = 1 cho phÐp 8259A thao t¸c víi chÕ ®é mÆt n¹ ®Æc biÖt, bit SMM = 1 cho phÐp lËp chÕ ®é mÆt n¹ ®Æc biÖt. ChÕ ®é mÆt n¹ ®Æc biÖt ®−îc dïng ®Ó thay ®æi thø tù −u tiªn ngay bªn trong ch−¬ng tr×nh con phôc vô ng¾t. VÝ dô, trong tr−êng hîp cã mét yªu cÇu ng¾t bÞ cÊm (bÞ che bëi ch−¬ng tr×nh phôc vô ng¾t víi tõ lÖnh OCW1) mµ ta l¹i muèn cho phÐp c¸c yªu cÇu ng¾t víi møc −u tiªn thÊp h¬n so víi yªu cÇu ng¾t bÞ cÊm ®ã ®−îc t¸c ®éng th× ta sÏ dïng chÕ ®é mÆt n¹ ®Æc biÖt. Khi ®· ®−îc lËp, chÕ ®é mÆt n¹ ®Æc

10: ®äc IRR ë lÇn ®äc sau 11: ®äc ISR ë lÇn ®äc sau

ChÕ ®é mÆt n¹ ®Æc biÖt

10: xo¸ chÕ ®é mÆt n¹ ®Æc biÖt11: lËp chÕ ®é mÆt n¹ ®Æc biÖt

Th¨m dß hiÖn tr¹ng cña yªu cÇu ng¾t1: ®äc m· møc −u tiªn cao nhÊt ë lÇn ®äc sau

1: ®ang cã yªu cÇu ng¾t M· ho¸ sè cña yªu cÇu ng¾t 0: kh«ng cã yªu cÇu ng¾t

Page 160: vµ cÊu tróc m¸y tÝnh€¦ ·

160

biÖt sÏ tån t¹i cho tíi khi bÞ xo¸ b»ng c¸ch ghi vµo 8259A mét tõ lÖnh OCW3 kh¸c víi bit SMM = 0. MÆt n¹ ®Æc biÖt kh«ng ¶nh h−ëng tíi c¸c yªu cÇu cÇn ng¾t víi møc −u tiªn cao h¬n.

Cuèi cïng ®Ó cã c¸i nh×n mét c¸ch cã hÖ thèng vÒ ho¹t ®éng cña hÖ vi xö lý víi CPU 8086 vµ PIC 8259A khi cã yªu cÇu ng¾t, ta tãm l−îc ho¹t ®éng cña chóng nh− sau:

1. Khi cã yªu cÇu ng¾t tõ thiÕt bÞ ngo¹i vi t¸c ®éng vµo mét trong c¸c ch©n IR cña PIC, 8259A sÏ ®−a INT = 1 ®Õn ch©n INTR cña 8086.

2. 8086 ®−a ra xung INTA ®Çu ®Õn 8259A.

3. 8259A dïng xung INTA ®Çu nh− lµ th«ng b¸o ®Ó nã hoµn tÊt c¸c xö lý néi bé cÇn thiÕt, kÓ c¶ xö lý −u tiªn nÕu nh− cã nhiÒu yªu cÇu ng¾t cïng x¶y ra.

4. 8086 ®−a ra xung INTA thø hai ®Õn 8259A.

5. Xung INTA thø hai khiÕn 8259A ®−a ra bus d÷ liÖu 1 byte chøa th«ng tin vÒ sè hiÖu ng¾t cña yªu cÇu ng¾t võa ®−îc nhËn biÕt.

6. 8086 dïng sè hiÖu ng¾t ®Ó tÝnh ra ®Þa chØ cña vector ng¾t t−¬ng øng.

7. 8086 cÊt FR, xo¸ c¸c cê IF vµ TF vµ cÊt ®Þa chØ trë vÒ CS : IP vµo ng¨n xÕp.

8. 8086 lÊy ®Þa chØ CS : IP cña ch−¬ng tr×nh phôc vô ng¾t tõ b¶ng vector ng¾t vµ thùc hiÖn ch−¬ng tr×nh ®ã.

6.4.4. VÝ dô lËp tr×nh víi 8259A

LËp tr×nh cho 8259A ®Ó lµm viÖc víi CPU 8086 ë chÕ ®é chñ (®¬n lÎ), trong hÖ cã ®Öm bus, chÕ ®é −u tiªn cè ®Þnh vµ víi EOI th−êng, IR kÝch theo møc, tÝn hiÖu IR0 ®−îc g¸n sè hiÖu ng¾t lµ 50H.

Gi¶i:

ICW1 = 00011011 = 1BH

D0 = 1 cÇn thªm ICW4

D1 = 1 lµm viÖc ®¬n lÎ, kh«ng cÇn ICW3

D2 = 0 lµm viÖc víi hÖ 8086/88

D3 = 1 ®Çu vµo IR ¨n theo møc

D4 = 1 b¾t buéc víi ICW1

Page 161: vµ cÊu tróc m¸y tÝnh€¦ ·

161

D5 = D6 = D7 = 0 g¸n b»ng 0 cho hÖ 8086/88

ICW2 = 01010000 = 50H

V× c¸c bit T7 − T3 cña ICW2 ph¶i m· ho¸ trÞ sè 50H ®Ó IR0 − IR7 ®−îc m· ho¸ tiÕp bëi c¸c bit T2 − T0 = 000.

ICW3 kh«ng cÇn ®Õn

ICW4 = 00001101 = 0DH

D0 = 1 lµm viÖc víi hÖ 8086/88

D1 = 0 EOI th−êng (ph¶i cã EOI tr−íc IRET)

D3D2 = 11 lµm viÖc ë chÕ ®é chñ trong hÖ cã ®Öm bus

D4 = 0 chÕ ®é −u tiªn cè ®Þnh

D5 = D6 = D7 = 0 lu«n b»ng 0 cho ICW4.

D−íi ®©y lµ ®o¹n ch−¬ng tr×nh con khëi t¹o cho 8259A víi chÕ ®é ho¹t ®éng nh− trªn:

INIT PROC NEAR

;ICW1

MOV AL,00010011B

OUT INTA,AL

;ICW2 interrupt vector

MOV AL,50H

OUT INTA2,AL

;ICW4

MOV AL,00000001B

OUT INTA2,AL

;interrupt mask , OCW1

MOV AL,11111011B

OUT INTA2,AL

RET

INIT ENDP

Page 162: vµ cÊu tróc m¸y tÝnh€¦ ·

162

C©u hái vµ Bµi tËp ch−¬ng 6 1. T×m ®Þa chØ cña ch−¬ng tr×nh con phôc vô ng¾t t−¬ng øng víi vector ng¾t lµ

20H.

2. T×m ®Þa chØ cña ch−¬ng tr×nh con phôc vô ng¾t khi CPU thùc hiÖn lÖnh INT 3.

3. §o¹n ch−¬ng tr×nh sau g©y ra ng¾t g×?

XOR AL,AL

MOV BL,8

MOV AL,8

DIV BL

4. §o¹n ch−¬ng tr×nh sau g©y ra ng¾t g×?

XOR AL,AL

MOV BL,AL

MOV AL,8

DIV BL

Page 163: vµ cÊu tróc m¸y tÝnh€¦ ·

163

Ch−¬ng 7. Ch−¬ng 7. Ch−¬ng 7. Ch−¬ng 7. C¸c thiÕt bÞ ngo¹i vi th«ng dông

7.1. Bµn phÝm

Cã thÓ nãi bµn phÝm vµ chuét lµ hai thiÕt bÞ ®−a tin vµo phæ biÕn nhÊt. NÕu n¨m 1963, chuét míi ®−îc ®−a ra ®Ó phôc vô cho viÖc t¨ng n¨ng suÊt vµ n©ng cao hiÖu qu¶ cña viÖc dïng m¸y tÝnh th× bµn phÝm ®· ®−îc sinh ra tr−íc ®ã gÇn 100 n¨m, cô thÓ lµ n¨m 1870 vµ ®−îc ®Æt tªn lµ QWERTY, theo nh÷ng ch÷ c¸i tõ bªn tr¸i ë dßng ®Çu tiªn cña bµn phÝm nµy. Ngoµi bµn phÝm QWERTY cßn mét lo¹i bµn phÝm n÷a lµ bµn phÝm Dvorak do «ng August Dvorak vµ «ng William Deay thiÕt kÕ vµo nh÷ng n¨m 1930. Lo¹i bµn phÝm Dvorak nµy gâ nhanh h¬n do Ýt ph¶i dÞch chuyÓn tay h¬n so víi lo¹i bµn phÝm QWERTY. Tuy nhiªn bµn phÝm QWERTY l¹i phæ biÕn h¬n so víi bµn phÝm Dvorak do nã ra ®êi tr−íc nªn khi bµn phÝm Dvorak ra ®êi th× trªn thÕ giíi ®· cã qu¸ nhiÒu ng−êi quen sö dông QWERTY.

H×nh 7.1. Bµn phÝm QWERTY cho m¸y PC/XT vµ AT

Page 164: vµ cÊu tróc m¸y tÝnh€¦ ·

164

7.1.1. CÊu t¹o cña bµn phÝm

Bµn phÝm ®−îc cÊu t¹o tõ hai phÇn chÝnh lµ c¸c phÝm nhÊn vµ bé t¹o m· quÐt.

H×nh 7.2. CÊu t¹o cña bµn phÝm

C¸c phÝm nhÊn cã nhiÖm vô t¹o ra sù thay ®æi cã thÓ vÒ ®iÖn trë, vÒ ®iÖn dung hoÆc vÒ dßng ®iÖn ®Ó bé phËn t¹o m· quÐt nhËn biÕt mçi khi nguêi sö

Ma trËn phÝm Ên ®iÖn dung 8x12

Bé khuÕch ®¹i vµ gi¶i m! 3-8

Vi ®iÒu khiÓn 8048

Bé ®Öm

Vi ®iÒu khiÓn 8042

Bé Vi xö lý

Bµn phÝm

M¸y vi tÝnh c¸ nh©n

DB

P1 P2-6 P2-7

§Þa chØ 60H

§Þa chØ 64H

8

8

Bus d÷ liÖu

D©y dÉn Vcc GND§ång hå/Yªu cÇu D÷ liÖu

Vcc GND

P20-P22

38

12

P10-P17, P24-P27

0111 1011 1101 1110

0 1 2 3

4 5 6 7

8 9 A B

C D E F

Sù x¸c lËp cña thanhghi A

Gi¸ trÞ nhËn ®−îc cña

thanh ghi B

0111

1011

1101

1110

Vcc

Thanh ghi A

A3 A2 A1 A0

Ng¾t

Thanh ghi B

EN1

EN2

R

R

R

R

Page 165: vµ cÊu tróc m¸y tÝnh€¦ ·

165

dông t¸c ®éng lªn phÝm. Bé phËn t¹o m· quÐt cã nhiÖm vô nhËn biÕt vÞ trÝ cña phÝm ®−îc t¸c ®éng, t¹o ra m· quÐt vµ chuyÓn vÒ cho m¸y tÝnh. H×nh 7.2 minh ho¹ cÊu t¹o mét bµn phÝm gåm 12x8 phÝm.

7.1.2. Ho¹t ®éng cña bµn phÝm

Vi ®iÒu khiÓn 8048 ph¸t ra 3 bit, gi¶i m· thµnh 8 bit quÐt ma trËn bµn phÝm, ma trËn phÝm ®−a vÒ cho 8048 12 bit dß. Khi mét phÝm ®−îc Ên, 8048 truyÒn m· yªu cÇu cho 8042 ®Ó 8042 ph¸t ra yªu cÇu ng¾t vÒ bé vi xö lý cña m¸y tÝnh. §ång thêi 8048 c¨n cø vµo vÞ trÝ cña phÝm ®−îc nhÊn, 8048 sÏ t¹o m· quÐt, m· quÐt cña phÝm ®−îc nhÊn ®Ó truyÒn cho 8042. M· quÐt nµy gåm 1 bit trong ®ã cã 1 bit start, 8 bit d÷ liÖu, 1 bit kiÓm tra ch½n/lÎ vµ 1 bit stop.

Khi 8042 nhËn ®−îc m· quÐt tõ 8048, 8042 ph¸t ra yªu cÇu ng¾t IRQ1 göi tíi bé xö lý ng¾t 8259A, 8259A xö lý vµ truyÒn cho bé vi xö lý cña m¸y tÝnh sè hiÖu ng¾t 09H (ng¾t BIOS). Ch−¬ng tr×nh xö lý ng¾t sÏ chuyÓn m· quÐt thµnh m· ASCII vµ ®Æt vµo bé ®Öm bµn phÝm ë trªn bé nhí chÝnh cña m¸y tÝnh. C¸c hµm cña DOS vµ BIOS th−êng lÊy m· quÐt vµ m· ASCII tõ bé ®Öm nµy.

C¶ hai vi ®iÒu khiÓn 8048 vµ 8042 ®Òu cã bé nhí ROM ®Ó chøa c¸c ch−¬ng tr×nh ®iÒu khiÓn vµ RAM ®Ó chøa c¸c tham sè cña ch−¬ng tr×nh. C¸c ch−¬ng tr×nh trong c¸c bé vi ®iÒu khiÓn nµy cho phÐp:

7.1.2.1. Xö lý sù kiÖn Ên phÝm

Khi Ên mét, hai hoÆc ba phÝm ®ång thêi vi ®iÒu khiÓn cña bµn phÝm t¹o ra c¸c m· quÐt. C¸c m· nµy ®−îc vi xö lý cña m¸y tÝnh ®äc vµo ®Ó g©y ra c¸c ng¾t ch−¬ng tr×nh INT 16H cho bµn phÝm vµ thùc hiÖn c¸c ch−¬ng tr×nh con cña BIOS víi c¸c hµm chøc n¨ng ghi vµo AH.

KÕt qu¶ thùc hiÖn mét sè chøc n¨ng khi nhËn ®−îc m· cña tæ hîp c¸c phÝm:

− Ctrl – Alt – Del: Khëi ®éng nãng.

− Ctrl – NumLock: Treo tíi khi mét phÝm kh¸c ®−îc ®¸nh.

− Tù ®éng lÆp phÝm nÕu Ên l©u qu¸ 0,5s, nã sÏ t¹o ra ®éng t¸c lÆp phÝm 10 lÇn trong 1s.

− Alt – PhÝm ch÷ sè: §−a ra m· ASCII vµ trùc tiÕp b»ng c¸ch ®¸nh ch÷ sè lµ m· ASCII (d¹ng c¬ sè 10)...

7.1.2.2. T¹o ra m· ASCII

Page 166: vµ cÊu tróc m¸y tÝnh€¦ ·

166

B¶ng m· ®−îc ®Æt trong mét vïng nhí cña ROM−BIOS. M¸y vi tÝnh dïng lÖnh so s¸nh ®Ó t×m c¸c ch÷ t−¬ng øng trong b¶ng m· khi nhËn ®−îc m· hµng vµ cét cña ma trËn bµn phÝm (tøc m· quÐt). Dùa vµo ®©y ng−êi ta cã thÓ cµi ®Æt l¹i t−¬ng øng c¸c m· quÐt cho c¸c ký tù cña c¸c n−íc kh¸c kh«ng dïng tiÕng Anh. §ã chÝnh lµ c«ng viÖc cµi ®Æt mét bé font ch÷.

7.2. Chuét

Chuét ®−îc Douglas Englebart ph¸t minh ra vµo n¨m 1964, khi «ng ®ang lµm viÖc ë ViÖn Nghiªn cøu Stanford vµ Tr−êng §¹i häc Stanford ®· b¶o trî cho ý t−ëng cña «ng. Lóc ®Çu, chuét ®−îc gäi lµ bé ®Þnh vÞ X−Y cho hÖ thèng mµn h×nh. Sau nµy qua nhiÒu lÇn ph¸t triÓn, chuét ®· trë thµnh mét thiÕt bÞ ngo¹i vi kh«ng thÓ thiÕu trong hÖ thèng m¸y tÝnh.

HiÖn nay ng−êi ta sö dông hai lo¹i chuét chÝnh lµ chuét c¬ vµ chuét quang.

7.2.1. Chuét c¬

Chuét c¬ ®−îc cÊu t¹o tõ c¸c thµnh phÇn:

+ PhÇn c¬ gåm c¸c phÝm nhÊn vµ mét qu¶ bi b»ng thÐp cã phñ cao su ®Ó t¨ng ma s¸t. Qu¶ bi nµy tú lªn hai trôc vu«ng gãc víi nhau theo to¹ ®é x, y.

+ PhÇn ®iÖn tö bao gåm:

− Hai bé c¶m biÕn quang, mçi bé c¶m biÕn gåm mét diode ph¸t vµ mét phototransistor thu.

− Mét bé khuÕch ®¹i tÝn hiÖu tõ hai c¶m biÕn quang truyÒn vÒ m¸y tÝnh ®Ó xö lý.

COM hoÆc PS/2

Bé khuÕch ®¹i

phototransistor LED trôc l¨n

Bi

H×nh 7.3. CÊu t¹o cña chuét c¬

Page 167: vµ cÊu tróc m¸y tÝnh€¦ ·

167

H×nh 7.4. S¬ ®å nguyªn lý m¹ch ®iÖn tö trong chuét c¬

Nguyªn lý ho¹t ®éng cña chuét c¬ lµ chuyÓn tõ sù di chuyÓn cña bi (c¬) sang sù chiÕu s¸ng/che khuÊt (quang) vµ tõ ®ã chuyÓn thµnh c¸c d·y xung (®iÖn).

Cã 2 phototransistor trong mçi bé c¶m biÕn quang, 2 phototransistor nµy ®−îc ®Æt ë vÞ trÝ kh¸c nhau nªn khi trôc ®−îc bi tú lªn quay thuËn th× xung thu ®−îc tõ phototransistor thø nhÊt sÏ sím pha h¬n xung thu ®−îc tõ phototransistor thø hai vµ ng−îc l¹i, tõ ®ã nhËn biÕt ®−îc chuét ®ang ®i lªn hay ®i xuèng. Còng t−¬ng tù víi bé c¶m biÕn quang thø hai ®Ó ph¸t hiÖn chuét ®ang ®i sang tr¸i hay ph¶i. KÕt hîp c¶ 2 c¶m biÕn nµy sÏ thu ®−îc kÕt qu¶ lµ chuét ®ang di chuyÓn theo to¹ ®é nµo trªn mÆt ph¼ng (x, y).

1 2 3 4

HI

0 5 6

HI

7

8 16 15

13 14 15 10 9 11

3

15k

15k

15k 15k

P M T

LED LED

1

2 3

1

2

3

MX84510FD 0410A3D5E32

Page 168: vµ cÊu tróc m¸y tÝnh€¦ ·

168

7.2.2. Chuét quang

CÊu t¹o cña chuét quang gåm:

− HÖ thèng quang (optical system).

− Mét chipset.

− Vá (case) vµ hÖ thèng c¸c phÝm.

H×nh 7.5. HÖ thèng quang trong chuét quang

HÖ thèng quang (h×nh 7.5) bao gåm:

− Mét c¶m biÕn quang.

− ThÊu kÝnh (LENS) ®−îc thiÕt kÕ ®Æc biÖt ®Ó dÉn h−íng ¸nh s¸ng tõ LED chiÕu s¸ng bÒ mÆt råi ph¶n x¹ lªn trªn c¶m biÕn. ThÊu kÝnh ®−îc lµm b»ng plastic ®Æc biÖt.

− Mét diode ph¸t ¸nh s¸ng ®á (LED).

C¶m biÕn quang gåm ba khèi chøc n¨ng: mét hÖ thèng ®äc ¶nh (image reading system), mét bé xö lý tÝn hiÖu sè, mét giao tiÕp truyÒn d÷ liÖu nèi tiÕp (serial interface of data transfer).

Page 169: vµ cÊu tróc m¸y tÝnh€¦ ·

169

Tõ gãc ®é xem xÐt cÊu tróc, mét c¶m biÕn quang lµ mét vi m¹ch, ë phÝa d−íi vi m¹ch cã mét vËt kÝnh rÊt nhá lµ n¬i cho ¸nh s¸ng ph¶n x¹ tõ bÒ mÆt héi tô vµo trong vi m¹ch ®Ó xö lý. PhÝa trong vËt kÝnh lµ mét camera CMOS ®¬n s¾c cã nhiÖm vô chôp nh÷ng ¶nh cña mét vïng bÒ mÆt h×nh vu«ng diÖn tÝch cì mét milimet vu«ng (diÖn tÝch nµy tïy thuéc tham sè kü thuËt cña c¶m biÕn).

Bøc ¶nh camera CMOS thu ®−îc th−êng ®−îc gäi lµ frame. Frame cña bÒ mÆt ®−îc chia thµnh nh÷ng phÇn nhá b»ng nhau (gäi lµ quadrate). Hai frame ®−îc chôp khi chuét di chuyÓn. Víi mçi phÇn nhá ®ã, gi¸ trÞ trung b×nh cña ®é s¸ng ®−îc tÝnh. Gi¸ trÞ nµy cã thÓ thay ®æi tõ 0 ®Õn 63 (c¸c c¶m biÕn kh¸c nhau cã l−îng gi¸ trÞ ®Ó m· ho¸ cho ®é s¸ng cña c¸c phÇn nhá lµ kh¸c nhau), ë ®ã 0 t−¬ng øng víi phÇn tèi ®en nhÊt vµ 63 øng víi phÇn nhá s¸ng tr¾ng nhÊt. Nh− vËy, ¶nh l¾p ghÐp bao gåm nhiÒu quadrate cã ®é s¸ng kh¸c nhau. Mét quadrate nh− thÕ gäi lµ mét pixel. §é ph©n gi¶i cña chuét quang ®−îc x¸c ®Þnh b»ng sè pixel trªn mét inch, mçi inch trªn bÒ mÆt (kh«ng ph¶i trªn ¶nh) vµ ®−îc tÝnh b»ng ®¬n vÞ lµ cpi (counts per inch) thay cho dpi (dots per inch) nh− chuét th«ng th−êng.

C¶m biÕn chØ chôp phÇn nhá cña bÒ mÆt trong khi con trá mµn h×nh ph¶i di chuyÓn tr¬n tru vµ kh«ng bÞ tr× ho·n. §Ó ®¹t ®−îc môc ®Ých nµy, bÒ mÆt ®−îc chôp víi tèc ®é tõ 1500 tíi 2300 ¶nh trªn mét gi©y.

Bé xö lý tÝn hiÖu sè víi sù hç trî cña cña mét gi¶i thuËt ®Æc biÖt sÏ xö lý nh÷ng frame thu ®−îc. So s¸nh nh÷ng frame thu ®−îc bé xö lý x¸c ®Þnh ®é lín vµ h−íng cña sù ®æi chç cña chuét vµ biÕn ®æi d÷ liÖu nµy thµnh to¹ ®é. PhÇn lín c¸c c¶m biÕn ho¹t ®éng nhê sù cÊp xung cña mét dao ®éng th¹ch anh tÇn sè 18MHz hay 24MHz. §iÒu nµy gi¶i thÝch cho c«ng suÊt cña bé xö lý sè thùc hiÖn 18 triÖu phÐp to¸n trªn gi©y. Cuèi cïng to¹ ®é ®· ®−îc tÝnh to¸n ®−îc truyÒn tíi m¸y tÝnh qua giao tiÕp nèi tiÕp nh− PS/2 hoÆc USB.

Nguyªn lý ho¹t ®éng cña chuét quang: Nguyªn lý ho¹t ®éng c¬ b¶n ®−îc minh ho¹ nh− h×nh 7.5. M¾t chóng ta dÔ dµng nh×n thÊy nh÷ng vÞ trÝ kh¸c nhau trªn mét bÒ mÆt vËt chÊt cã cÊu tróc (gå ghÒ lín) kh¸c nhau. Do c−êng ®é vµ n¨ng l−îng ¸nh s¸ng ë nh÷ng vÞ trÝ cã cÊu tróc bÒ mÆt kh¸c nhau ph¶n x¹, héi tô vµo vâng m¹c cña m¾t lµ kh¸c nhau. Víi mét bÒ mÆt vËt chÊt nh½n bãng, m¾t th−êng chóng ta kh«ng thÓ nh×n thÊy nh÷ng chi tiÕt nhá gå ghÒ cña nã, nh−ng d−íi kÝnh hiÓn vi chóng ta sÏ thÊy cÊu tróc læm chæm cña bÒ mÆt. CÊu tróc bÒ mÆt læm chæm rÊt nhá nµy ®−îc chuét quang dïng ®Ó t¹o ra (b»ng ph−¬ng ph¸p quang häc tinh vi vµ c«ng nghÖ CMOS) mét ¶nh bÒ mÆt gåm nh÷ng ®iÓm cã ®é s¸ng øng víi c−êng ®é vµ n¨ng l−îng ph¶n x¹ cña c¸c ®iÓm bÒ mÆt t−¬ng øng.

Page 170: vµ cÊu tróc m¸y tÝnh€¦ ·

170

Mét diode ph¸t ¸nh s¸ng (LED) lµm s¸ng bÒ mÆt phÝa d−íi ®¸y cña

chuét. ¸nh s¸ng tõ LED ph¶n ¸nh nh÷ng ®Æc tÝnh kÕt cÊu rÊt nhá (chØ nh×n thÊy d−íi kÝnh hiÓn vi) cña bÒ mÆt ra kh«ng gian. Mét thÊu kÝnh b»ng nhùa héi tô ¸nh s¸ng ®−îc ph¶n x¹ tõ nh÷ng ®iÓm rÊt nhá, gÇn nhau vµo c¶m biÕn h×nh thµnh mét ¶nh trªn mét c¶m biÕn. NÕu chóng ta nh×n bøc ¶nh, nã sÏ lµ bøc ¶nh tr¾ng ®en cña mét phÇn nhá xÝu cña bÒ mÆt. Nh− minh ho¹ trong h×nh 7.6, bøc ¶nh nhá xÝu nµy gåm nhiÒu ®iÓm ¶nh b»ng nhau nh−ng cã c−êng ®é s¸ng hoµn toµn kh¸c nhau n»m gi÷a ®é s¸ng cña mµu tèi ®en vµ mµu tr¾ng s¸ng, c¸c ®iÓm ¶nh cã ®é s¸ng kh¸c nhau nµy lµ do cÊu tróc hiÓn vi cña bÒ mÆt kh¸c nhau t¹i c¸c ®iÓm hiÓn vi kh¸c nhau. C¶m biÕn liªn tôc thu nh÷ng bøc ¶nh khi chuét di chuyÓn. C¶m biÕn thu nh÷ng bøc ¶nh rÊt nhanh − cì 1500 ¶nh trªn gi©y hay nhanh h¬n ®ñ ®Ó cho nh÷ng ¶nh liªn tiÕp trïng khíp (gièng nhau) mét phÇn. Nh÷ng ¶nh sau ®ã ®−îc göi ®Õn Optical Navigation Engine (t¹m dÞch ph−¬ng tiÖn dÉn ®−êng quang) ®Ó xö lý.

NhiÖm vô cña Optical Navigation Engine lµ nhËn d¹ng nh÷ng cÊu tróc, ®Æc ®iÓm kh¸c nhau gi÷a nh÷ng ¶nh thu ®−îc vµ theo dÊu sù di ®éng cña chóng. H×nh 7.6 minh ho¹ c¸ch lµm nµy:

Optical Navigation Engine nhËn d¹ng nh÷ng ®Æc ®iÓm chung trong c¸c

¶nh liªn tiÕp ®Ó x¸c ®Þnh h−íng vµ l−îng di chuyÓn. ¶nh B ®−îc chôp trong khi chuét ®ang di chuyÓn, mét thêi gian ng¾n sau khi chôp ¶nh A. H×nh B gièng nh− h×nh A nhiÒu ®iÓm, dÔ thÊy h×nh B lµ h×nh A mµ ®−îc dÞch xuèng vµ vÒ phÝa tr¸i.

¶nh A ¶nh B

H×nh 7.6. M« t¶ 2 bøc ¶nh chôp liªn tiÕp

Page 171: vµ cÊu tróc m¸y tÝnh€¦ ·

171

Hai ¶nh ®−îc b¾t liªn tiÕp khi chuét ®−îc quÐt sang bªn ph¶i vµ ®i lªn. NhiÒu chç trùc quan gièng nhau cã thÓ ®−îc nhËn ra dÔ dµng trong hai ¶nh. Th«ng qua gi¶i thuËt xö lý ¶nh, Opticcal Navigation Engine nhËn d¹ng nh÷ng nÐt chung gi÷a hai ¶nh nµy vµ x¸c ®Þnh kho¶ng c¸ch gi÷a chóng (kho¶ng c¸ch kh«ng gian gi÷a ®iÓm chôp ®−îc ¶nh A vµ ®iÓm chôp ®−îc ¶nh B). Th«ng tin nµy sau ®ã ®−îc chuyÓn ®æi thµnh to¹ ®é di chuyÓn X (theo ph−¬ng ngang) vµ Y (theo ph−¬ng th¼ng ®øng) ®Ó biÓu thÞ sù di chuyÓn cña chuét. VÞ trÝ con trá chuét ®−îc ®Þnh vÞ b»ng c¸ch kÕt hîp hai gi¸ trÞ X vµ Y nµy.

B»ng trùc quan, xem xÐt kü ¶nh chôp lóc A vµ B ta thÊy râ rµng chuét ®· di chuyÓn qua ph¶i vµ lªn trªn. §ã lµ ®Þnh tÝnh, thùc tÕ gi¶i thuËt xö lý ¶nh rÊt tinh vi, ®−îc cµi ®Æt trong IC c¶m biÕn sÏ x¸c ®Þnh chÝnh x¸c h−íng vµ kho¶ng c¸ch di chuyÓn. Chóng ta sÏ xÐt c¸c IC c¶m biÕn trong môc sau, nã gåm nhiÒu bé phËn cã chøc n¨ng kh¸c nhau.

7.3. C¸c thiÕt bÞ ®äc (vision): m¸y quÐt, chôp,...

C¸c thiÕt bÞ ®äc lîi dông sù ph¶n x¹ ¸nh s¸ng ë mét vËt khi chiÕu mét chïm s¸ng vµo nã ®Ó ®äc d÷ liÖu h×nh ¶nh. H×nh d¸ng vµ ®é ®Ëm nh¹t cña chïm tia ph¶n x¹ ®−îc mét bé c¶m øng quang häc (tÕ bµo quang ®iÖn, mµn quang ®iÖn) biÕn thµnh tÝn hiÖu ®iÖn ®Ó ®−a vµo m¸y tÝnh sau khi biÕn ®æi tõ d¹ng t−¬ng tù sang d¹ng sè. C¸c thiÕt bÞ ®äc th«ng dông lµ m¸y quÐt, m¸y ®äc quang, thiÕt bÞ nh×n.

7.3.1. Bé ®äc quÐt

Gåm mét nguån s¸ng (neon) ®Ó chiÕu vµo tµi liÖu cÇn ®äc, ¸nh s¸ng ph¶n x¹ ®−îc héi tô råi chiÕu lªn mét thanh cña c¸c tÕ bµo nh¹y ¸nh s¸ng CCD. Nguån s¸ng vµ thanh CCD th−êng xuyªn chuyÓn ®éng quÐt diÖn tÝch tµi liÖu hoÆc chóng ®øng yªn cßn tµi liÖu chuyÓn ®éng qua khe hÑp chiÕu s¸ng.

NÕu chiÕu tµi liÖu b»ng ba chïm s¸ng ®á, lam, lôc vµ ®äc tia ph¶n x¹ t−¬ng øng b»ng ba thanh CCD ta cã thÓ thu ®−îc c¶ mµu s¾c cña tµi liÖu cÇn ®äc. Cã thÓ chØ dïng nguån s¸ng ba lÇn liªn tiÕp nªn tµi liÖu ®äc víi 3 mµu läc s¾c ®á, xanh vµ lôc, ®Ó cã ba chïm tia kh¸c nhau. Mét ®iÓm mµu ®−îc lÊy mÉu trªn 6, 8 hay 11 bit. Víi mµu 8 bit cã thÓ cã 256 s¾c th¸i trªn 65000 mµu c¬ b¶n vµ h¬n 65000 mµu c¬ b¶n vµ h¬n 16 triÖu mµu nhuém (leinteo).

7.3.2. Bé ®äc quang vµ bé ®äc tõ

Page 172: vµ cÊu tróc m¸y tÝnh€¦ ·

172

Bé ®äc quang cho phÐp nhËn biÕt c¸c ch÷ ®· chuÈn ho¸ nhê hai chïm s¸ng song song ë hai vïng riªng cña vÕt mùc. Sù cã mÆt cña mùc lµm thay ®æi c−êng ®é s¸ng cña chïm tia ph¶n x¹. Bé ®äc quang ®−îc dïng trong c¸c m¸y ®äc b×a ®ôc lç, b¨ng ®ôc lç ®Ó ®äc c¸c bit 1 cña tin víi 8 bit tin vµ mét bit ®¸nh dÊu.

BiÕn thÓ cña bé ®äc quang lµ bé ®äc tõ, bé ®äc tõ ®äc ch÷ hay h×nh ¶nh ®−îc in hoÆc vÏ b»ng lo¹i mùc tõ tÝnh CMC7 víi tèc ®é cao, thiÕt bÞ ®äc ®¬n gi¶n vµ rÎ tiÒn h¬n ®äc b»ng ph−¬ng ph¸p quang häc.

7.4. Mµn h×nh

Mµn h×nh lµ thiÕt bÞ chuÈn ®−a tin ra hiÓn thÞ thuËn tiÖn vµ kinh tÕ nhÊt. Cïng víi bµn phÝm (thiÕt bÞ ®−a tin vµo) lµm thµnh mét thiÕt bÞ ®Çu cuèi (Terminal) lµ thiÕt bÞ ngoµi tèi thiÓu cña m¸y tÝnh. Tïy cÊu tróc cã c¸c mµn h×nh ®iÖn tö (èng tia ©m cùc CRT) ®en tr¾ng, mµu vµ mµn h×nh Plasma, mµn h×nh LCD. Th«ng tin trªn mµn h×nh cã thÓ lµ d÷ liÖu − ch÷ − h×nh vÏ (®å ho¹ − Graphics) ®−îc hiÓn thÞ theo c¸c ph−¬ng ph¸p kh¸c nhau.

Ph−¬ng ph¸p hiÖn ¶nh trªn mµn h×nh cña monitor m¸y tÝnh còng gièng nh− trong m¸y thu h×nh th«ng th−êng. H×nh bªn d−íi minh ho¹ viÖc hiÖn ¶nh trªn mµn h×nh kiÓu èng phãng tia ©m cùc CRT (Cathode Ray Tube).

H×nh 7.7. CÊu t¹o èng h×nh CRT

C¸c ®iÖn tö ph¸t x¹ tõ cathode trong èng ®−îc héi tô thµnh 1 chïm tia, sau ®ã ®−îc t¨ng tèc vµ ®−îc lµm lÖch h−íng chuyÓn ®éng bëi c¸c bé phËn l¸i tia. Tia nµy sÏ ®Ëp vµo mµn h×nh cã phñ chÊt huúnh quang ®Ó t¹o thµnh 1 ®iÓm s¸ng gäi lµ 1 ®iÓm ¶nh.

Do hiÖn t−îng l−u ¶nh trong vâng m¹c cña m¾t ng−êi nªn khi tia ®iÖn tö ®−îc quÐt rÊt nhanh theo chiÒu ngang tõ tr¸i sang ph¶i sÏ t¹o nªn mét vÖt

Page 173: vµ cÊu tróc m¸y tÝnh€¦ ·

173

s¸ng ngang ®−îc gäi lµ dßng quÐt. §Õn cuèi mét dßng, nã ®−îc quÐt ng−îc trë vÒ bªn tr¸i ®Ó quÐt tiÕp dßng thø hai bªn d−íi, v.v... Qu¸ tr×nh quÐt c¸c dßng ®−îc dÞch dÇn tõ trªn xuèng d−íi cho ®Õn hÕt chiÒu däc cña mµn h×nh ®−îc gäi lµ quÐt däc.

§é chãi (s¸ng/ tèi) ®−îc quyÕt ®Þnh bëi c−êng ®é chïm tia ®Ëp vµo mµn h×nh huúnh quang vµ 1 ®iÓm mµu tù nhiªn ®−îc hiÖn nhê sù trén lÉn cña 3 mµu: ®á, xanh d−¬ng, xanh l¸ c©y theo mét tØ lÖ nµo ®ã. Ba mµu nµy ®−îc hiÖn nhê 3 tia ®iÖn tö cïng b¾n vµo 3 ®iÓm trªn mµn h×nh kÒ cËn nhau, mçi ®iÓm ®−îc phñ chÊt huúnh quang ph¸t ra c¸c mµu t−¬ng øng. 3 chïm tia ®iÖn tö ®ã ®−îc ph¸t ra bëi 3 sóng ®iÖn tö lµ 3 cathode ®−îc xÕp ®Æt bªn trong CRT mét c¸ch cÈn thËn. Cã 2 kiÓu quÐt tia ®iÖn tö:

− QuÐt xen kÏ (interlaced): c¸c dßng lÎ ®−îc quÐt tr−íc cho ®Õn hÕt mµn h×nh theo chiÒu däc, gäi lµ mµnh lÎ; sau ®ã c¸c dßng ch½n t¹o nªn mµnh ch½n ®−îc quÐt sau. Ph−¬ng ph¸p nµy cã −u ®iÓm lµ thu hÑp ®−îc d¶i tÇn sè lµm viÖc cña thiÕt bÞ nh−ng cã nh−îc ®iÓm lµ h×nh ¶nh bÞ nhÊp nh¸y.

− QuÐt kh«ng xen kÏ (non−interlaced): c¸c dßng quÐt ®−îc thùc hiÖn tuÇn tù. ¦u ®iÓm lµ h×nh ¶nh ®−îc ®iÒu chØnh chÝnh x¸c vµ æn ®Þnh nh−ng thiÕt kÕ m¹ch ®iÖn sÏ khã h¬n v× ph¶i gi¶i quyÕt vÊn ®Ò t¨ng d¶i tÇn lµm viÖc.

HiÖn nay cßn cã c¸c monitor dïng mµn h×nh tinh thÓ láng LCD hoÆc èng chøa khÝ ®−îc ho¹t ®éng theo nguyªn lý t−¬ng tù nh− trªn nh−ng kh«ng cã tia ®iÖn tö quÐt nªn thay v× c¸c ®iÓm ¶nh riªng biÖt lµ c¸c phÇn tö ph¸t s¸ng ®−îc ®Þnh ®Þa chØ mét c¸ch tuÇn tù. Do vËy, trªn c¸c monitor nµy h×nh ¶nh còng ®−îc ph¸t ra tõng dßng mét. Qu¸ tr×nh quÐt ng−îc còng kh«ng cßn n÷a v× ë ®©y ®¬n gi¶n chØ viÖc thay ®æi ®Þa chØ vÒ phÇn tö ®Çu dßng tiÕp theo.

Card giao tiÕp ®å ho¹:

§Ó hiÖn c¸c h×nh ¶nh, ký tù, hay h×nh vÏ trªn mµn h×nh, PC ph¶i th«ng qua m¹ch ghÐp nèi mµn h×nh (graphics adapter). Board m¹ch nµy th−êng ®−îc c¾m trªn khe c¾m më réng cña PC. S¬ ®å khèi nh− h×nh 7.8.

PhÇn trung t©m lµ chip ®iÒu khiÓn èng h×nh CRTC (Cathode Ray Tube Controller). CPU x©m nhËp RAM Video qua m¹ch ghÐp nèi bus ®Ó ghi th«ng tin x¸c ®Þnh ký tù hay h×nh vÏ cÇn hiÓn thÞ. CRTC liªn tôc ph¸t ra c¸c ®Þa chØ ®Ó RAM video ®äc c¸c ký tù trong ®ã vµ truyÒn chóng tíi m¸y ph¸t ký tù (character generator).

Page 174: vµ cÊu tróc m¸y tÝnh€¦ ·

174

H×nh 7.8. S¬ ®å khèi cña b¶n m¹ch ghÐp nèi mµn h×nh

Trong chÕ ®é v¨n b¶n (text mode), c¸c ký tù ®−îc x¸c ®Þnh bëi m· ASCII, trong ®ã cã c¶ c¸c th«ng tin vÒ thuéc tÝnh cña ký tù, vÝ dô ký tù ®−îc hiÖn theo c¸ch nhÊp nh¸y hay ®¶o mµu ®en tr¾ng... ROM ký tù (character ROM) l−u tr÷ c¸c h×nh mÉu ®iÓm ¶nh cña c¸c ký tù t−¬ng øng ®Ó m¸y ph¸t ký tù biÕn ®æi c¸c m· ký tù ®ã thµnh mét chuçi c¸c bit ®iÓm ¶nh (pixel bit) vµ chuyÓn chóng tíi thanh ghi dÞch (shift register). M¸y ph¸t tÝn hiÖu sÏ sö dông c¸c bit ®iÓm ¶nh nµy cïng víi c¸c th«ng tin thuéc tÝnh tõ RAM video vµ c¸c tÝn hiÖu ®ång bé tõ CRTC ®Ó ph¸t ra c¸c tÝn hiÖu cÇn thiÕt cho monitor.

Trong chÕ ®é ®å ho¹ (graphics mode), th«ng tin trong RAM video ®−îc sö dông trùc tiÕp cho viÖc ph¸t ra c¸c ký tù. Lóc nµy c¸c th«ng tin vÒ thuéc tÝnh còng kh«ng cÇn n÷a. ChØ tõ c¸c gi¸ trÞ bit trong thanh ghi dÞch, m¸y ph¸t tÝn hiÖu sÏ ph¸t c¸c tÝn hiÖu vÒ ®é s¸ng vµ mµu cho monitor.

7.5. M¸y in

M¸y in lµ thiÕt bÞ ®−a tin ra vµ l−u tr÷ trªn giÊy. M¸y in thay thÕ m¸y ch÷ v× nã cã kh¶ n¨ng xö lý c¸c ký tù b»ng phÇn mÒm. C¸c kü thuËt míi vÒ c¬ khÝ, ®iÖn tö, quang häc ®· ®em l¹i nhiÒu chñng lo¹i m¸y in cã kÝch th−íc nhá gän, in nhanh vµ h×nh ¶nh ®Ñp.

Cã thÓ ph©n lo¹i m¸y in theo c¸c tiªu chuÈn sau:

− Theo kü thuËt in:

+ In tiÕp xóc: ch÷ ®−îc hiÖn khi gâ vµo mét d¶i b¨ng ®−îc tÈm mùc.

+ In kh«ng tiÕp xóc: ch÷ in hiÖn kh«ng cÇn va ®Ëp c¬ lªn b¨ng tÈm mùc trªn giÊy.

Video Ram

ROM ký tù

Bé gi¶i m· thuéc tÝnh

Bé ph¸t tÝn hiÖu

CRTC Bé ph¸t ký tù

Thanh ghi dÞch

Mµn h×nh

Giao diÖn Bus cña m¸y tÝnh

Page 175: vµ cÊu tróc m¸y tÝnh€¦ ·

175

− Theo chÕ ®é in ký tù:

+ Ký tù cã s½n: ch÷ ®−îc t¹o khi cã mét gâ trªn m¸y.

+ In ma trËn: Ch÷ ®−îc t¹o bëi mét ma trËn c¸c kim gâ thµnh c¸c ®iÓm.

− Theo chÕ ®é in v¨n b¶n:

+ ChÕ ®é ch÷: nh÷ng ch÷ t¹o nªn v¨n b¶n ®−îc t¹o tõng ch÷ mét.

+ ChÕ ®é in dßng: thiÕt bÞ in phñ tÊt c¶ dßng cña v¨n b¶n, mçi dßng chØ ®−îc in mét lÇn.

− Theo chÕ ®é truyÒn giÊy:

+ Ma s¸t giÊy ®−îc kÐo bëi lùc ma s¸t lªn mÆt giÊy b»ng mét b¸nh xe cao su.

+ KÐo giÊy bëi b¸nh xe r¨ng c−a lªn c¸c d¶i ®ôc lç cña giÊy.

7.5.1. M¸y in cã bé ch÷ ®óc s½n (m¸y in ®Ëp)

M¸y in cã bé ch÷ ®óc s½n lµ lo¹i m¸y cæ x−a nhÊt, nã ho¹t ®éng gièng nh− mét m¸y ®¸nh ch÷, nghÜa lµ thanh kim lo¹i hoÆc nhùa cã ký tù næi trªn ®ã ®Ëp ruy b¨ng ®· thÊm mùc vµo trang giÊy vµ ®Ó l¹i h×nh ¶nh ký tù ®ã trªn giÊy. Trªn m¸y tÝnh c¸ nh©n, lo¹i m¸y in nµy cã bé ch÷ ®óc s½n, ch÷ cÇn in ®−îc ®Æt tr−íc mét d¶i b¨ng tÈm mùc c¨ng song song trªn mÆt giÊy. Khi cã lÖnh in, mét chiÕc bóa gâ vµo b¨ng, ®Ó ch÷ ®Ì lªn giÊy, h×nh næi cña ch÷ ®−îc in do b¨ng mùc. M¸y tÝnh ®iÒu khiÓn quay ch÷ mong muèn tíi tr−íc mÆt b¨ng giÊy vµ ra lÖnh ®Ó gâ bóa.

Tïy theo cÊu tróc cña gi¸ mang bé ch÷ ta cã c¸c lo¹i m¸y in sau:

M¸y in qu¶ cÇu: bé ch÷ trªn mét qu¶ cÇu xoay theo lÖnh in.

M¸y in b«ng cóc: bé ch÷ n»m trªn c¸c c¸nh cña mét b¸nh xe quay gièng h×nh b«ng hoa cóc, cã thÓ cã tíi 96 ch÷.

M¸y in trèng: bé ch÷ trªn mét trèng quay kim lo¹i dµi ®Æt tr−íc b¨ng mùc.

M¸y in d©y xÝch: bé ch÷ n»m trªn mét d©y xÝch chuyÓn ®éng kh«ng ngõng nhê c¸c b¸nh xe kÐo.

M¸y in ®Ëp cã −u ®iÓm lµ ®¬n gi¶n, chÊt l−îng in tèt nh−ng cã nh−îc ®iÓm tiÕng ån lín vµ khi m¸y tÝnh ®iÒu khiÓn thay ®æi bé ch÷ ch−¬ng tr×nh th× ph¶i thay thÕ c¶ bé ch÷ kh¸c b»ng tay.

Page 176: vµ cÊu tróc m¸y tÝnh€¦ ·

176

7.5.2. M¸y in ma trËn chÊm

M¸y in ma trËn chÊm lµ lo¹i m¸y in phæ biÕn nhÊt, trong ®ã mét ®Çu in chøa tõ 7 ®Õn 24 kim cã thÓ kÝch ho¹t b»ng ®iÖn tõ vµ quÐt qua tõng dßng in. Nguyªn t¾c t¹o ch÷ cña m¸y in gièng nh− c¸ch vÏ ch÷ hay ký hiÖu trªn mµn h×nh, mçi ch÷ ®−îc t¹o bëi nhiÒu chÊm mùc bè trÝ theo mét ma trËn.

Tuú c¸ch t¹o chÊm ta cã c¸c lo¹i m¸y in sau:

− M¸y in ma trËn kim dïng b¨ng mùc: ®Çu in gåm mét sè kim (1, 7, 9, 14, 18, 24) ®−îc ®iÒu khiÓn bëi c¸c bóa gâ ®iÖn tö. Khi bóa gâ, b¨ng mùc ®−îc Ên vµo giÊy t¹o ra c¸c chÊm mùc trªn giÊy. Tuú sè l−îng kim vµ kÝch th−íc bóa gâ ®iÖn tõ cã thÓ bè trÝ c¸c kim theo mét cét (in chËm) hay theo ma trËn ®Ó gâ ®ång thêi c¸c bóa gâ (in nhanh). C¸c motor b−íc sÏ ®−îc ®iÒu khiÓn lµm quay giÊy. Ngoµi in ch÷, m¸y in ma trËn kim cã thÓ in ®−îc h×nh vÏ nhiÒu mµu (phô thuéc sè b¨ng mùc mµu), tÊt nhiªn mçi lÇn chØ in ®−îc mét mµu.

− M¸y in ma trËn kim dïng nhiÖt: Gièng m¸y in ma trËn kim dïng b¨ng mùc, nh−ng bóa c¬ ®iÖn vµ b¨ng mùc ®−îc thay thÕ b»ng c¸c ®Çu ®èt nãng ®Æt thµnh ma trËn. §Çu ®èt nãng ®−îc ¸p s¸t vµo giÊy in, giÊy in ®−îc dïng ë ®©y lµ lo¹i giÊy ®Æc biÖt bÞ ®æi mµu khi bÞ lµm nãng lªn. GiÊy in nµy cã nh−îc ®iÓm lµ ®¾t tiÒn vµ b¶n in bÞ ®en khi giÊy v« t×nh bÞ lµm nãng (khi ®Ó gÇn vËt to¶ nhiÖt hay d−íi n¾ng). §Ó kh¾c phôc hiÖn t−îng nµy, hiÖn nay ng−êi ta th−êng dïng b¨ng t¸c dông nhiÖt, khi b¨ng bÞ nung nãng, vÕt nung nãng ®ã truyÒn sang mÆt giÊy b×nh th−êng t¹o thµnh vÕt ®en do bÞ ®èt nãng.

− M¸y in phun mùc: Tia mùc ®−îc phun ra bÒ mÆt giÊy (gièng tia ®iÖn tö cña mµn h×nh) ®−îc tÝch ®iÖn khi qua tô tÝch ®iÖn bÞ lÖch th¼ng ®øng do tô l¸i tia mùc råi ®Ëp vµo b¨ng giÊy. §iÒu khiÓn di chuyÓn ®Çu in theo chiÒu ngang, ta in ®−îc ma trËn chÊm cña c¸c ký tù vµ pixel b»ng mùc lªn giÊy. Cã thÓ c¶i tiÕn thµnh c¸c lo¹i:

+ Cã nhiÒu lç phun theo chiÒu däc: in tõng dßng ®iÓm cña ma trËn vµ di chuyÓn ®Çu in theo chiÒu ngang, ta in ®−îc ma trËn ®iÓm.

+ Cã mét lç phun, di chuyÓn ®Çu in theo chiÒu ngang (gièng quÐt dßng cña mµn h×nh) hoÆc di chuyÓn giÊy theo chiÒu däc (gièng quÐt mµnh cña mµn h×nh) nh−ng tèc ®é in chËm. M¸y cã ®é ph©n gi¶i 300 chÊm/inch t−¬ng ®−¬ng m¸y in laser nh−ng h¬i mê h¬n v× giät mùc nhá.

Ngoµi nguyªn lý in kiÓu phun mùc theo tia nhá, ng−êi ta cßn chÕ t¹o ra m¸y in t¹o thµnh giät, bät hay bèc h¬i.

Page 177: vµ cÊu tróc m¸y tÝnh€¦ ·

177

7.5.3. M¸y in laser

Nguyªn t¾c in cña m¸y in laser nh− sau: Chïm tia laser m¶nh ®i qua bé ®iÒu chÕ ®Õn mÆt trèng cã phñ líp nh¹y quang b»ng selen ®Ó t¹o nªn h×nh ¶nh b»ng ®iÖn tÝch. Mùc d¹ng bét ®· tÝch ®iÖn ®−îc hót vµ b¸m vµo mÆt trèng mµ ®é ®Ëm nh¹t tïy thuéc vµo c−êng ®é ¸nh s¸ng ®· chiÕu. Bét mùc sÏ b¸m vµo giÊy tÝch ®iÖn víi ®iÖn thÕ cao, ng−îc dÊu víi trèng t¹o nªn h×nh ¶nh ng−îc víi h×nh ¶nh b»ng ®iÖn tÝch trªn trèng khi cho giÊy ®i qua trèng quay. Sau ®ã giÊy ®−îc ®−a qua mét trèng sÊy nãng ë nhiÖt ®é cao kho¶ng 1800C lµm h¹t mùc nãng ch¶y vµ b¸m ch¾c trªn giÊy t¹o thµnh h×nh ¶nh cÇn in. ViÖc ®iÒu chÕ chïm tia laser ®Ó chiÕu lªn mÆt trèng ®−îc thùc hiÖn b»ng mét g−¬ng quay. G−¬ng quay ë ®©y lµm chïm tia lÖch theo mét dßng, däc chiÒu dµi trèng. Khi trèng quay nã sÏ quÐt thµnh c¸c dßng liªn tiÕp trªn mÆt trèng gièng nh− quÐt mµnh trong truyÒn h×nh. Cã thÓ thay chïm tia laser trªn b»ng c¸c LED s¾p xÕp theo mét ma trËn ®Ó chiÕu s¸ng theo néi dung cÇn in, ®©y chÝnh lµ nguyªn t¾c ho¹t ®éng cña c¸c m¸y in cña h·ng OKI.

Page 178: vµ cÊu tróc m¸y tÝnh€¦ ·

178

Tµi liÖu tham kh¶oTµi liÖu tham kh¶oTµi liÖu tham kh¶oTµi liÖu tham kh¶o

1. V¨n ThÕ Minh. Kü thuËt Vi xö lý. NXB Gi¸o dôc, 1997.

2. Qu¸ch TuÊn Ngäc. LËp tr×nh hîp ng÷ vµ M¸y vi tÝnh IBM − PC. §¹i häc B¸ch khoa, Hµ Néi, 2004.

3. The 8086 Microprocessor Intel.

4. Microprocessors And Interfacing. Douglas V. Hall. Source: www.amazon.com/Microprocessors−Interfacing−Programming−Douglas−Hall/

5. MDA − 8086. Manual Midas Engineering Co., Ltd

Page 179: vµ cÊu tróc m¸y tÝnh€¦ ·

179

Môc lôcMôc lôcMôc lôcMôc lôc

Ch−¬ng 1. Ch−¬ng 1. Ch−¬ng 1. Ch−¬ng 1. Tæng quan vÒ vi xö lý vµ m¸y tÝnh ............................................................................................................................................4444 1.1. C¸c hÖ ®Õm vµ viÖc m· ho¸ th«ng tin...............................................4

1.1.1. C¸c hÖ ®Õm..........................................................................4 1.1.1.1. HÖ thËp ph©n..................................................................4 1.1.1.2. HÖ nhÞ ph©n....................................................................4 1.1.1.3. HÖ thËp lôc ph©n.............................................................5

1.1.2. ChuyÓn ®æi gi÷a c¸c hÖ ®Õm ....................................................5 1.1.3. C¸c phÐp to¸n sè häc víi sè hÖ nhÞ ph©n ..................................6 1.1.4. C¸c m· th−êng dïng trong m¸y tÝnh .........................................8

1.2. LÞch sö ph¸t triÓn cña m¸y tÝnh vµ bé vi xö lý ....................................9 1.3. CÊu tróc cña m¸y tÝnh dïng vi xö lý (hÖ vi xö lý)...............................11

1.3.1. Bé vi xö lý............................................................................11 1.3.2. Bé nhí ................................................................................12 1.3.3. M¹ch ghÐp nèi vµo/ra...........................................................12 1.3.4. Bus hÖ thèng........................................................................13

1.4. Kh¸i niÖm vÒ phÇn cøng, phÇn mÒm..............................................13 1.4.1. PhÇn cøng............................................................................13 1.4.2. PhÇn mÒm ...........................................................................13

Ch−¬ng 2. Ch−¬ng 2. Ch−¬ng 2. Ch−¬ng 2. Hä vi xö lý 80××××86 cña Intel ................................................................................................................................................................................ 16161616 2.1. Bé vi xö lý 8086 cña Intel ............................................................16

2.1.1. S¬ ®å khèi cña 8086.............................................................16 2.1.1.1. Khèi thùc hiÖn lÖnh........................................................16 2.1.1.2. Khèi giao tiÕp bus..........................................................17

2.1.2. C¸c thanh ghi cña 8086 ........................................................18 2.1.2.1. C¸c thanh ghi ®a n¨ng ...................................................19 2.1.2.2. C¸c thanh ghi ®o¹n........................................................19 2.1.2.3. Thanh ghi con trá vµ chØ sè ............................................20 2.1.2.4. Thanh ghi cê F..............................................................21

2.1.3. S¬ ®å ch©n vµ chøc n¨ng c¸c ch©n cña 8086...........................22 2.2. C¸c bé vi xö lý tiªn tiÕn cña Intel....................................................29

2.2.1. C¸c bé vi xö lý x86 ...............................................................29 2.2.2. C¸c bé vi xö lý kiÕn tróc NetBurst vµ Core cña Intel ..................33

Ch−¬ng 3. Ch−¬ng 3. Ch−¬ng 3. Ch−¬ng 3. LËp tr×nh hîp ng÷ .................................................................................................................................................................................................................................... 37373737 3.1. Tæng quan vÒ lËp tr×nh hîp ng÷.....................................................37

3.1.1. Có ph¸p cña hîp ng÷............................................................37 3.1.1.1. Tr−êng tªn....................................................................38

Page 180: vµ cÊu tróc m¸y tÝnh€¦ ·

180

3.1.1.2. Tr−êng m· lÖnh.............................................................39 3.1.1.3. Tr−êng to¸n h¹ng ..........................................................39 3.1.1.4. Tr−êng chó gi¶i .............................................................39

3.1.2. D÷ liÖu ch−¬ng tr×nh..............................................................40 3.1.3. BiÕn vµ h»ng ........................................................................40

3.1.3.1. BiÕn kiÓu byte ...............................................................40 3.1.3.2. BiÕn kiÓu tõ...................................................................41 3.1.3.3. BiÕn kiÓu m¶ng .............................................................41 3.1.3.4. H»ng cã tªn ..................................................................42

3.1.4. Khung cña mét ch−¬ng tr×nh hîp ng÷ .....................................42 3.1.4.1. Khai b¸o kiÓu bé nhí (.model) .........................................43 3.1.4.2. Khai b¸o kÝch th−íc ng¨n xÕp (.stack) ..............................43 3.1.4.3. Khai b¸o ®o¹n d÷ liÖu (.data) ...........................................44 3.1.4.4. Khai b¸o ®o¹n m· (.code) ...............................................44

3.1.5. C¸ch t¹o vµ ch¹y mét ch−¬ng tr×nh hîp ng÷............................44 3.2. C¸c chÕ ®é ®Þa chØ cña hä vi xö lý 80×86........................................45

3.2.1. ChÕ ®é ®Þa chØ thanh ghi (Register Addressing Mode) ................45 3.2.2. ChÕ ®é ®Þa chØ tøc thêi (Immediate Addressing Mode)................45 3.2.3. ChÕ ®é ®Þa chØ trùc tiÕp (Direct Addressing Mode).....................46 3.2.4. ChÕ ®é ®Þa chØ gi¸n tiÕp qua thanh ghi (Register Direct Addressing Mode)............................................................................................47 3.2.5. ChÕ ®é ®Þa chØ t−¬ng ®èi c¬ së (Based Relative Addressing Mode).......48 3.2.6. ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè (Indexed Relative Addressing Mode) ....49 3.2.7. ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè c¬ së (Based Indexed Relative Addressing Mode) ...........................................................................49

3.3. Mét sè hµm cña ng¾t 21H ............................................................50 3.3.1. LÖnh INT .............................................................................50 3.3.2. Hµm 1.................................................................................50 3.3.3. Hµm 4CH............................................................................51 3.3.4. Hµm 2.................................................................................51 3.3.5. Hµm 9.................................................................................52

3.4. C¸c nhãm lÖnh cña 8086 .............................................................54 3.4.1. Nhãm lÖnh dÞch chuyÓn d÷ liÖu...............................................54

3.4.1.1. LÖnh MOV (MOVE) .......................................................54 3.4.1.2. LÖnh OUT ....................................................................55 3.4.1.3. LÖnh IN ........................................................................56 3.4.1.4. LÖnh XCHG (exchange)..................................................56 3.4.1.5. LÖnh XLAT (translate byte to AL) ....................................56 3.4.1.6. LÖnh LAHF (Load AH from Flags) ...................................56 3.4.1.7. LÖnh LDS (Load Data Segment register)...........................57 3.4.1.8. LÖnh LES (Load Etra Segment register) ............................57

Page 181: vµ cÊu tróc m¸y tÝnh€¦ ·

181

3.4.1.9. LÖnh SAHF (Store AH in Flag register).............................57 3.4.2. Nhãm lÖnh sè häc.................................................................57

3.4.2.1. LÖnh ADD, SUB ...........................................................57 3.4.2.2. LÖnh ADC (ADD with Carry)...........................................58 3.4.2.3. LÖnh CBW (Convert Byte to Word)..................................59 3.4.2.4. LÖnh DEC (DECrement) .................................................59 3.4.2.5. DIV (DIVide)..................................................................59 3.4.2.6. LÖnh IDIV (Integer DIVide)..............................................60 3.4.2.7. LÖnh IMUL (Integer MULtiplycation) ................................60 3.4.2.8. LÖnh MUL (MULtiply) ....................................................60 3.4.2.9. LÖnh NEG (NEGate).......................................................61 3.4.2.10. LÖnh SBB (SuBtract with Borrow)..................................61

3.4.3. Nhãm lÖnh ®iÒu khiÓn rÏ nh¸nh..............................................62 3.4.3.1. Nhãm lÖnh nh¶y cã ®iÒu kiÖn..........................................62 3.4.3.2. LÖnh nh¶y kh«ng ®iÒu kiÖn (JuMP) .................................64 3.4.3.3. C¸c cÊu tróc lËp tr×nh .....................................................65

3.4.4. Nhãm lÖnh xö lý bit...............................................................77 3.4.4.1. C¸c lÖnh logic................................................................77 3.4.4.2. C¸c lÖnh dÞch vµ quay.....................................................80

3.4.4.3. øng dông cña c¸c lÖnh thao t¸c bit ..................................87 3.4.5. Nhãm lÖnh xö lý ®iÒu khiÓn....................................................91

3.4.5.1. ESC (ESCape) ...............................................................91 3.4.5.2. LÖnh HLT (HaLT)..........................................................91 3.4.5.3. LÖnh LOCK (kho¸ bus)...................................................92 3.4.5.4. LÖnh NOP (No OPeration) ..............................................92 3.4.5.5. LÖnh STI (SeT Interrupt flag)...........................................92 3.4.5.6. LÖnh WAIT ...................................................................92

3.4.6. Nhãm lÖnh xö lý chuçi...........................................................92 3.4.6.1. LÖnh MOVS/MOVSB/MOVSW (MOVeS/MOVeS Byte/ MOVeS Word) ...........................................................................92 3.4.6.2. LÖnh CMPS/CMPSB/CMPSW (COMPareS/ COMPareS Byte/ COMPareS Word) .............................................................93 3.4.6.3. LÖnh LODS/LODSB/LODSW (LOaDS/ LOaDS Byte/ LOaDS Word) ............................................................................93

3.5. Ng¨n xÕp vµ thñ tôc .....................................................................94 3.5.1. Ng¨n xÕp.............................................................................94

3.5.1.1. LÖnh PUSH (PUSH word to stack)...................................94 3.5.1.2. LÖnh PUSHF (PUSH Flag in to stack) ..............................94 3.5.1.3. LÖnh POP (Pop word of stack to destinnation) .................94 3.5.1.4. LÖnh POPF (POP word from top of stack to Flag register) ..95

Page 182: vµ cÊu tróc m¸y tÝnh€¦ ·

182

3.5.2. Thñ tôc................................................................................97 3.5.2.1. LÖnh CALL (gäi thñ tôc) .................................................98 3.5.2.2. LÖnh IRET (Interrupt RETurn) .........................................98 3.5.2.3. LÖnh RET (RETurn from procedure) ................................98

Ch−¬ng 4. Ch−¬ng 4. Ch−¬ng 4. Ch−¬ng 4. Bé nhí vµ hÖ thèng l−u tr÷................................................................................................................................................................ 102102102102 4.1. Nguyªn t¾c tæ chøc bé nhí .........................................................102 4.2. Bé nhí trong.............................................................................103

4.2.1. Bé nhí ROM (Read Only Memory) .......................................103 4.2.1. Bé nhí ROM (Read Only Memory) .......................................104

4.2.1.1. Nguyªn t¾c cÊu t¹o vµ ho¹t ®éng...................................104 4.2.1.2. Ph©n lo¹i ....................................................................105

4.2.2. RAM (Random Access Memory) ...........................................107 4.2.2.1. CÊu t¹o vµ nguyªn t¾c ho¹t ®éng...................................107 4.2.2.2. Ph©n lo¹i RAM............................................................110

4.2.3. GhÐp nèi 8086 víi c¸c vi m¹ch ROM27xxx vµ RAM62xxx.....110 4.2.3.1. CÊu tróc chung cña mét vi m¹ch nhí .............................110 4.2.3.2. Gi¶i m· ®Þa chØ cho bé nhí ...........................................111

4.3. HÖ thèng l−u tr÷ ngoµi................................................................116 4.3.1. Mét sè phÇn tö l−u tr÷ ®iÓn h×nh...........................................116

4.3.1.1. §Üa cøng (Hard Disk) ....................................................117 4.3.1.2. §Üa mÒm.....................................................................118 4.3.1.3. §Üa quang sè ...............................................................120

4.3.2. C¸c nguyªn t¾c tæ chøc hÖ thèng l−u tr÷................................121 4.3.2.1. Nguyªn t¾c tæ chøc hÖ thèng l−u tr÷ theo kiÓu RAID (Redundant Arrays of Inexpensive Disks) .....................................121 4.3.2.2. KÕt nèi gi÷a c¸c phÇn tö l−u tr÷ vµ CPU.........................123

Ch−¬ng 5. Ch−¬ng 5. Ch−¬ng 5. Ch−¬ng 5. Vµo, ra d÷ liÖu ................................................................................................................................................................................................................................................ 130130130130 5.1. C¸c tÝn hiÖu phôc vô trao ®æi d÷ liÖu ............................................130 5.2. Vµo/ra d÷ liÖu víi 8255A...........................................................131 5.2. Vµo/ra d÷ liÖu víi 8255A...........................................................132

5.2.1. S¬ ®å cÊu tróc, s¬ ®å ch©n vi m¹ch 8255A............................132 5.2.1.1. PhÇn ghÐp nèi víi vi xö lý.............................................132 5.2.1.2. PhÇn ghÐp nèi víi thiÕt bÞ ngoµi ....................................133 5.2.1.3. PhÇn c¸c m¹ch ®iÒu khiÓn néi bé ..................................134

5.2.2. C¸c lÖnh ghi/®äc c¸c cæng vµ thanh ghi ®iÒu khiÓn ................134 5.2.3. C¸c chÕ ®é ho¹t ®éng .........................................................135

5.2.3.1. ChÕ ®é 0 ....................................................................135 5.2.3.2. ChÕ ®é 1 ....................................................................136 5.2.3.3. ChÕ ®é 2 ....................................................................136

5.2.4. GhÐp nèi 8255 víi vi xö lý vµ thiÕt bÞ ngoµi ...........................137

Page 183: vµ cÊu tróc m¸y tÝnh€¦ ·

183

5.2.4.1. PhÇn ghÐp nèi víi vi xö lý.............................................137 5.2.4.2. PhÇn ghÐp nèi víi thiÕt bÞ ngoµi ....................................138

5.2.5. Mét sè vÝ dô lËp tr×nh víi 8255A ..........................................138 5.3. Vµo/ra d÷ liÖu b»ng DMA (DIRECT MEMORY ACCESS)...............142

5.3.1. Nguyªn t¾c trao ®æi d÷ liÖu víi thiÕt bÞ ngo¹i vi b»ng c¸ch truy cËp trùc tiÕp bé nhí............................................................................142 5.3.2. S¬ ®å khèi hÖ thèng trao ®æi kiÓu DMA ................................142 5.3.3. C¸c ph−¬ng thøc trao ®æi d÷ liÖu ..........................................143

Ch−¬ng 6. Ch−¬ng 6. Ch−¬ng 6. Ch−¬ng 6. Ng¾t vµ xö lý ng¾t ........................................................................................................................................................................................................................ 145145145145 6.1. Kh¸i niÖm vµ sù cÇn thiÕt ph¶i ng¾t CPU......................................145 6.2. Tæ chøc ng¾t ë 8086..................................................................145 6.3. §¸p øng cña CPU khi cã yªu cÇu ng¾t .........................................147 6.4. Vi m¹ch xö lý ng¾t 8259A ..........................................................150

6.4.1. C¸c khèi chøc n¨ng chÝnh cña PIC 8259A.............................151 6.4.2. C¸c tÝn hiÖu cña 8259A.......................................................152 6.4.3. LËp tr×nh cho PIC 8259A....................................................154

6.4.3.1.C¸c tõ ®iÒu khiÓn khëi ®Çu ICW .....................................154 6.4.3.2. C¸c tõ ®iÒu khiÓn ho¹t ®éng OCW ................................157

6.4.4. VÝ dô lËp tr×nh víi 8259A ....................................................160

Ch−¬ng 7. Ch−¬ng 7. Ch−¬ng 7. Ch−¬ng 7. C¸c thiÕt bÞ ngo¹i vi th«ng dông ................................................................................................................................ 163163163163 7.1. Bµn phÝm..................................................................................163

7.1.1. CÊu t¹o cña bµn phÝm .........................................................164 7.1.2. Ho¹t ®éng cña bµn phÝm .....................................................165

7.1.2.1. Xö lý sù kiÖn Ên phÝm...................................................165 7.1.2.2. T¹o ra m· ASCII .........................................................165

7.2. Chuét .......................................................................................166 7.2.1. Chuét c¬............................................................................166 7.2.2. Chuét quang ......................................................................168

7.3. C¸c thiÕt bÞ ®äc (vision): m¸y quÐt, chôp,... ...................................171 7.3.1. Bé ®äc quÐt........................................................................171 7.3.2. Bé ®äc quang vµ bé ®äc tõ...................................................171

7.4. Mµn h×nh ..................................................................................172 7.5. M¸y in ......................................................................................174

7.5.1. M¸y in cã bé ch÷ ®óc s½n (m¸y in ®Ëp) ..................................175 7.5.2. M¸y in ma trËn chÊm ..........................................................176 7.5.3. M¸y in laser........................................................................177

Tµi liÖu tham kh¶oTµi liÖu tham kh¶oTµi liÖu tham kh¶oTµi liÖu tham kh¶o.................................................................................................................................................................................................................................................................................... 178178178178

Môc lôcMôc lôcMôc lôcMôc lôc ................................................................................................................................................................................................................................................................................................................................................................ 179179179179

Page 184: vµ cÊu tróc m¸y tÝnh€¦ ·

184

ChÞu tr¸ch nhiÖm xuÊt b¶n:

Chñ tÞch H§QT kiªm Tæng Gi¸m ®èc NG¤ TRÇN ¸I

Phã Tæng Gi¸m ®èc kiªm Tæng biªn tËp nguyÔn quý thao

Tæ chøc b¶n th¶o vµ chÞu tr¸ch nhiÖm néi dung:

Chñ tÞch H§QT kiªm Gi¸m ®èc CTCP S¸ch §H–DN

trÇn nhËt t©n

Biªn tËp vµ söa b¶n in:

Ph¹m thÞ Ph−îng

Tr×nh bµy b×a:

l−u chÝ ®ång

ChÕ b¶n:

Thuû tiªn

gi¸o tr×nh Vi xö lý vµ cÊu tróc m¸y vi tÝnh M· sè: 7B678M7–DAI

In b¶n (Q§...............), khæ 16 x 24cm t¹i .................

Sè §KKH xuÊt b¶n192−2007/CXB/3−411/GD

In xong vµ nép l−u chiÓu th¸ng....... n¨m 2007.