Bai Giang VXL-VDK Chuan (2011-07-TACT-Ban Dep_ Link)

Embed Size (px)

Citation preview

K THUT MY TNH

VI X L VI IU KHINGio trnh dng cho h i hc chnh quy, o to theo h thng tn ch

Nguyn Tun Anh

2011

I HC K THUT CNG NGHIP

BI GING PHT CHO SINH VIN(LU HNH NI B)Theo chng trnh 150 TC thay 180 TC hoc tng ng S dng cho nm hc 2011 2012 Tn bi ging: Vi x l Vi iu khin S tn ch: 03

Thi nguyn, thng 7 nm 2011

MC LCCHNG 1. TNG QUAN V VI X L VI IU KHIN ...................... 91.1 GII THIU CHUNG V VI X L VI IU KHIN.....................................10 1.1.1 Tng quan ..............................................................................................................10 1.1.2 Lch s pht trin ca cc b x l........................................................................11 1.1.3 Vi x l v vi iu khin .......................................................................................12 1.1.4 ng dng ca Vi x l vi iu khin .................................................................13 1.2 Cu trc chung ca h vi x l...................................................................................15 1.2.1 Khi x l trung tm (CPU) ..................................................................................16 1.2.2 H thng bus..........................................................................................................17 1.3 nh dng d liu v biu din thng tin trong h vi x l vi iu khin ...........18 1.3.1 Cc h m ............................................................................................................18 1.3.2 M k t - Alphanumeric CODE (ASCII, EBCDIC)............................................20 1.3.3 Cc php ton s hc trn h m nh phn ..........................................................22

CHNG 2. H VI X L INTEL 80x86....................................................... 232.1 Cu trc phn cng ca b vi x l 8086 ..................................................................24 2.1.1 Tng quan ..............................................................................................................24 2.1.2 Cu trc bn trong v s hot ng.......................................................................24 2.1.3 M t chc nng cc chn .....................................................................................31 2.2 Ch a ch...............................................................................................................31 2.2.1 Khi nim ch a ch .......................................................................................31 2.2.2 Cc ch a ch..................................................................................................34 2.3 Tp lnh Assembly ......................................................................................................37 2.3.1 Gii thiu chung ....................................................................................................37 2.3.2 Cc nhm lnh .......................................................................................................38 2.4 Lp trnh hp ng (Assembly) cho vi x l 80x86....................................................54 2.4.1 Gii thiu chung v hp ng .................................................................................54 2.4.2 Cc bc khi lp trnh ...........................................................................................55 2.4.3 Cu trc chung ca chng trnh hp ng ............................................................57 2.4.4 Cc cu trc iu khin c bn..............................................................................69 2.4.5 Ngt trong Assembly .............................................................................................72 2.4.6 Cc v d................................................................................................................74 2.5 Ghp ni b nh v thit bi ngoi vi ..........................................................................80 2.5.1 Ghp ni b nh ....................................................................................................80 2.5.2 Gii m a ch.......................................................................................................81 2.5.3 Ghp ni thit b ngoi vi ......................................................................................84 2.5.4 Cc kiu giao tip vo / ra .....................................................................................84 2.5.5 Gii m a ch cho thit b vo / ra.......................................................................84 2.5.6 Cc mch cng n gin .......................................................................................85 Vi mch cht 74LS373:.........................................................................................................85 2.6 Cu hi v bi tp........................................................................................................86

CHNG 3. H VI IU KHIN 8051........................................................... 893.1 Gii thiu chung ..........................................................................................................90 3.1.1 ng dng ca vi iu khin...................................................................................91 3.1.2 Hot ng ca vi iu khin..................................................................................91 3.1.3 Cu trc chung ca vi iu khin ..........................................................................92 3.2 Kin trc vi iu khin 8051.......................................................................................97 3.2.1 Chun 8051............................................................................................................97 3.2.2 Chn vi iu khin 8051........................................................................................99 3.2.3 Cng vo/ra .........................................................................................................100 3.2.4 T chc b nh 8051...........................................................................................104

3.2.5 Cc thanh ghi chc nng c bit (SFRs - Special Function Registers) ............ 109 3.2.6 B m v b nh thi ....................................................................................... 113 3.2.7 Truyn thng khng ng b (UART)................................................................ 113 3.2.8 Ngt vi iu khin 8051 ...................................................................................... 114 3.3 Lp trnh hp ng cho 8051 ..................................................................................... 114 3.3.1 Cc ch a ch ............................................................................................... 114 3.3.2 Tp lnh trong 8051 ............................................................................................ 116 3.3.3 Cu trc chung chng trnh hp ng cho 8051................................................. 123 3.4 B m v b nh thi ............................................................................................. 126 3.5 Truyn thng ni tip................................................................................................ 133 3.6 X l ngt ................................................................................................................... 140 3.7 Cu hi v bi tp cui chng................................................................................ 147

CHNG 4. NG DNG ................................................................................. 1514.1 Nhp nhy dy LED n .......................................................................................... 152 4.2 Timer .......................................................................................................................... 155 4.3 S dng Timer T2 ..................................................................................................... 157 4.4 Dng ngt ngoi......................................................................................................... 158 4.5 Lp trnh ngt ngoi theo sn xung. ................................................................... 159 4.6 S dng LED 7 thanh ............................................................................................... 160 4.6.1 Hin th s trn 1 LED 7 thanh ........................................................................... 160 4.6.2 Hin th trn nhiu LED 7 thanh ......................................................................... 161 4.7 Thng bo bng vn bn trn mn hnh LCD........................................................ 164 4.8 Nhn d liu qua UART........................................................................................... 169 4.9 Truyn d liu qua UART........................................................................................ 170 4.10 Chng trnh con phc v truyn thng ni tip................................................... 172 4.11 Truyn thng UART cho 8051 bng phn mm..................................................... 172 4.12 Ghp ni 8051 vi ADC0804, chuyn i ADC 8-bit ............................................. 175 4.13 Ghp ni vi iu khin vi bn phm....................................................................... 177 4.14 Ghp ni vi iu khin vi step motor..................................................................... 179

CHNG 5. CC H VI IU KHIN TIN TIN................................... 1915.1 Atmel AVR................................................................................................................. 192 5.1.1 Lch s h AVR .................................................................................................. 192 5.1.2 Tng quan v thit b........................................................................................... 192 5.1.3 Kin trc thit b.................................................................................................. 193 5.1.4 Program Memory (Flash) .................................................................................... 193 5.1.5 EEPROM............................................................................................................. 193 5.1.6 Chng trnh thc thi .......................................................................................... 194 5.1.7 Tp lnh............................................................................................................... 194 5.1.8 Tc MCU........................................................................................................ 195 5.1.9 Nhng c tnh .................................................................................................... 195 5.2 Vi iu khin PIC ...................................................................................................... 197 5.3 ARM ........................................................................................................................... 200

Ti liu tham kho ................................................................................................ 205 PH LC A: Tp lnh trong 8051....................................................................... 206 PH LC B: Chi tit cc thanh ghi chc nng trong 8051 ................................. 210 PH LC C: Ngt ................................................................................................ 216 Danh mc hnh nh ............................................................................................... 218 Danh mc m ngun ............................................................................................. 220 Danh mc bng ..................................................................................................... 220 Ch mc ....................................................................................................... 221

I HC THI NGUYN TRNG I HC K THUT CNG NGHIP

CNG HO X HI CH NGHA VIT NAM c lp - T do - Hnh phc

CHNG TRNH GIO DC I HCNGNH O TO: IN IN T, SPKT IN TIN, C IN T CHUYN NGNH: KHI NGNH IN IN T

CNG CHI TIT HC PHN: VI X L VI IU KHIN(Hc phn bt buc) 1. Tn hc phn: Vi x l vi iu khin. 2 . S tn ch: 03; 3(3; 1,5; 6)/12 3. Trnh cho sinh vin nm th: 3 (in, in t, SPKT in, SPKT Tin) hoc 4 (C in t). 4. Phn b thi gian - Ln lp l thuyt: 3 (tit/tun) x 12 (tun) = 36 tit. - Tho lun: 1,5 (tit/tun) x 12 (tun) = 18 tit. 5. Cc hc phn hc trc K thut in t s. 6. Hc phn thay th, hc phn tng ng Vi x l vi iu khin (trong cc chng trnh 180 TC v 260 VHT) 7. Mc tiu ca hc phn Sau khi hc xong hc phn sinh vin phi nm c cu trc phn cng ca cc b vi x l vi iu khin tiu biu: x86, 8051; T chc b nh, tp lnh, ch a ch v lp trnh cho chng; Bit cch ghp ni vi b nh v thit b ngoi vi; Bit khai thc kh nng ngt v nh thi. C kh nng thit k v xy dng modul (bao gm c phn cng v phn mm) s dng vi iu khin cho bi ton c th. 8. M t vn tt ni dung hc phn Tng quan v cc h m v biu din thng tin trong cc h vi x l vi iu khin. Vi x l: Tng quan v kin trc h vi x l; t chc phn cng ca CPU h Intel 80x86, cc ch nh a ch, tp lnh, lp trnh hp ng (assembly) cho 80x86 vi nhng bi ton n gin; mt s vi mch ph tr trong h vi x l. Vi iu khin: Cu trc h vi iu khin onchip MCS 8051; lp trnh hp ng cho vi iu khin; hot ng nh thi, ngt v truyn thng ni tip; gii thiu mt s h vi x l thng dng khc. Gii thiu mt s bi ton ng dng tiu biu.

9. Nhim v ca sinh vin 1. D lp 80 % tng s thi lng ca hc phn. 2. Chun b tho lun. 3. Bi tp, Bi tp ln (di): Khng 10. Ti liu hc tp - Sch, gio trnh chnh: [1] Bi ging Vi x l vi iu khin - Sch tham kho: [1] Vn Th Minh, K thut vi x l, NXB KHKT, 1997. [2] Tng Vn On, H vi iu khin 8051, NXB KH&KT, 2005. [3] Nguyn Tng Cng, Phan Quc Thng, Cu trc v lp trnh h vi iu khin 8051, NXB KH&KT, 2004. [4] Michael Hordeski, Personal Computer Interfaces, Mc. Graw Hill, 1995.[5] http://picat.dieukhien.net

11. Tiu chun nh gi sinh vin v thang im 11.1. Cc hc phn l thuyt Tiu chun nh gi 1. Chuyn cn; 2. Tho lun, bi tp; 3. Bi tp ln (di); 4. Kim tra gia hc phn; 5. Thi kt thc hc phn; 6. Khc. Thang im - im nh gi b phn chm theo thang im 10 vi trng s nh sau: + Kim tra gia hc phn: 20 %. + im thi kt thc hc phn: 80 %.

12. Ni dung chi tit hc phn v lch trnh ging dy Ngi bin son: ThS. Nguyn Tun Anh ThS. Nguyn Tun Linh ThS. Nguyn Vn Huy Th.S Tng Cm Nhung Th.S Phng Th Thu Hin ThS. Nguyn Tin Duy Ti liu hc tp, tham kho Hnh thc hc

Tun th

Ni dung Chng I: Tng quan v vi x l vi iu khin 1.1. Gii thiu chung v vi x l vi iu khin 1.1.1. Tng quan 1.1.2. Lch s pht trin ca cc b x l 1.1.3. Vi x l v vi iu khin 1.2. Cu trc chung ca h vi x l 1.2.1. Khi x l trung tm (CPU) 1.2.2. B nh (Memory) 1.2.3. Khi phi ghp vo/ra (I/O) 1.2.4. H thng bus 1.3. nh dng d liu v biu din thng tin trong h vi x l vi iu khin 1.3.1. Cc h m 1.3.2. Biu din s v k t 1.3.3. Cc php ton s hc trn h m nh phn Chng II: H vi x l Intel 80x86 2.1. Cu trc phn cng ca b vi x l 8086 2.1.1. Tng quan 2.1.2. Cu trc bn trong v s hot ng 2.1.3. Cc ch a ch 2.2. Tp lnh 2.2.1. Gii thiu chung 2.2.2. Cc nhm lnh 2.3. Biu thi gian ghi/c 2.4. Lp trnh hp ng (Assembly) cho vi x l 80x86 2.4.1. Gii thiu chung v hp ng 2.4.2. Cu trc ca chng trnh hp ng

1

[1] - [4]

Ging

2

[1] - [4]

Ging

3

[1] - [4]

Ging

4

[1] - [4]

Ging

5

6

7 8 9 10 11 12 13 14 15

2.4.3. Cc cu trc iu khin c bn 2.4.4. Cc bc khi lp trnh 2.4.5. Cc bi tp v d Tho lun Chng III: H vi iu khin onchip MCS 8051 3.1. Gii thiu chung v vi iu khin 3.1.1. Gii thiu chung 3.1.2. Khi nim vi iu khin 3.1.3. Cu trc chung ca vi iu khin 3.2. Kin trc vi iu khin 8051 Kin trc vi iu khin 8051 (tip) Kim tra gia k 3.3. Tp lnh 8051 v lp trnh hp ng cho 8051 3.3.1. Tp lnh 8051 3.3.2. Thnh phn ngn ng assembly 3.4. Kin trc vi iu khin 8051 Tho lun Kin trc vi iu khin 8051 (tip) Chng IV: ng dng Tho lun Chng V: Cc h VK tin tin Tho lun

[1] - [4]

Ging

[1] - [4]

Ging

[1] - [4] [1] - [4] [1] - [4] [1] - [4] [1] - [4] [1] - [4] [1] - [4]

Ging Ging Tho lun Ging Tho lun Ging Tho lun

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

CHNG 1. TNG QUAN V VI X L VI IU KHINMc tiu: Gip sinh vin hiu v lch s ra i ca h vi x l vi iu khin; khi nim, cu to v nguyn l ca h vi x l vi iu khin; n li kin thc v cc h thng s m. Tm tt chng: Chng chia lm 3 phn: Gii thiu chung v vi x l vi iu khin Tng quan Lch s pht trin ca cc b x l Vi x l v vi iu khin Cu trc chung ca h vi x l Khi x l trung tm (CPU) B nh (Memory) Khi phi ghp vo/ra (I/O) H thng bus nh dng d liu v biu din thng tin trong h vi x l vi iu khin Cc h m Biu din s v k t Cc php ton s hc trn h m nh phn

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

9

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.1 GII THIU CHUNG V VI X L VI IU KHIN1.1.1 Tng quan Vi x l (vit tt l P hay uP), i khi cn c gi l b vi x l, l mt linh kin in t c ch to t cc tranzito thu nh tch hp ln trn mt vi mch tch hp n. Khi x l trung tm (CPU) l mt b vi x l c nhiu ngi bit n nhng ngoi ra nhiu thnh phn khc trong my tnh cng c b vi x l ring ca n, v d trn card mn hnh (video card) chng ta cng c mt b vi x l.

Hnh 1-1.B vi x l Intel 80486DX2

Trc khi xut hin cc b vi x l, cc CPU c xy dng t cc mch tch hp c nh ring bit, mi mch tch hp ch cha khong vo chc tranzito. Do , mt CPU c th l mt bng mch gm hng ngn hay hng triu vi mch tch hp. Ngy nay, cng ngh tch hp pht trin, mt CPU c th tch hp ln mt hoc vi vi mch tch hp c ln, mi vi mch tch hp c ln cha hng ngn hoc hng triu tranzito. Nh cng sut tiu th v gi thnh ca b vi x l gim ng k. Vi iu khin l mt my tnh c tch hp trn mt chp, n thng c s dng iu khin cc thit b in t. Vi iu khin, thc cht, l mt h thng bao gm mt vi x l c hiu sut dng v gi thnh thp (khc vi cc b vi x l a nng dng trong my tnh) kt hp vi cc khi ngoi vi nh b nh, cc m un vo/ra, cc m un bin i s sang tng t v tng t sang s,... my tnh th cc m un thng c xy dng bi cc chp v mch ngoi. Vi iu khin thng c dng xy dng cc h thng nhng. N xut hin kh nhiu trong cc dng c in t, thit b in, my git, l vi sng, in thoi, u c DVD, thit b a phng tin, dy chuyn t ng, v.v. Hu ht cc vi iu khin ngy nay c xy dng da trn kin trc Harvard, kin trc ny nh ngha bn thnh phn cn thit ca mt h thng nhng. Nhng thnh phn ny l li CPU, b nh chng trnh (thng thng l ROM hoc b nh Flash), b nh d liu (RAM), mt hoc vi b nh thi v cc cng vo/ra giao tip vi cc thit b ngoi vi v cc mi trng bn ngoi - tt c cc khi ny c thit k trong mt vi mch tch hp. Vi iu khin khc vi cc b vi x l a nng ch l n c th hot ng ch vi vi vi mch h tr bn ngoi.

10

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.1.2 Lch s pht trin ca cc b x l

Hnh 1-2. Lch s pht trin ca VXL

- Th h 1 (1971 - 1973): vi x l 4 bit, i din l 4004, 4040, 8080 (Intel) hay IPM-16 (National Semiconductor). + di word thng l 4 bit (c th ln hn). + Tc 10 - 60 s / lnh vi tn s xung nhp 0.1 - 0.8 MHz. + Tp lnh n gin v phi cn nhiu vi mch ph tr. - Th h 2 (1974 - 1977): vi x l 8 bit, i din l 8080, 8085 (Intel) hay Z80 . + Tp lnh phong ph hn. + a ch c th n 64 KB. Mt s b vi x l c th phn bit 256 a ch cho thit b ngoi vi. + S dng cng ngh NMOS hay CMOS. + Tc 1 - 8 s / lnh vi tn s xung nhp 1 - 5 MHz - Th h 3 (1978 - 1982): vi x l 16 bit, i din l 68000/68010 (Motorola) hay 8086/ 80286/ 80386 (Intel) + Tp lnh a dng vi cc lnh nhn, chia v x l chui. + a ch b nh c th t 1 - 16 MB v c th phn bit ti 64KB a ch cho ngoi vi + S dng cng ngh HMOS. + Tc 0.1 - 1 s / lnh vi tn s xung nhp 5 - 10 MHz. - Th h 4: vi x l 32 bit 68020/68030/68040/68060 (Motorola) hay 80386/80486 (Intel) v vi x l 32 bit Pentium (Intel) + Bus a ch 32 bit, phn bit 4 GB b nh. + C th dng thm cc b ng x l (coprocessor). + C kh nng lm vic vi b nh o. + C cc c ch pipeline, b nh cache. + S dng cng ngh HCMOS. - Th h 5: vi x l 64 bitB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

11

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.1.3 Vi x l v vi iu khin Khi nim vi x l (microprocessor) v vi iu khin (microcontroller). V c bn hai khi nim ny khng khc nhau nhiu, vi x l l thut ng chung dng cp n k thut ng dng cc cng ngh vi in t, cng ngh tch hp v kh nng x l theo chng trnh vo cc lnh vc khc nhau. Vo nhng giai on u trong qu trnh pht trin ca cng ngh vi x l, cc chip (hay cc vi x l) c ch to ch tch hp nhng phn cng thit yu nh CPU cng cc mch giao tip gia CPU v cc phn cng khc. Trong giai on ny, cc phn cng khc (k c b nh) thng khng c tch hp trn chip m phi ghp ni thm bn ngoi. Cc phn cng ny c gi l cc ngoi vi (Peripherals). V sau, nh s pht trin vt bc ca cng ngh tch hp, cc ngoi vi cng c tch hp vo bn trong IC v ngi ta gi cc vi x l c tch hp thm cc ngoi vi l cc vi iu khin. Vi x l c cc khi chc nng cn thit ly d liu, x l d liu v xut d liu ra ngoi sau khi x l. V chc nng chnh ca Vi x l chnh l x l d liu, chng hn nh cng, tr, nhn, chia, so snh.v.v... Vi x l khng c kh nng giao tip trc tip vi cc thit b ngoi vi, n ch c kh nng nhn v x l d liu m thi. vi x l hot ng cn c chng trnh km theo, cc chng trnh ny iu khin cc mch logic v t vi x l x l cc d liu cn thit theo yu cu. Chng trnh l tp hp cc lnh x l d liu thc hin tng lnh c lu tr trong b nh, cng vic thc hnh lnh bao gm: nhn lnh t b nh, gii m lnh v thc hin lnh sau khi gii m. thc hin cc cng vic vi cc thit b cui cng, chng hn iu khin ng c, hin th k t trn mn hnh .... i hi phi kt hp vi x l vi cc mch in giao tip vi bn ngoi c gi l cc thit b I/O (nhp/xut) hay cn gi l cc thit b ngoi vi. Bn thn cc vi x l khi ng mt mnh khng c nhiu hiu qu s dng, nhng khi l mt phn ca mt my tnh, th hiu qu ng dng ca Vi x l l rt ln. Vi x l kt hp vi cc thit b khc c s trong cc h thng ln, phc tp i hi phi x l mt lng ln cc php tnh phc tp, c tc nhanh. Chng hn nh cc h thng sn xut t ng trong cng nghip, cc tng i in thoi, hoc cc robot c kh nng hot ng phc tp v.v... B Vi x l c kh nng vt bc so vi cc h thng khc v kh nng tnh ton, x l, v thay i chng trnh linh hot theo mc ch ngi dng, c bit hiu qu i vi cc bi ton v h thng ln. Tuy nhin i vi cc ng dng nh, tm tnh ton khng i hi kh nng tnh ton ln th vic ng dng vi x l cn cn nhc. Bi v h thng d ln hay nh, nu dng vi x l th cng i hi cc khi mch in giao tip phc tp nh nhau. Cc khi ny bao gm b nh cha d liu v chng trnh thc hin, cc mch in giao tip ngoi vi xut nhp v iu khin tr li, cc khi ny cng lin kt vi vi x l th mi thc hin c 12B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

cng vic. kt ni cc khi ny i hi ngi thit k phi hiu bit tinh tng v cc thnh phn vi x l, b nh, cc thit b ngoi vi. H thng c to ra kh phc tp, chim nhiu khng gian, mch in phc tp v vn chnh l trnh ngi thit k. Kt qu l gi thnh sn phm cui cng rt cao, khng ph hp p dng cho cc h thng nh. V mt s nhc im trn nn cc nh ch to tch hp mt t b nh v mt s mch giao tip ngoi vi cng vi vi x l vo mt IC duy nht c gi l Microcontroller-Vi iu khin. Vi iu khin c kh nng tng t nh kh nng ca vi x l, nhng cu trc phn cng dnh cho ngi dng n gin hn nhiu. Vi iu khin ra i mang li s tin li i vi ngi dng, h khng cn nm vng mt khi lng kin thc qu ln nh ngi dng vi x l, kt cu mch in dnh cho ngi dng cng tr nn n gin hn nhiu v c kh nng giao tip trc tip vi cc thit b bn ngoi. Vi iu khin tuy c xy dng vi phn cng dnh cho ngi s dng n gin hn, nhng thay vo li im ny l kh nng x l b gii hn (tc x l chm hn v kh nng tnh ton t hn, dung lng chng trnh b gii hn). Thay vo , Vi iu khin c gi thnh r hn nhiu so vi vi x l, vic s dng n gin, do n c ng dng rng ri vo nhiu ng dng c chc nng n gin, khng i hi tnh ton phc tp. Vi iu khin c ng dng trong cc dy chuyn t ng loi nh, cc robot c chc nng n gin, trong my git, t v.v... Nm 1976 Intel gii thiu b vi iu khin (microcontroller) 8748, mt chip tng t nh cc b vi x l v l chip u tin trong h MCS-48. phc tp, kch thc v kh nng ca Vi iu khin tng thm mt bc quan trng vo nm 1980 khi intel tung ra chip 8051, b Vi iu khin u tin ca h MCS-51 v l chun cng ngh cho nhiu h Vi iu khin c sn xut sau ny. Sau rt nhiu h Vi iu khin ca nhiu nh ch to khc nhau ln lt c a ra th trng vi tnh nng c ci tin ngy cng mnh. Trong ti liu ny, ranh gii gia hai khi nim vi x l v vi iu khin thc s khng cn phi phn bit r rng. Chng ti s dng thut ng vi x l khi cp n cc khi nim c bn ca k thut vi x l ni chung v s dng thut ng vi iu khin khi i su nghin cu mt h chip c th. 1.1.4 ng dng ca Vi x l vi iu khin Vi x l, chnh l chip ca cc loi my tnh ngy nay, nn hn cc bn bit rt r n c nhng ng dng g. y, ti ch ni n ng dng ca vi iu khin. Vi iu khin c th dng trong thit k cc loi my tnh nhng. My tnh nhng c trong hu ht cc thit b t ng, thng minh ngy nay. Chng ta c th dng vi iu khin thit k b iu khin cho cc sn phm nh:

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

13

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

Trong cc sn phm dn dng: o Nh thng minh: Ca t ng Kha s T ng iu tit nh sng thng minh (bt/tt n theo thi gian, theo cng nh sng,...) iu khin cc thit b t xa (qua iu khin, qua ting v tay,...) iu tit hi m, iu tit nhit , iu tit khng kh, gi H thng v sinh thng minh,... o Trong qung co: Cc loi bin qung co nhy ch Qung co ma trn LED (mt mu, 3 mu, a mu) iu khin my cun bt qung co,... o Cc my mc dn dng My iu tit m cho vn cy Bung p trng g/vt ng h s, ng h s c iu khin theo thi gian o Cc sn phm gii tr My nghe nhc My chi game u thu k thut s, u thu set-top-box,... Trong cc thit b y t: o My mc thit b h tr: my o nhp tim, my o ng huyt, my o huyt p, in tim , in no , o My ct/mi knh o My chp chiu (city, X-quang,...) Cc sn phm cng nghip: o o o o o o o o o o iu khin ng c iu khin s (PID, m,...) o lng (o in p, o dng in, p sut, nhit ,...) Cn bng ti, cn toa xe, cn t,... My cn thp: iu khin ng c my cn, iu khin my qun thp,.. Lm b iu khin trung tm cho RoBot n nh tc ng c m sn phm ca 1 nh my, x nghip, My vn hnh t ng (dng CNC) ...

14

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.2 Cu trc chung ca h vi x lS khi mt my tnh c in

Hnh 1-3. S khi mt my tnh c in

- ALU (n v logic s hc): thc hin cc bi ton cho my tnh bao gm: +, *, /,-, php ton logic, - Control (iu khin): iu khin, kim sot cc ng d liu gia cc thnh phn ca my tnh. - Memory (b nh): lu tr chng trnh hay cc kt qu trung gian. - Input (nhp), Output (Xut): xut nhp d liu (cn gi l thit b ngoi vi). V c bn kin trc ca mt vi x l gm nhng phn cng sau: - n v x l trung tm CPU (Central Processing Unit). Cc b nh (Memories). Cc cng vo/ra (song song (Parallel I/O Ports), ni tip (Serial I/O Ports)) Cc b m/b nh thi (Timers).

- H thng BUS (a ch, d liu, iu khin) Ngoi ra vi mi loi vi iu khin c th cn c th c thm mt s phn cng khc nh b bin i tng t-s ADC, b bin i s-tng t DAC, cc mch iu ch dng sng WG, iu ch rng xung PWMB no ca mi vi x l chnh l CPU, cc phn cng khc ch l cc c quan chp hnh di quyn ca CPU. Mi c quan ny u c mt c ch hot ng nht nh m CPU phi tun theo khi giao tip vi chng.

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

15

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

Hnh 1-4. S khi h vi x l

c th giao tip v iu khin cc c quan chp hnh (cc ngoi vi), CPU s dng 03 loi tn hiu c bn l tn hiu a ch (Address), tn hiu d liu (Data) v tn hiu iu khin (Control). V mt vt l th cc tn hiu ny l cc ng nh dn in ni t CPU n cc ngoi vi hoc thm ch l gia cc ngoi vi vi nhau. Tp hp cc ng tn hiu c cng chc nng gi l cc bus. Nh vy ta c cc bus a ch, bus d liu v bus iu khin. 1.2.1 Khi x l trung tm (CPU) CPU c cu to gm c n v x l s hc v lgic (ALU), cc thanh ghi, cc khi lgic v cc mch giao tip. Chc nng ca CPU l tin hnh cc thao tc tnh ton x l, a ra cc tn hiu a ch, d liu v iu khin nhm thc hin mt nhim v no do ngi lp trnh a ra thng qua cc lnh (Instructions).

16

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

Hnh 1-5. Khi x l trung tm

1.2.2 H thng bus Bus a ch - Address bus L cc ng tn hiu song song 1 chiu ni t CPU n b nh rng bus: l s cc ng tn hiu, c th l 8, 18, 20, 24, 32 hay 64. CPU gi gi tr a ch ca nh cn truy nhp (c/ghi) trn cc ng tn hiu ny. 1 CPU vi n ng a ch s c th a ch ho c 2n nh. V d, 1 Cpu c 16 ng a ch c th a ch ho c 216 hay 65,536 (64K) nh. Bus d liu - Data bus rng Bus: 4, 8, 16, 32 hay 64 bits L cc ng tn hiu song song 2 chiu, nhiu thit b khc nhau c th c ni vi bus d liu; nhng ti mt thi im, ch c 1 thit b duy nht c th c php a d liu ln bus d liu. Bt k thit b no c kt ni n bus d liu phi c u ra dng 3 trng thi, sao cho n c th trng thi treo (tr khng cao) nu khng c s dng. Bus iu khin - Control bus Bao gm 4 n 10 ng tn hiu song song. CPU gi tn hiu ra bus iu khin cho php cc u ra ca nh hay cc cng I/O c a ch ho. Cc tn hiu iu khin thng l: c/ ghi b nh memory read, memory write, c/ ghi cng vo/ra - I/O read, I/O write. V d, c 1 byte d liu t nh s cn n cc hot ng sau:B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

17

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

CPU a ra a ch ca nh cn c ln bus a ch. CPU a ra tn hiu c b nh - Memory Read trn bus iu khin. Tn hiu iu khin ny s cho php thit b nh c a ch ho a byte d liu ln bus d liu. Byte d liu t nh s c truyn ti qua bus d liu n CPU.

1.3 nh dng d liu v biu din thng tin trong h vi x l vi iu khin1.3.1 Cc h m H thp phn - Decimal H nh phn - Binary H16 - Hexadecimal M BCD (standard BCD, gray code): (Binary Coded Decimal) Trong thc t, i vi mt s ng dng nh m tn, o in p, ng ra dng s thp phn, ta dng m BCD. M BCD dng 4 bit nh phn m ho cho mt s thp phn 0..9. Nh vy, cc s hex A..F khng tn ti trong m BCD. M BCD gm c 2 loi: - M BCD khng nn (unpacked): biu din mt s BCD bng 8 bit nh phn - M BCD nn (packed): biu din mt s BCD bng 4 bit nh phn VD: S thp phn 5 2 9 S BCD khng nn 0000 0101b 0000 0010b 0000 1001b S BCD nn 0101b 0010b 1001b M hin th 7 on (7-segment display code)

Hnh 1-6.LED 7 thanh v cch m ha

18

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

Cc m h m thng dng H 10 H 2 H 8 H 16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 A B C D E F Binary-Coded Decimal 8421 BCD EXCESS-3 0000 0011 0011 0001 0011 0100 0010 0011 0101 0011 0011 0110 0100 0011 0111 0101 0011 1000 0110 0011 1001 0111 0011 1010 1000 0011 1011 1001 0011 1100 0001 0000 0100 0011 0001 0001 0100 0100 0001 0010 0100 0101 0001 0011 0100 0110 0001 0100 0100 0111 0001 0101 0100 1000 Gray Code 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 7-Segment abcdefg Display 111111 0 011000 1 110110 2 111100 3 011001 4 101101 5 101111 6 111000 7 111111 8 111001 9 111110 A 001111 B 000110 C 011110 D 110111 E 100011 F

Bng 1-1. Gi tr tng ng gia cc h s

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

19

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.3.2 M k t - Alphanumeric CODE (ASCII, EBCDIC)

Hnh 1-7. Bng m ASCII

20

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

Hnh 1-8. Bng m ASCII c c k t trong phn m rng

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

21

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.3.3 Cc php ton s hc trn h m nh phn Php cng nh phn Vo Ra B BIN D BOUT 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 Php tr nh phn Vo Ra B BIN D BOUT 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1

A 0 0 0 0 1 1 1 1

A 0 0 0 0 1 1 1 1

Php tr nh phn, chnh l php cng nh phn vi s b 2 ca s tr, trng hp kt qu dng:

Trng hp kt qu m:

Php nhn, php chia, ngh sinh vin t nghin cu.

22

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

CHNG 2. H VI X L INTEL 80x86Mc tiu: Hiu c cu trc phn cng ca h vi x l; hiu v vn dng c cc ch a ch; nm c tp lnh v lp trnh cho h vi x l 80x86 Tm tt chng: Cu trc phn cng ca b vi x l 8086 Ch a ch Tp lnh Cc mch ph tr Biu thi gian ghi/c Lp trnh hp ng (Assembly) cho vi x l 80x86

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

23

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

2.1 Cu trc phn cng ca b vi x l 80862.1.1 Tng quan

Hnh 2-1.Tng quan v phn cng b x l

Control Unit (CU) to ra tt c cc tn hiu iu khin trong CPU. N khi to cc thanh ghi khi m ngun, to ra cc tn hiu ly lnh cho ALU. Khi iu khin c th c thc hin hon ton bi phn cng (iu khin cng, v d nh s dng mt b m trng thi v mt mng logic kh lp trinh) hay kt hp gia cc lnh phn mm (vi lnh c lu tr trong CPU) v phn cng (b iu khin vi chng trnh. C hai h vi x l Intel 8086 v Motorola 68000 u s dng cc b iu khin vi chng trnh. Registers l cc b nh nh, nhanh, thng c s dng lu d liu v a ch gn vi (tng ng vi) cc m lnh ca chng trnh. ALU thc hin cc php ton s hc v logic 2.1.2 Cu trc bn trong v s hot ng Trong s khi Hnh 2-2.S hot ng ca CPU ta thy trong CPU 8086 c hai khi chnh: khi phi ghp bus (bus interface unit, BIU) v khi thc hin lnh (execution unit, EU). Vic chia CPU thnh hai phn ng thi c lin h vi nhau qua m lnh lm tng ng k tc x l ca CPU. Cc bus bn trong CPU c nhim v chuyn ti tn hiu ca cc khi khc. Trong s cc bus c bus d liu 16 bit ca ALU, bus cc tn hiu iu khin EU v bus trong ca h thng BIU. Trc khi i ra bus ngoi hoc i vo bus trong ca b vi x l, cc tn hiu truyn trn bus thng c cho i qua cc b m nng cao tnh tng thch cho ni ghp hoc nng cao kh nng phi ghp. 24B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Hnh 2-2.S hot ng ca CPU

BIU c nhim v a ra a ch, c m lnh t b nh, c/ghi d liu t/vo cng hoc b nh. Bn trong BIU cn c b nh m lnh (cn gi l hng i lnh) dng cha cc lnh c c nm sn ch EU x l. EU c nhim v cung cp a ch cho BIU khi ny c lnh v d liu, cn bn thn n th gii m lnh v thc hin lnh. M lnh c vo t b nh c a n u vo ca b gii m (nm trong khi iu khin CU), cc thng tin thu c t u ra ca b gii m s c a n mch to xung iu khin to ra cc dy xung khc nhau (ty tng lnh) iu khin hot ng ca cc b phn bn trong v bn ngoi CPU. Trong EU cn c khi tnh ton s hc v logic ALU dng thc hin cc thao tc khc nhau vi cc ton hng ca lnh. 2.1.2.1 S khi bn trong ca 8086 n v giao tip Bus (BIU) BIU bao gm cc thanh ghi on (segment registers: CS, DS, SS, ES), con tr lnh IP (instruction pointer) v b iu khin logic bus (bus control logic, BCL). n v giao din BIU cn c b nh m cho m lnh. B nh ny c chiu di 4 byte (trong 8088) v 6 byte (trong 8086). B nh m m lnh c ni vi khi iu khn CB (control block) ca n v thc hin lnh EU. B nh ny lu tr tm thi m lnh trong mt dy gi l hng i lnh. Hng i lnh cho php b vi x l c kh nng x l xen k lin tc dng m lnh (pipelining). Hot ng ca b CPU c chia lm ba giai on: c m lnh (operation code fetching), gii m lnh (decording) v thc hin lnh (execution).

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

25

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

BIU a ra a ch, c m lnh t b nh, c/ghi d liu t cc cng vo hoc b nh. Ni cch khc BIU chu trch nhim a a ch ra bus v trao i d liu vi bus.

Hnh 2-3.S khi bn trong 8086

n v x l lnh (EU) Trong EU c khi iu khin (control unit, CU). Chnh ti bn trong khi iu khin ny c mch gii m lnh. M lnh c vo t b nh c a n u vo ca b gii m, cc thng tin thu c t u ra ca n s c a n mch to xung iu khin, kt qu thu c l cc dy xung khc nhau tu theo m lnh, iu khin hot ng ca cc b phn bn trong v bn ngoi CPU. Trong EU c khi s hc v lgic (arithmatic and logic unit, ALU) chuyn thc hin cc php tnh s hc v logic m ton t ca n nm trong cc thanh ghi a nng. Kt qu thng c t v thanh ghi AX. Ngoi ra trong EU cn c cc thanh ghi a nng (registers: AX, BX, CX, DX, SP, BP, SI, DI), thanh ghi c FR (flag register). Tm li, khi CPU hot ng EU s cung cp thng tin v a ch cho BIU khi ny c lnh v d liu, cn bn thn n th gii m v thc hin lnh. 26B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Nhm cc thanh ghi Vi x l 8086 c tt c 14 thanh ghi ni. Cc thanh ghi ny c th phn nhm nh sau: - Thanh ghi d liu (data register) - Thanh ghi ch s v con tr (index & pointer register) - Thanh ghi on (segment register) - Thanh ghi c

Cc thanh ghi d liu

Cc thanh ghi d liu gm c cc thanh ghi 16 bit AX, BX, CX v DX trong na cao v na thp ca mi thanh ghi c th nh a ch mt cch c lp. Cc na thanh ghi ny (8 bit) c tn l AH v AL, BH v BL, CH v CL, DH v DL. Cc thanh ghi ny c s dng trong cc php ton s hc v logic hay trong qu trnh chuyn d liu. Trong : AX (ACC Accumulator): thanh ghi tch lu BX (Base): thanh ghi c s CX (Count): m DX (Data): thanh ghi d liu Bng 2-1. Cc thanh ghi ch ra ng dng ca cc thanh ghi d liu trong cc php ton nh sau Thanh ghi AX Mc ch MUL, IMUL (ton hng ngun kch thc word) DIV, IDIV (ton hng ngun kch thc word) IN (nhp word) OUT (xut word) CWD Cc php ton x l chui (string) AL MUL, IMUL (ton hng ngun kch thc byte) DIV, IDIV (ton hng ngun kch thc byte) IN (nhp byte) OUT (xut byte) XLAT AAA, AAD, AAM, AAS (cc php ton ASCII) CBW (i sang word) DAA, DAS (s thp phn)B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

27

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Thanh ghi AH

Mc ch Cc php ton x l chui (string) MUL, IMUL (ton hng ngun kch thc byte) DIV, IDIV (ton hng ngun kch thc byte) CBW (i sang word)

BX CX CL CX

XLAT LOOP, LOOPE, LOOPNE Cc php ton string vi tip du ng REP RCR, RCL, ROR, ROL (quay vi s m byte) SHR, SAR, SAL (dch vi s m byte) MUL, IMUL (ton hng ngun kch thc word) DIV, IDIV (ton hng ngun kch thc word)Bng 2-1. Cc thanh ghi

Cc thanh ghi ch s v con tr

Bao gm cc thanh ghi 16 bit SP, BP, SI v DI, thng cha cc gi tr offset ( lch) cho cc phn t nh a ch trong mt phn on (segment). Chng c th c s dng trong cc php ton s hc v logic. Hai thanh ghi con tr (SP Stack Pointer v BP Base Pointer) cho php truy xut d dng n cc phn t ang trong ngn xp (stack) hin hnh. Cc thanh ghi ch s (SI Source Index v DI Destination Index) c dng truy xut cc phn t trong cc on d liu v on thm (extra segment). Thng thng, cc thanh ghi con tr lin h n on stack hin hnh v cc thanh ghi ch s lin h n don d liu hin hnh. SI v DI dng trong cc php ton chui. Cc thanh ghi on Bao gm cc thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stack segment) v ES (extra segment), dng nh a ch vng nh 1 MB bng cch chia thnh 16 on 64 KB. Tt c cc lnh phi trong on m hin hnh, c nh a ch thng qua thanh ghi CS. Offset ( lch) ca m c xc nh bng thanh ghi IP. D liu chng trnh thng c t on d liu, nh v thng qua thanh ghi DS. Stack nh v thng qua thanh ghi SS. Thanh ghi on thm c th s dng nh a ch cc ton hng, d liu, b nh v cc phn t khc ngoi on d liu v stack hin hnh. Do Bus a ch ca vi x l 8086 c kch thc l 20 bit, nhng cc thanh ghi con tr v thanh ghi ch s ch rng 16 bit nn khng th nh a ch cho ton b nh vt l ca my tnh l (220B = 1.048.576B = 1Mbyte). V vy trong ch thc (real mode) b nh c chia lm nhiu on mt thanh ghi con tr 16 bit 28B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

c th qun l c. Cc thanh ghi on 16 bit s ch ra a ch u ca 4 on trong b nh, dung lng ln nht ca mi on nh s di 216 = 64 Kbyte v ti mt thi im nht nh b vi x l ch lm vic c vi 4 on nh 64Kbyte ny. Vic thay i gi tr ca cc thanh ghi on lm cho cc on c th dch chuyn linh hot trong khng gian 1 Mbyte, v vy cc on c th nm cch nhau khi thng tin cn lu trong chng i hi dung lng 64 Kbyte hoc cng c th nm chng nhau do c nhng on khng dng ht di 64 Kbyte v v th cc on khc c th bt u ni tip ngay sau . a ch ca nh nm u on c ghi trong mt thanh ghi on 16 bit, a ch ny gi l a ch c s. Mi su bit ny tng ng vi cc ng dy a ch t A4 n A20. Nh vy gi tr vt l ca a ch on l gi tr trong thanh ghi on dch sang tri 4 v tr. iu ny tng ng vi php nhn vi 24 = 16. a ch ca cc nh khc nm trong on tnh c bng cch cng thm vo a ch c s mt gi tr gi l a ch lch hay lch (offset), gi nh th v n ng vi khong lch ca to mt nh c th no so vi u on. lch ny c xc nh bi cc thanh ghi 16 bit khc ng vai tr thanh ghi lch (offset register). Nguyn tc ny dn n cng thc tnh a ch vt l (physical address) t a ch on (segment) trong thanh ghi on v a ch lch (offset) trong thanh ghi con tr nh sau: a ch vt l = Thanh ghi on x 16 + Thanh ghi lch

Thanh ghi c

Cc c ch th tnh trng ca b vi x l cng nh iu khin s hot ng ca n. Mt thanh ghi c l 1 flip-flop m n ch th mt s tnh trng c to bi vic thc thi 1 lnh hay cc hot ng iu khin c th ca EU. Thanh ghi c 16-bit trong EU c 9 c. Cc c iu kin - conditional flags: C 6 c c gi l c iu kin. Chng c lp hay xo l bi EU, da trn kt qu ca cc php ton s hc. C iu khin - control flags : 3 c cn li trong thanh ghi c c s dng iu khin mt s hot ng ca vi x l. Chng c gi l cc c iu khin. 15 14 13 12 x x x x 11 10 9 8 7 6 5 4 3 2 PF 1 x 0 CF OF DF IF TF SF ZF x AF x

-

Bit pos Func

Carry Flag (CF)- set by carry out of MSB. Parity Flag (PF)- set if result has even parity. Auxiliary carry Flag (AF)- for BCD Zero Flag (ZF)- set if results = 0 29

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Sign Flag (SF) = MSB of result TF- single step trap flag IF- interrupt enable flag DF- string direction flag Overflow Flag (OF)- overflow flag Cc c iu kin C nh - Carry flag (CF) C ny c t ln 1 khi tnh ton mt s khng du b trn. V d khi cng dng byte: 255+1 (kt qu khng nm trong vng 0..255). Khi khng trn, c ny t bng 0 C chn l - parity flag (PF) C PF=1 khi s lng bit 1 trong kt qu l chn, PF=0 khi s lng bit 1 l l. C nh ph - auxiliary carry flag (AF)- c ngha quan trng i vi php cng v php tr cc s BCD; AF=1 khi nhm 4 bit thp (khng du) trn. Ch c s dng vi lnh thao tc vi s BCD. C khng - zero flag (ZF)- ch th rng kt qa ca php ton s hc hay logic l bng 0. C du - sign flag (SF) - ch th du s hc ca kt qu sau 1 php ton s hc. Nu s l m (MSB=1) th SF=1 v ngc li SF=0 khi MSB=0 C trn - overflow flag (OF)- C trn OF=1 khi tnh ton trn s m. V d khi tnh bi 2 byte: 100+50 (kt qu ngoi khong -128..127) Cc c iu khin

-

-

Cc c iu khin c lp hay xo thng qua cc lnh c bit trong chng trnh ngi dng. Ba c iu khin l: C by - trap flag (TF) Khi c TF=1, CPU s ch ngt t thit b ngoi. C ngt - interrupt flag (IF) - c s dng cho php hay cm ngt ca cc chng trnh; - C hng - direction flag (DF) - c s dng vi cc lnh chui, mng d liu, nu DF=0 thc thi theo hng tin, DF=1 th thi theo hng li. Khng c lnh ring lp c TF.

30

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

2.1.3 M t chc nng cc chn

Hnh 2-4. S chn 8086/8088

8088 v 8086 l gn tng t nh nhau, ch khc ch 8088 c 8bit d liu cn 8086 c 16 bit d liu ngoi. C 2 b x l u c: rng bus d liu ni l 16 bit 20 ng a ch (16 address/data + 4 address/status), cho php a ch ho khng gian b nh ti a l 1Mbyte ch dn knh address/data pins (8088 only multiplexes 8 pins) 2 ch hot ng (maximum v minimum mode) Cng 1 tp lnh

-

2.2 Ch a ch2.2.1 Khi nim ch a ch Trc khi i vo cc ch a ch ca Vi x l 8086 ta ni qua v cch m ho lnh trong vi x l 8086. Lnh ca b vi x l c ghi bng cc k t di dng gi nh ngi s dng d nhn bit. i vi bn thn b vi x l th lnh cho n c m ho di dng cc s 0 v 1 (cn gi l m my) v l dng biu din thng tin duy nht m my c th hiu c. V lnh cho b vi x l c cho di dng m nn sau khi nhn lnh, b vi x l phi thc hin gii m lnh ri sau mi thc hin lnh

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

31

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Mt lnh c th c di mt vi byte tu theo b vi x l. i vi vi x l 8086 mt lnh c di t 1 n 6 byte. Ta s dng lnh MOV gii thch cch ghi lnh ni chung ca 8086.Byte 1 1 0 0 0 1 Opcode 0 D W MOD REG R/M Byte 2 Byte 3 DispLHoc Disp: Displacement (dch chuyn) a ch trc tip phn thp a ch trc tip phn cao

Byte 4 DispH

Dng thc cc byte m lnh ca lnh MOV T y ta thy m ho lnh MOV cn t nht 2 byte. Trong 6 bit u dng cha m lnh, 6 bit ny lun l 100010. i vi cc thanh ghi on th iu ny li khc. Bit W dng ch ra rng mt byte (W=0) hoc mt t (W=1) s c chuyn i. Trong thao tc chuyn d liu, mt ton hng lun bt buc phi l thanh ghi. B vi x l s dng 2 hoc 3 bit (REG) m ho cc thanh ghi trong CPU nh sau: Thanh ghi W=1 W=0 AX AL BX BL CX CL DX DL SP AH DI BH BP CH SI DH M 000 011 001 010 100 111 101 110 Thanh ghi on CS DS ES SS M 01 11 00 10

Bit D l hng i ca d liu. D = 1 th d liu n thanh ghi, D = 0 th d liu i ra t thanh ghi. Hai bit MOD (ch ) cng vi ba bit R/M (thanh ghi/b nh) to ra 5 bit dng ch ra ch a ch cho cc ton hng ca lnh. Bng 2.2 cho ta thy cch m ho cc ch a ch.MOD R/M 00 01 10 W=0 11 W=1

000 001 010 011

[BX+SI] [BX+DI] [BP+SI] [BP+DI]

[BX+SI]+d8 [BX+DI]+d8 [BP+SI]+d8 [BP+DI]+d8

[BX+SI]+d16 [BX+DI]+d16 [BP+SI]+d16 [BP+DI]+d16

AL CL DL BL

AX CX DX BX

32

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin MOD R/M

Chng 2 H vi x l Intel 80x86 00 01 10 W=0 11 W=1

100 101 110 111

[SI] [DI]

[SI]+d8 [DI]+d8 [BP]+d8 [BX]+d8

[SI]+d16 [DI]+d16 [BP]+d16 [BX]+d16

AH CH DH BH

SP BP SI DI

D16(/c trc tip)[BX]

Bng 2-2.Phi hp MOD v R/M to ra cc ch a ch

V d 1: MOVByte 1 1 0 0 0 1 Opcode

CL, [BX]Byte 2 0 1 0 0 0 0 0 1 1 1 1 REG R/M

D W MOD

M lnh MOV: 100010 D = 1: Chuyn ti thanh ghi W = 0: Chuyn 1 byte MOD: ch 00 v R/M l 111 REG: 001 m ho CL V d 2: MOVByte 1 1 0 0 0 1 Opcode 0 1 0 0 0 1

AH, 2AhByte 2 0 0 1 1 R/M 0 0 0 1 Byte 3 0 1 2Ah 0 1 0

D W MOD

REG

M lnh MOV: 100010 D = 1: Chuyn ti thanh ghi W = 0: Chuyn 1 byte MOD: ch 00 v R/M l 110: a ch trc tip REG: 100 m ho AH 2Ah = 00101010 d liu cn chuyn ti AH V d 3: MOV CX, [BX][SI]+DATA DATA l mt bin trong b nh, l a ch lch v l mt hng (v d nh 0BFF). Lnh ny s s dng 4 byte t chc nh sau:Byte 1 1 0 0 0 1 Opcode 0 1 1 1 Byte 2 0 0 0 1 REG Byte 3 0 0 0 1 1 1 1 1 1 1 1 R/M FFh Byte 4 0 0 0 0 1 0Bh 0 1 1

D W MOD

M lnh MOV: 100010B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

33

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

D = 1: Chuyn ti thanh ghi W =1: Chuyn 1 Word MOD: ch 10 (offset 16 bit) v R/M l 000 (s dng thanh ghi c s BX v thanh ghi ch s SI). REG: 001 m ho thanh ghi CX. Nh vy trong k hiu nh phn v hexa ta c. Byte 1 10001011 8Bh 2.2.2 Cc ch a ch Ch a ch (addressing mode) l cch CPU tm thy ton hng cho cc lnh ca n khi hot ng. Mt b vi x l c th c nhiu ch a ch. Cc ch a ch ny c xc nh ngay t khi ch to v khng th thay i c. B vi x l 8086/8088 c 9 ch a ch sau: Ch a ch thanh ghi. Ch a ch tc th. Ch a ch trc tip. Ch a ch gin tip qua thanh ghi. Ch a ch tng i c s. Ch a ch tng i ch s. Ch a ch tng i c s ch s. Ch a ch chui (String) mng. Ch a ch cng (Port). Ch a ch khc. Byte 2 10001000 88h Byte 3 11111111 FFh Byte 4 00001011 0Bh

CH A CH THANH GHI Trong ch a ch ny ngi ta s dng cc thanh ghi c sn trong CPU nh l cc ton hng cha d liu cn thao tc, v vy khi thc hin c th t tc truy nhp cao hn so vi cc lnh truy nhp n b nh.V d: MOV BX, DX ADD AX, BX ;copy noi dung DX vao BX ;AX=AX+BX

CH A CH TC TH Trong ch ny ton hng ch l mt thanh ghi hay mt nh, cn ton hng ngun l mt hng s. Ta c th dng ch a ch ny np d liu cn thao tc vo bt k thanh ghi no (tr thanh ghi on v thanh ghi c) v bt k nh no trong on d liu DS. 34B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

V d:MOV CL, 100 ;chuyen 100 vao CL. MOV AX, 0BC8h ;chuyen 0BC8h vao AX de roi MOV DS, AX ;copy noi dung AX vao DS (vi ;khong duoc chuyen truc tiep vao thanh ghi doan). MOV [BX], 20 ;chuyen 20 vao o nho tai dia chi DS:BX.

CH A CH TRC TIP Trong ch a ch ny mt ton hng cha a ch lch ca nh dng cha d liu, cn ton hng kia c th l thanh ghi m khng c l nh. V d:MOV MOV AL, [0243H];chuyen noi dung o nho DS:0243 vao AL [4320], CX ;chuyen noi dung CX vao hai o nho ;lien tiep DS:4320 va DS:4321

CH A CH GIN TIP QUA THANH GHI Trong ch a ch ny mt ton hng l mt thanh ghi c s dng cha a ch lch ca nh d liu, cn ton hng kia ch c th l thanh ghi m khng c l nh. V d:MOV AL, [BX] MOV [SI], CL ;DS:SI MOV [DI], AX ;copy noi dung o nho co dia chi DS:BX ;copy noi dung CL vao o nho co dia ch ;copy noi dung AX vao hai o nho lien ;tiep co dia chi DS:DI va DS:(DI+1)

CH A CH TNG I C S Trong ch a ch ny cc thanh ghi c s nh BX v BP v cc hng s biu din cc gi tr dch chuyn c dng tnh a ch hiu dng ca ton hng trong cc vng nh DS v SS. V d:MOV CX, [BX]+10 ;copy noi dung hai o nho ;co dia chi DS:BX+10 va DS:BX+11 ;vao CX MOV CX, [BX+10] ;cach viet khac cua lenh MOV CX, 10+[BX] ;cach viet khac cua lenh MOV AL, [BP]+5 ;chuyen noi dung o nho co dia ;SS:BP+5 vao AL lien tiep

tren tren chi

Quan st trn ta thy: 10 v 5 l cc dch chuyn ca cc ton hng tng ng. BX+10, BP+5 gi l a ch hiu dng. DS:BX+10, SS:BP+5 chnh l a ch logic ng vi a ch vt l. CH A CH TNG I CH S Trong ch a ch ny cc thanh ghi ch s nh SI v DI v cc hng s biu din cc gi tr dch chuyn c dng tnh a ch hiu dng ca ton hng trong cc vng nh DS. V d B mn K thut my tnh Khoa in t 35Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

MOV

CX, [SI]+10 ;copy noi dung hai o nho lien tiep ;co dia chi DS:SI+10 va DS:SI+11 vao CX MOV CX, [SI +10] ;cach viet khac cua lenh tren MOV CX, 10+[SI] ;cach viet khac cua lenh tren MOV AL, [DI]+5 ;chuyen noi dung o nho co dia chi ;DS:DI+5 vao AL

CH A CH TNG I CH S C S Kt hp hai ch a ch ch s v c s ta c ch a ch ch s c s. Trong ch ny ta dng c hai thanh ghi c s ln thanh ghi ch s tnh a ch ca ton hng. Nu ta dng thm c thnh phn biu din s dch chuyn ca a ch th ta c ch a ch tng hp nht: Ch a ch tng i ch s c s.V d: MOV BX, [BX]+[SI]+10 ;chuyen noi dung hai o nho ;lien tiep co dia chi DS:BX+SI+10 va DS:BX+SI+11 vao CX MOV AL, [BP+DI+5] ;copy ni dung th: DS:BP+DI+5 vao AL

Cc ch a ch trnh by trn c th tm tt li trong bng sau:Ch a ch Thanh ghi Tc th Trc tip Gin tip qua thanh ghi Ton hng Reg Data [offset] [BX] [SI] [DI] [BX]+Disp [BP]+Disp [DI]+Disp [SI]+Disp [BX]+[DI]+Disp [BX]+[SI]+Disp [BP]+[DI]+Disp [BP]+[SI]+Disp Bng 2-3. Cc ch a ch DS DS DS DS DS SS DS DS DS DS SS SS Thanh ghi on ngm nh

Tng i c s Tng i ch s

Tng i ch s c s

Ch : Reg: Thanh ghi, Data: D liu tc th, Disp: Dch chuyn. CH A CH CHUI (STRING) MNG Mt chui (string) l mt dy cc byte hoc word lin tip trong b nh. Cc lnh thao tc vi chui khng s dng bt k mt ch a ch no trn. Mt chui c th c di ti a ln ti 64K-bytes (mt segments). Ch a ch chui s dng cc thanh ghi SI, DI, DS v ES. Vi tt c cc lnh thao tc chui u s dng SI tr vo byte u tin ca chui ngun v DI tr vo byte u tin ca chui ch. 36B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

V d: Gi s: DS=1000h, ES=2000h, SI=10h, DI=20h) MOVSB ;Sao chp chui t 10010h n 20020h

CH A CH CNG (PORT) Trong h vi x l 80x86 ca Intel c khng gian a ch cho b nh v cng vo/ra l tch bit nhau. Khng gian a ch cng c th ln n 65536 cng (64Kports). a ch ca mt cng c th c xc nh bi mt hng gi tr kiu byte (phm vi = 0..255)V d: IN AL, 40h ;c cng sao chp ni dung ti ;cng c a ch 40h v thanh ghi AL OUT 80h, AL ;Ghi cng gi d liu trong thanh ;ghi AL ti cng c a ch 80h

a ch ca cng cng c th c xc nh gin tip qua thanh ghi (Khi ny phm vi ti s l 65536 cng). V d:IN AL, DX ;c cng c a ch l ni dung ca ;thanh ghi DX OUT DX, AX ;Ghi mt word trong AX ti cng c a ;ch l ni dung ca thanh ghi DX.

2.3 Tp lnh Assembly2.3.1 Gii thiu chung Tp lnh ca h vi x l 80x86 m bo tng thch th h sau vi th h trc. iu c ngha l cc chng trnh vit cho 8086 vn chy c trn cc b vi x l mi hn m khng phi thay i (khng m bo th t ngc li). Tp lnh ca mt b vi x l thng c rt nhiu lnh (hng trm lnh), v th m vic tip cn v lm ch chng l trng i kh khn. C nhiu cch trnh by tp lnh ca b vi x l: Trnh by theo nhm lnh hoc theo th t abc. c th nhanh chng v d dng s dng cc lnh c bn v lp trnh c ngay, ta s tip cn tp lnh ca b vi x l theo nhm cc thao tc c bn trong qu trnh x l v iu khin. Vi mi thao tc ni trn, ta lm quen vi mt vi lnh tiu biu (c gi c th tra cu thm cc lnh khc trong phn ph lc). Cc chc nng c bn ca mt b vi x l thng gm: Nhm cc lnh vn chuyn (sao chp) d liu. Nhm cc lnh tnh ton s hc. Nhm cc lnh tnh ton logic. Nhm cc lnh dch, quay ton hng. Nhm cc lnh nhy (r nhnh). 37

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

-

Nhm cc lnh lp. Nhm cc lnh iu khin, c bit khc.

2.3.2 Cc nhm lnh 2.3.2.1 Nhm cc lnh vn chuyn (sao chp) d liu 1. MOV MOV a byte or word (chuyn mt byte hay t) Dng lnh: MOV ch, Ngun M t: chNgun Trong ton hng ch v Ngun c th tm c theo cc ch a ch khc nhau, nhng phi c cng di v khng c php ng thi l hai nh hoc hai thanh ghi on. Cc c b thay i: khng. V d:MOV MOV MOV AL, AH CX, 50 DL, [SI] ;ALAH ;CX50 ;DL{DS:SI}

2. OUT Output a byte or a work to a port. Dng lnh: OUT M t: Acc{Port} Trong {port} l d liu ca cng c a ch port. Port l a ch 8 bit ca cng, n c th l cc gi tr trong khong 00...FFH. Nh vy c th c cc kh nng sau y. Nu Acc l AL th d liu 8 bit c a ra cng Port. Nu Acc l AX th d liu 16 bit c a ra cng Port v Port + 1. Port, Acc

C mt cch khc cha a ch cng l thng qua thanh ghi DX. Khi dng thanh ghi DX cha a ch cng ta c kh nng a ch ho cng mm do hn. Lc ny a ch cng nm trong di 0000H FFFFH v vit lnh theo dng: OUT DX, Acc Cc c b thay i: khng. V d:OUT MOV MOV OUT 45H, AL DX, 0 ;xoa DX, 00FFH DX, AX ;dua du lieu tu AL ra cong 45H DX ;nap dia chi cong vao DX ;dua du lieu tu AX ra 00FFH

3. IN Input data from a port (c d liu t cng vo thanh ghi Acc). Dng lnh: IN Acc, a_ch_cng 38B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Lnh IN truyn mt byte hoc mt t t mt cng vo ln lt ti thanh ghi AL hoc AX. a ch ca cng c th c xc nh l mt hng tc th kiu byte cho php truy nhp cc cng t 0255 hoc thng qua mt s c a ra trc trong thanh ghi DX m cho php truy nhp cc cng t 065535. Cc c b thay i: khng. V d:IN AL, 45H ;dinh trong che IN AX, 0046H ;dinh trong che IN AX, DX ;doc mot byte tu mot cong duoc xac do tuc thi ;doc hai byte tu mot cong duoc xac do tuc thi ;doc mot tu tu mot cong dang bien

4. POP Pop word from top of Stack (ly li 1 t vo thanh ghi t nh ngn xp) Dng lnh: POP M t: ch{SP} SPSP+2 Ton hng ch ch c th l cc thanh ghi a nng, thanh ghi on (nhng khng c l thanh ghi on m CS) hoc nh. Cc c b thay i: khng. V d: POP DX ;lay 2 byte tu dinh ngan xep dua vao DX 5. PUSH Push word on the Stack (ct 1 t vo ngn xp) Dng lnh: PUSH M t: SPSP-2 Ngun{SP} Ton hng ch ch c th l cc thanh ghi a nng, thanh ghi on(k c CS) hoc nh. Cc c b thay i: khng. V d:PUSH BX ;cat BX vao ngan xep tai vi tri do SP chi ra

ch

Ngun

2.3.2.2 Nhm cc lnh tnh ton s hc 6. ADC Add with Carry (cng c nh) Dng lnh: M t: ADC ch, Ngun ch ch + Ngun + CF 39

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Cng hai ton hng ch v Ngun vi c CF kt qu lu vo ch. Cc c b thay i: AF, CF, OF, PF, SF, ZF. V d:ADC ADC ADC AL, 74H CL, BL DL, [SI] ;ALAL+74+CF ;CLCL+BL+CF ;DLDL+(DS:SI)+CF

7. ADD Add (cng hai ton hng) Dng lnh: M t: ADD ch, Ngun ch ch + Ngun

Cng hai ton hng ch v Ngun kt qu lu vo ch. Cc c b thay i: AF, CF, OF, PF, SF, ZF. V d:ADD ADD DX, CX AX, 400 ;DXDX+CX ;AXAX+400

8. DEC Decrement (gim byte hay word i mt gi tr) Dng lnh: DEC ch DEC tr ton hng ch i 1. Ton hng ch c th l byte hay word. Cc c b thay i: AF, OF, PF, SF, ZF. V d:MOV DEC BX, 1200H BX ;chuyen 1200H vao BX ;BX=11FFH

9. DIV Division (chia khng du) Dng lnh: DIV Ngun Ton hng Ngun l s chia. Tu theo di ton hng Ngun ta c hai trng hp b tr php chia. Nu Ngun l l s 8 bit: AX/Ngun, thng vo AL, s d vo AH Nu Ngun l s 16 bit: DXAX/Ngun, thng vo AX, s d vo DX

Nu thng khng phi l s nguyn n c lm trn theo s nguyn st di. Nu Ngun bng 0 hoc thng thu c ln hn FFH hoc FFFFH (tu theo di ca ton hng Ngun) th 8086 thc hin lnh ngt INT 0. Cc c b thay i: khng. V d:MOV AX, 0033H MOV BL, 25 DIV BL ;chuyen 0033H vao AX ;AL=02H va AH=01H

10. INC Increment (tng ton hng ln 1) Dng lnh: 40 INC chB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

M t:

ch ch + 1

Lnh ny tng ch ln 1, tng ng vi vic ADD ch, 1 nhng chy nhanh hn. Cc c b thay i: AF, OF, PF, SF, ZF. V d:INC INC AL BX

11. MUL Multiply unsigned byte or word (nhn s khng du) Dng lnh: MUL Ngun Thc hin php nhn khng du vi ton hng Ngun ( nh hoc thanh ghi) vi thanh ghi tng. Nu Ngun l s 8 bit: AL*Ngun. S b nhn phi l s 8 bit t trong AL, sau khi nhn tch lu vo AX Nu Ngun l s 16 bit: AX*Ngun. S b nhn phi l s 16 bit t trong AX, sau khi nhn tch lu vo DXAX.

Nu byte cao (hoc 16 bit cao) ca 16 (hoc 32) bit kt qu cha 0 th CF=OF=0. Cc c b thay i: CF, OF. V d:MUL MUL CX BL ;AXxCX DXAX ;ALxBL AX

12. NEG Negation (ly b hai ca mt ton hng, o du ca mt ton hng). Dng lnh: M t: NEG ch ch0-ch

NEG ly 0 tr cho ch (c th l 1 byte hoc 1 t) v tr li kt qu cho ton hng ch, nu ta ly b hai ca -128 hoc -32768 ta s c kt qu khng i nhng OF=1 bo l kt qu b trn v s dng ln nht biu din c l +127 v +32767. Cc c b thay i: AF, CF, OF, PF, SF, ZF V d:NEG AL ;AL0-(AL)

13. SUB Substract (tr hai ton hng) Dng lnh: M t: SUB ch, Ngun chch - Ngun

Ton hng ch vo Ngun phi cha cng mt loi d liu v khng c ng thi l hai nh, cng khng c l thanh ghi on.B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

41

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Cc c b thay i: AF, CF, OF, PF, SF, ZF. V d:SUB SUB SUB AL, 78H BL, CL DL, [SI] ;ALAL-78H ;BLBL-CL ;DLDL-{DS:SI}

2.3.2.3 Nhm cc lnh tnh ton logic 14. AND (php v logic) Dng lnh: M t: AND ch, Ngun ch ch ^ Ngun

Thc hin php v logic hai ton hng v lu kt qu vo ton hng ch. Ngi ta thng s dng che i/gi li mt vi bit no ca mt ton hng bng cch nhn logic ton hng vi ton hng tc th c cc bit 0/1 cc v tr cn che i/gi li tng ng. Cc c b thay i: CF, OF, PF, SF, ZF. V d:AND AND DX, CX AL, 0FH ;DXDX AND CX theo tung bit ;che 4 bit cao cua AL

15. NOT Logical Negation (ph nh logic) Dng lnh: NOT ch NOT o cc gi tr ca cc bit ca ton hng ch. Cc c b thay i: khng. V d:MOV NOT AL, 02H AL ;AL=(0000 0010)B ;AL=(1111 1101)B

16. OR Logic OR (php hoc logic) Dng lnh: M t: OR ch, Ngun ch = ch Ngun

Ton hng ch v Ngun phi cha d liu cng di v khng c php ng thi l hai nh v cng khng c l thanh ghi on. Php OR thng dng lp mt vi bit no ca ton hng bng cch cng logic ton hng vi cc ton hng tc thi c cc bit 1 ti v tr tng ng cn thit lp. Cc c b thay i: CF, OF, PF, SF, ZF. V d:OR OR AX, BX CL, 30H ;AXAXBX theo tung bit ;lap bit b4 va b5 cua CL len 1

42

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

2.3.2.4 Nhm cc lnh dch, quay ton hng 17. RCL Rotate though CF to the Left (quay tri thng qua c nh) Dng lnh: M t:CF MSB LSB

RCL ch, CL

Lnh ny quay ton hng sang tri thng qua c CF, CL phi c cha sn s ln quay. Trong trng hp quay 1 ln c th vit RCL ch, 1 Nu s ln quay l 9 th ton hng khng i v cp CF v ton hng quay ng mt vng (nu ton hng ch l 8 bit). Sau lnh RCL c CF mang gi tr c ca MSB, cn c OF1 nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c xc nh sau nhiu ln quay. Cc c b thay i: CF, OF, SF, ZF, PF. V d:MOV RCL CL, 3 ;so lan quay la 3 AL, CL

Trc khi thc hin lnh:

AL = 01011110, CF = 0.

Sau khi thc hin lnh: AL = 11110001, CF = 0. 18. RCR Rotate though CF to the Right (quay phi thng qua c nh) Dng lnh: M t:CF MSB LSB

RCR ch, CL

Lnh ny quay ton hng sang phi thng qua c CF, CL phi c cha sn s ln quay. Trong trng hp quay 1 ln c th vit RCR ch, 1 Nu s ln quay l 9 th ton hng khng i v cp CF v ton hng quay ng mt vng (nu ton hng ch l 8 bit). Sau lnh RCR c CF mang gi tr c ca LSB, cn c OF1 nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c xc nh sau nhiu ln quay. Cc c b thay i: CF, OF, SF, ZF, PF. V d:MOV RCR CL, 2 ;so lan quay la 2 AL, CL

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

43

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Trc khi thc hin lnh:

AL = 11000010, CF = 1.

Sau khi thc hin lnh: AL = 01110000, CF = 1. 19. ROL Rotate all bit to the Left (quay vng sang tri). Dng lnh: M t:CF MSB LSB

ROL ch, CL.

Lnh ny dng quay vng ton hng sang tri, MSB c a sang c CF v LSB. CL phi cha sn s ln quay mong mun. Trong trng hp quay 1 ln c th vit ROL ch, 1. Nu s ln quay l 8 (CL=8) th ton hng khng i v ton hng quay ng mt vng (nu ton hng ch l 8 bit), cn nu CL=4 th 4 bit cao i ch cho 4 bit thp. Sau lnh ROL c CF mang gi tr c ca MSB, cn c OF1 nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c xc nh sau nhiu ln quay. Lnh ny thng dng to c CF t gi tr ca MSB lm iu kin cho lnh nhy c iu kin. Cc c b thay i: CF, OF, SF, ZF, PF. V d:MOV ROL CL, 2 ;so lan quay la 2 AL, CL

Trc khi thc hin lnh:

AL = 11001100, CF = 1

Sau khi thc hin lnh: AL = 00110011, CF = 1 20. ROR Rotate all bit to the Left (quay vng sang phi). Dng lnh: M t:MSB LSB CF

ROR ch, CL

Lnh ny dng quay vng ton hng sang phi, LSB c a sang c CF v MSB. CL phi cha sn s ln quay mong mun. Trong trng hp quay 1 ln c th vit ROR ch, 1. Nu s ln quay l 8 (CL=8) th ton hng khng i v ton hng quay ng mt vng (nu ton hng ch l 8 bit), cn nu CL=4 th 4 bit cao i ch cho 4 bit thp. Sau lnh ROR c CF mang gi tr c ca LSB, cn c OF1 nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c 44B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

xc nh sau nhiu ln quay. Lnh ny thng dng to c CF t gi tr ca LSB lm iu kin cho lnh nhy c iu kin. Cc c b thay i: CF, OF, SF, ZF, PF. V d:MOV ROR CL, 2 ;so lan quay la 2 AL, CL

Trc khi thc hin lnh:

AL = 11001100, CF = 0

Sau khi thc hin lnh: AL = 00110011, CF = 0 21. SAL/SHL - Shift Arithmetically Left (dch tri s hc)/Shift Logically Left (dch tri logic). Dng lnh: SAL SHL M t:CF MSB LSB 0

ch, CL ch, CL

Hai lnh ny c tc dng dch tri s hc ton hng (cn gi l dch tri logic). Mi ln dch MSB c a vo CF cn 0 c a vo LSB. CL phi cha sn s ln quay mong mun. Trong trng hp quay 1 ln c th vit SAL ch, 1 Sau lnh SAL hoc SHL c CF mang gi tr c ca MSB, cn c OF1 nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c xc nh sau nhiu ln quay. Lnh ny thng dng to c CF t gi tr ca MSB lm iu kin cho lnh nhy c iu kin. Cc c b thay i: SF, ZF, CF, OF, PF. V d:MOV SAL CL, 2 ;so lan quay la 2 AL, CL

Trc khi thc hin lnh: AL = 11001100, CF = 0 Sau khi thc hin lnh: Dng lnh: M t:0 MSB LSB CF

AL = 00110000, CF = 1

22. SHR Shift logically Right (dch phi logic) SHR ch, CL

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

45

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Lnh ny c tc dng dch phi logic ton hng. Mi ln dch LSB c a vo CF cn 0 c a vo MSB. CL phi cha sn s ln quay mong mun. Trong trng hp quay 1 ln c th vit SHR ch, 1 Sau lnh SHR c CF mang gi tr c ca LSB, cn c OF1 nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c xc nh sau nhiu ln quay. Lnh ny thng dng to c CF t gi tr ca LSB lm iu kin cho lnh nhy c iu kin. Cc c b thay i: SF, ZF, CF, OF, PF. V d:MOV SHR CL, 2 ;so lan quay la 2 AL, CL

Trc khi thc hin lnh: AL = 11001100, CF = 1 Sau khi thc hin lnh: Dng lnh: M t: AL = 00110011, CF = 0 23. XOR Exclusive OR (lnh logic XOR (hoc o)). XOR ch, Ngun chchNgun.

Lnh XOR thc hin logic XOR (hoc o) gia hai ton hng v kt qu c lu vo trong ch, mt bit kt qu c t bng 1 nu nu cc bit tng ng hai ton hng l i nhau. Nu ton hng ch trng ton hng Ngun th kt qu bng 0, do lnh ny cn c dng xo thanh ghi v 0 km theo cc c CF v OF cng b xo. Cc c b thay i: CF, OF, PF, SF, ZF. V d:XOR XOR MOV MOV XOR AX, BX, AX, BX, AX, AX BX 5857H 58A8H BX

Trc khi thc hin lnh XOR AX=5857H BX=58A8H 2.3.2.5 Nhm cc lnh so snh 24. CMP Compare (so snh) Dng lnh: CMP ch, Ngun

Sau khi thc hin lnh XOR AX=00FFH BX=58A8H

CMP tr ton hng ch cho ton hng Ngun, chng c th l cc byte hoc cc t, nhng khng lu tr kt qu. Cc ton hng khng b thay i. Kt qu ca 46B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

lnh ny dng cp nht cc c v c th c dng lm iu kin cho cc lnh nhy c iu kin tip theo. Cc c b thay i: AF, CF, OF, PF, SF, ZF. Cc c chnh theo quan h ch v Ngun khi so snh hai s khng du. So snh ch = Ngun ch > Ngun ch < Ngun 2.3.2.6 Nhm cc lnh nhy (r nhnh) 25. JA/JNBE Jump if Above/Jump if Not Below or Equal (nhy nu cao hn/nhy nu khng thp hn hoc bng). Dng lnh: JA NHAN JNBE NHAN M t: IPIP+dch chuyn Hai lnh trn biu din cng mt thao tc nhy c iu kin ti NHAN nu CF + ZF = 0. Quan h cao hn/thp l quan h dnh cho vic so snh (do lnh CMP thc hin) ln hai s khng du. NHAN phi nm cch xa mt khong -128+127 byte so vi lnh tip theo sau lnh JA/JNBE. Chng trnh s cn c vo v tr NHAN xc nh gi tr dch chuyn. Cc c b thay i: khng. V d:CMP JA AX, 12ABH THOI ;so sanh AX voi 12ABH ;nhay den THOI neu AX cao hon 12ABH

CF 0 0 1

ZF 1 0 0

26. JAE/JNB/JNC Jump if Above or Equal/Jump if Not Below/Jump if No Carry (nhy nu ln hn hoc bng/nhy nu khng thp hn/nhy nu khng c nh). Dng lnh: JAE JNB JNC NHAN NHAN NHAN

M t: IPIP+dch chuyn Ba lnh trn biu din cng mt thao tc nhy c iu kin ti NHAN nu CF = 0. Quan h cao hn/thp l quan h dnh cho vic so snh (do lnh CMP thc hin) ln hai s khng du. NHAN phi nm cch xa mt khong B mn K thut my tnh Khoa in t 47Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

-128+127 byte so vi lnh tip theo sau lnh JAE/JNB/JNC. Chng trnh s cn c vo v tr NHAN xc nh gi tr dch chuyn. Cc c b thay i: khng. V d:CMP JAE AL, 10H THOI ;so sanh AL voi 10H ;nhay den THOI neu AL cao hon hoac bang 10H

27. JB/JC/JNAE Jump if Below/Jump if Carry/Jump if Not Above or Equal (nhy nu thp hn/nhy nu c nh/nhy nu khng cao hn hoc bng). Dng lnh: JB JC JNAE NHAN NHAN NHAN

M t: IPIP+dch chuyn Ba lnh trn biu din cng mt thao tc nhy c iu kin ti NHAN nu CF = 1. Quan h cao hn/thp l quan h dnh cho vic so snh (do lnh CMP thc hin) ln hai s khng du. NHAN phi nm cch xa mt khong -128+127 byte so vi lnh tip theo sau lnh JB/JC/JNAE. Chng trnh s cn c vo v tr NHAN xc nh gi tr dch chuyn. Cc c b thay i: khng. V d:CMP JB AL, 10H THOI ;so sanh AL voi 10H ;nhay den THOI neu AL thap hon 10H

28. JBE/JNA Jump if Below or Equal/Jump if Not Above (nhy nu thp hn hoc bng/nhy nu khng cao hn). Dng lnh: JBE NHAN JNA NHAN M t: IPIP+dch chuyn Hai lnh trn biu din cng mt thao tc nhy c iu kin ti NHAN nu CF +ZF = 1. Quan h cao hn/thp l quan h dnh cho vic so snh (do lnh CMP thc hin) ln hai s khng du. NHAN phi nm cch xa mt khong -128+127 byte so vi lnh tip theo sau lnh JBE/JNA. Chng trnh s cn c vo v tr NHAN xc nh gi tr dch chuyn. Cc c b thay i: khng. V d:CMP AL, 10H JBE THOI ;bang 10H ;so sanh AL voi 10H ;nhay den THOI neu AL thap hon hoac

48

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

29. JE/JZ Jump if Equal/Jump if Zero (nhy nu bng nhau/nhy nu kt qu bng khng) Dng lnh: JE NHAN JZ NHAN M t: IPIP+dch chuyn Lnh trn biu din thao tc nhy c iu kin ti NHAN nu ZF = 1. NHAN phi nm cch xa mt khong -128+127 byte so vi lnh tip theo sau lnh JE/JZ. Chng trnh s cn c vo v tr NHAN xc nh gi tr dch chuyn. Cc c b thay i: khng. V d:SUB JE AL, 10H THOI ;tru AL cho 10H ;nhay den THOI neu AL bang 10H

30. JMP Unconditional Jump (lnh nhy khng iu kin). JMP trao quyn iu khin cho vng mc tiu mt cch khng iu kin. Lnh ny c cc ch ging nh lnh CALL v n cng phn bit nhy gn, nhy xa. Dng lnh: Sau y l nhng cch vit lnh khng iu kin. JMP NHAN Lnh mi ny bt u a ch ng vi NHAN. Chng trnh s cn c vo khong dch gia NHAN v lnh nhy xc nh xem n l: + Nhy ngn: Trong trng hp ny NHAN phi nm cch xa (dch i mt khong). -128127 byte so vi lnh tip theo sau lnh JMP. Chng trnh dch s cn c vo v tr NHAN xc nh gi tr dch chuyn. Do IPIP+dch chuyn y l lnh nhy trc tip v dch chuyn trc tip trong m lnh. nh hng cho chng trnh dch lm vic nn vit lnh di dng: JMP SHORT NHAN + Nhy gn: Trong trng hp ny NHAN phi nm cch xa (dch i mt khong) -32768+32767 byte so vi lnh tip theo sau lnh JMP. Chng trnh dch s cn c vo v tr NHAN xc nh gi tr dch chuyn. Do IPIP+dch chuyn y l lnh nhy trc tip v dch chuyn trc tip trong m lnh.B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

49

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

nh hng cho chng trnh dch lm vic nn vit lnh di dng: JMP NEAR NHAN + Nhy xa: Trong trng hp ny NHAN nm on m khc so vi lnh tip theo sau lnh JMP. Chng trnh s cn c vo v tr NHAN xc nh gi tr a ch nhy n (CS:IP ca NHAN). Sau : IPIP ca NHAN CSCS ca NHAN JMP BX y l lnh nhy gn, trc BX phi cha a ch lch ca lnh nh nhy n trong on CS. Khi thc hin lnh ny th IPBX. y l lnh nhy gin tip v a ch lch nm trong thanh ghi. nh hng cho chng trnh dch lm vic ta nn vit lnh di dng: JMP JMP NEAR PTR BX [BX]

y l lnh nhy gn. IP mi c ly t ni dung 2 nh do BX v BX+1 ch ra trong on DS (SI, DI c th dng thay ch ca BX). y l lnh nhy gin tip v a ch lch trong nh. nh hng cho chng trnh dch lm vic ta nn vit lnh di dng: JMP WORD PTR [BX] Mt bin dng khc ca lnh trn thu c khi ta vit lnh di dng: JMP DWORD PTR [BX] y l lnh nhy xa. a ch nhy n ng vi CS:IP. Gi tr gn cho IP v CS c cha trong 4 nh do BX v BX+1 (cho IP), BX+2 v BX+3 cho (CS) ch ra trong on DS (SI, DI c th s dng thay ch ca BX) y cng l lnh nhy gin tip v a ch lch v a ch c s nm trong nh. Cc c b thay i: khng. 31. JNE/JNZ Jump if Not Equal/Jump if Not Zero (nhy nu khng bng nhau/nhy nu kt qu khng rng). Dng lnh: JNE NHAN JNZ NHAN M t: IPIP+dch chuyn Hai lnh trn biu din cng mt thao tc nhy c iu kin ti NHAN nu ZF = 0. NHN phi nm cch xa (dch i mt khong) -128127 byte so vi lnh tip theo sau lnh JNE/JNZ. Chng trnh dch s cn c vo v tr NHAN xc nh dch chuyn. 50B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Cc c b thay i: khng. V d:CMP JNE AL, 10H THOI ;so sanh AL voi 10H ;nhay den THOI neu AL khac 10H

2.3.2.7 Nhm cc lnh lp 32. LOOP Loop if CX is not 0 (lp nu CX 0) Dng lnh: LOOP NHAN M t: Lnh ny dng lp li on chng trnh (gm cc lnh nm trong khong t NHAN n ht lnh LOOP NHAN) cho n khi s ln lp CX=0. iu ny c ngha l trc khi vo vng lp ta phi a s ln lp mong mun vo CX, v sau mi ln lp th CX t ng gim i 1. NHAN phi nm cch xa (dch i mt khong) ti a -128 byte so vi lnh tip theo sau lnh LOOP. Cc c b thay i: khng. V d:MOV MOV LAP: LOOP AL, 0 ;xoa AL CX, 10 ;nap so lan lap vao CX INC AL ;tang AL len 1 LAP ;lap lai 10 lan, AL=10

33. LOOPE/LOOPZ Loop while CX=0 or ZF=0 (lp li on chng trnh cho n khi CX=0 hoc ZF=0). Dng lnh: LOOPE NHAN LOOPZ NHAN M t: Lnh ny dng lp li on chng trnh (gm cc lnh nm trong khong t NHAN n ht lnh LOOPE NHAN hoc LOOPZ NHAN) cho n khi s ln lp CX=0 hoc c ZF=0. iu ny c ngha l trc khi vo vng lp ta phi a s ln lp mong mun vo CX, v sau mi ln lp th CX t ng gim i 1. NHAN phi nm cch xa (dch i mt khong) ti a -128 byte so vi lnh tip theo sau lnh LOOPE/LOOPZ. Cc c b thay i: khng. V d:MOV MOV LAP: COMP AL, AH CX, 50 INC AL AL, 16 ;AL=AH ;nap so lan lap vao CX ;tang AL ;so sanh AL voi 16

LOOPE LAP

;lap lai cho den khi AL16 hoac CX=0

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

51

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

34. LOOPNE/LOOPNZ Loop while CX=0 or ZF=1 (lp li on chng trnh cho n khi CX=0 hoc ZF=1). Dng lnh: LOOPNE NHAN LOOPNZ NHAN M t: Lnh ny dng lp li on chng trnh (gm cc lnh nm trong khong t NHAN n ht lnh LOOPNE NHAN hoc LOOPNZ NHAN) cho n khi s ln lp CX=0 hoc c ZF=1. iu ny c ngha l trc khi vo vng lp ta phi a s ln lp mong mun vo CX, v sau mi ln lp th CX t ng gim i 1. NHAN phi nm cch xa (dch i mt khong) ti a -128 byte so vi lnh tip theo sau lnh LOOPNE/LOOPNZ. Cc c b thay i: khng. V d:MOV AL, AH MOV CX, 50 LAP: INC AL COMP AL, 16 LOOPNE LAP ;AL=AH ;nap so lan lap vao CX ;tang AL ;so sanh AL voi 16 ;lap lai cho den khi AL=16 hoac CX=0

2.3.2.8 Nhm cc lnh iu khin, c bit khc 35. CALL Call a procedure (gi chng trnh con) Dng lnh: CALL Th_tc M t: Lnh ny dng chuyn hot ng ca vi x l t chng trnh chnh (CTC) sang chng trnh con (ctc). Nu ctc nm trong cng mt on m vi CTC ta c gi gn (near call). Nu ctc v CTC nm hai on m khc nhau ta c gi xa (far call). Nu gi gn: Lu vo Stack gi tr IP ca a ch tr v (v CS khng i) v cc thao tc khi gi ctc din ra nh sau: + Ni dung thanh ghi SP gim i 2 byte, SPSP 2. + Ni dung thanh ghi IP c ct vo ngn xp (lu a ch tr v) {SP}IP. + a ch lch ca ctc (ln ti 32K) c lu vo thanh ghi IP. + Khi gp lnh RET cui ctc th VXL ly li a ch tr v IP t Stack v tng SP ln 2 byte. Nu gi xa: Lu vo Stack gi tr IP v CS ca a ch tr v v cc thao tc khi gi ctc din ra nh sau: + Ni dung thanh ghi SP gim i 2 byte, SPSP 2 v CS c lu vo ngn xp. 52B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

+ Ni dung ca CS c thay bng a ch on ca ctc c gi. + Ni dung thanh ghi SP li gim i 2 byte v IP c ct vo ngn xp. + a ch lch ca ctc c lu vo thanh ghi IP. + Khi gp lnh RET cui ctc th VXL ly li a ch tr v IP t Stack v tng SP ln 2 byte sau tip tc ly li CS v tng SP ln 2 byte. Cc c b thay i: AF, CF, OF, PF, SF, ZF. V d:CALL NEAR CALL FAR

36. INT Interrupt (lnh gi ngt) Dng lnh: INT N (N=0FFH) INT N Cc thao tc ca 8086 khi chy lnh:

To a ch mi ca Stack, ct thanh ghi c vo Stack: SPSP-2, {FR}SP. Cm cc ngt khc tc ng vo vi x l, cho vi x l chy ch tng lnh: IF0, TF0. To a ch mi ca Stack, ct a ch on ca a ch tr v vo Stack: SPSP-2, SPCS. To a ch mi ca Stack, ct a ch lch ca a ch tr v vo Stack: SPSP2, SPIP. Vi x l ly lnh ti a ch mi, a ch con tr ngt c tnh ton nh sau: {Nx4}IP, {Nx4+2}CS V d: vi N = 8 th CS{0022H} v IP{0020H}

37. IRET Interrupt Return (tr v CTC t ctc phc v ngt) Dng lnh: IRET Tr v chng trnh chnh t chng trnh con phc v ngt. Tr li quyn iu khin cho chng trnh ti v tr xy ra ngt bng cch ly li cc gi tr thanh ghi IP, CS v cc c t vng Stack. {SP}IP, SPSP+2 {SP}CS, SPSP+2 {SP}FR, SPSP+2 Cc c b thay i: tt c cc c (c phc hi nh trc khi din ra ngt). 38. NOP No Operation (CPU khng lm g) Dng lnh: NOPB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

53

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Lnh ny khng thc hin mt cng vic g ngoi vic lm tng ni dung ca IP v tiu tn 3 chu k ng h. N thng c dng tnh thi gian tr trong cc vng tr hoc chim ch cc lnh cn thm vo chng trnh sau ny m khng lm nh hng dn di chng trnh. Cc c b thay i: khng. 39. RET Return from Procedure to Calling Program (tr v chng trnh chnh t chng trnh con). Dng lnh: RET hoc RET N (N l s nguyn dng) M t: RET c t cui ctc vi x l ly li a ch tr v, m n c t ng ct ti ngn xp khi c lnh gi ctc. c bit nu dng lnh RET n th sau khi ly li c a ch tr v (ch c IP hoc c IP v CS) th SPSP+n (dng nhy qua m khng ly li cc thng s khc ca chng trnh cn li trong ngn xp. Cc c b thay i: khng. 40. STC Set the Carry Flag (lp c nh) Dng lnh: M t: STC CF1

STC thit lp c nh bng 1 v khng nh hng n cc c khc. Cc c b thay i: CF=1.

2.4 Lp trnh hp ng (Assembly) cho vi x l 80x86Tham kho [12] 2.4.1 Gii thiu chung v hp ng Hp ng (assembly language) l mt ngn ng cp thp dng vit cc chng trnh my tnh. Cch dng cc thut nh (mnemonics) thn thin vit chng trnh thay th cch lp trnh trc tip ln my tnh bng m my dng s (numeric machine code) - tng p dng cho nhng my tnh u tin - vn rt mt nhc, d gy li v tn nhiu thi gi. Mt chng trnh vit bng hp ng s c dch sang ngn ng my bng mt tin ch gi l trnh hp dch. Lu rng, trnh hp dch khc hon ton vi trnh bin dch, vn dng bin dch cc ngn ng cp cao sang cc ch th lnh cp thp m sau s c trnh hp dch chuyn i sang ngn ng my. Cc chng trnh hp ng thng ph thuc cht ch vo mt kin trc my tnh xc nh, n khc vi ngn ng cp cao thng c lp i vi cc nn tng kin trc phn cng. Nhiu trnh hp dch phc tp ngoi cc tnh nng c bn cn cung cp thm cc c ch gip cho vic vit chng trnh, kim sot qu trnh dch cng nh vic g ri c d dng hn. Hp ng tng c dng rng ri trong tt c cc kha cnh lp trnh, nhng ngy nay n c xu hng ch c 54B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

dng trong mt s lnh vc hp, ch yu giao tip trc tip vi phn cng hoc x l cc vn lin quan n tc cao in hnh nh cc trnh iu khin thit b, cc h thng nhng cp thp v cc ng dng thi gian thc.. 2.4.2 Cc bc khi lp trnh Lp trnh trn phn mm emu8086 - Bc 1: M chng trnh emu8086, chn file \ new Vi cc la chn: New com template, new exe template, new bin template, new boot template. - Bc 2: Vit m ngun - Bc 3: dch v g ri (bm F5) - Bc 4: to file t chy: assembler \ Compile Dch, lin kt, chy v chn li chng trnh t du nhc DOS: Cn c cc file: tasm.exe (dch), tlink.exe (lin kt), td.exe (chn li). Cc bc nh sau: B1. Thit lp ng dn path = %path%; B2. Bin dch t file .ASM sang file .OBJ Tasm .ASM B3. Bin dch t file .OBJ sang file .EXE Tlink .OBJ B4: chy chng trnh: .EXE B5: chn li (nu cn thit) Td .EXE t ng ha, ta c th to file .BAT cha cc lnh trn. V d: To file RunASM.bat trong cng th mc vi tp tin .ASM vi ni dung nh sau : tasm %1 tlink %1 %1 (%1 l ly tham s th nht trong command line) Sau bin dch, lin kt v thc thi chng trnh hello.ASM ta ch cn g : RunASM helloB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

55

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Chng trnh emu8086: Chng trnh emu8086 l chng trnh lp trnh m phng cho 8086 (tng thch Intel v AMD) bao gm b dch ASM v gio trnh (ting anh) cho ngi mi bt u. Chng trnh c th chy ht hoc chy tng bc, ta c th nhn thy cc thanh ghi, b nh, stack, bin,

Hnh 2-5. Emu8086 - Mi trng son tho

Hnh 2-6. Emu8086 - Gi tr cc c v mn hnh hin th

56

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Hnh 2-7. Emu8086 - Mn hnh Debug chng trnh

2.4.3 Cu trc chung ca chng trnh hp ng 2.4.3.1 Cu trc ca mt lnh hp ng Tham kho [9] Mt dng lnh trong chng trnh hp ng gm c cc trng sau: Tn Lnh Ton hng Ch thch A: Mov AH, 10h ; a gi tr 10h vo thanh ghi AH Trng tn cha nhn, tn bin hay tn th tc. Cc tn nhn c th cha ti a 31 k t, khng cha k t trng (space) v khng c bt u bng s. Cc nhn c kt thc bng du ':'. Trng lnh cha cc lnh s thc hin. Cc lnh ny c th l cc lnh tht (MOV) hay cc lnh gi (PROC). Cc lnh tht s c dch ra m my. Trng ton hng cha cc ton hng cn thit cho lnh (AH,10h). Trng ch thch phi c bt u bng du ';'. Trng ny ch dng cho ngi lp trnh ghi cc li gii thch cho chng trnh. Chng trnh dch s b qua cc tt c nhng g nm pha sau du ;

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

57

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

. Cu trc thng thng ca mt chng trnh hp ng dng file *.exeTITLE Chng trnh hp ng .MODEL Kiu kch thc b nh ; Khai bo quy m s dng b nh .STACK Kch thc ; Khai bo dung lng on stack .DATA ; Khai bo on d liu msg DB 'Hello$' .CODE ; Khai bo on m main PROC CALL Subname ; Gi chng trnh con main ENDP Subname PROC ; nh ngha chng trnh con RET Subname ENDP END main

Quy m s dng b nh:

Thng thng, cc ng dng n gin ch i hi m chng trnh khng qu 64 KB v d liu cng khng ln hn 64 KB nn ta s dng dng Small: .MODEL SMALL CPU 8086 c th truy nhp ti a 1MB b nh RAM. Dung lng ny l tha s dng cho bt k loi my tnh no.Bn b nh ca my tnh IBM PC a ch vt l ca vng nh (HEX) 00000 - 00400 00400 - 00500 00500 - A0000 A0000 - B1000 B1000 - B8000

Gii thch vn tt Vector ngt. B mo phng s load file ny: c:\emu8086\INT_VECT ti a ch vt l 000000 Vng thng tin h thng. Mt vng nh t do. Mi khi l 654,080 byte. Ti y c th load chng trnh Vng nh mn hnh cho VGA, monochrome, v cho cc b iu hp khc D trB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

58

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Bn b nh ca my tnh IBM PC a ch vt l ca vng nh (HEX)

Gii thch vn tt 32kb nh mn hnh cho ch ha mu (CGA). B m phng s dng vng nh ny lu 8 trang vng nh mn hnh. Mn hnh m phng c th thay i kch thc, nn b nh ti thiu c yu cu cho mi trang, mc d b m phng lun lun s dng 1000h (4096 byte) cho mi trang (xem ngt 10h, AH=05h) D tr ROM BIOS v m rng. B m phng ti file BIOS_ROM ti a ch vt l 0F4000h. a ch ca bng vector ngt ch ti vng nh ny to hm ngt m phng.

B8000 - C0000

C0000 - F4000 F4000 - 10FFEF

Bng vector ngt (vng nh t 00000h n 00400h) S hiu a ch a ch ca chng trnh con BIOS ngt (HEX) vector ngt (address of BIOS sub-program ) 00 00x4 = 00 F400:0170 CPU to, li chia 04 04x4 = 10 F400:0180 - CPU to, pht hin INTO trn 10 10x4 = 40 F400:0190 Hm video 11 11x4 = 44 F400:01D0 Nhn danh sch thit b BIOS 12 12x4 = 48 F400:01A0 Nhn kch thc b nh 13 13x4 = 4C F400:01B0 - Cc hm v a 15 15x4 = 54 F400:01E0 Cc hm BIOS 16 16x4 = 58 F400:01C0 - Cc hm bn phm 17 17x4 = 5C F400:0400 My in 19 19x4 = 64 FFFF:0000 Khi ng li 1A 1Ax4 = 68 F400:0160 Hm thi gian 1E 1Ex4 = 78 F400:AFC7 vector tham s a 20 20x4 = 80 F400:0150 Hm DOS: Kt thc chng trnh 21 21x4 = 84 F400:0200 Cc hm ca DOS 33 33x4 = CC F400:0300 Cc hm chut Cc hm khc ??x4 = ?? F400:0100 Cc ngt mc nh Vng thng tin h thng (B nh t 00400h to 00500h) Kch thc Gii thch Danh sch thit b BIOS WORD Trng bit BIOS tm thy phn cng c ci: bit(s) Gii thch 15-14 S thit b song song 13 D tr

a ch (HEX)

0040h:0010

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

59

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Bn b nh ca my tnh IBM PC a ch vt l ca vng nh (HEX)

Gii thch vn tt

0040h:0013 0040h:004A 0040h:004E

0040h:0050 0040h:0062 0040h:0084

12 Cng game c ci 11-9 S thit b ni tip 8 D tr 7-6 S a mm (tr 1): 00 a mm n; 01 Hai da mm; 10 Ba a mm; 11 Bn a mm; 5-4 Khi to ch Video: 00 EGA,VGA,PGA, hoc on-board video BIOS khc; 01 40x25 CGA mu. 10 80x25 CGA mu (M phng mc nh). 11 80x25 en trng. 3 D tr. 2 Chut PS/2. 1 B x l ton hc; 0 c ci khi khi ng t a mm. kilobytes bt u vng nh lin tip ti a ch 00000h t ny cng c tr v AX bi INT 12h WORD gi tr ny c t l 0280h (640KB) S ct trn mn hnh. WORD Mc nh l 0032h (50 ct) a ch bt u trang mn hnh hin hnh trong b nh mn WORD hnh (sau 0B800:0000) Gi tr mc nh: 0000h Bao gm v tr hng v ct cho con tr trong mi ca tm 8 WORD trang nh mn hnh. Gi tr mc nh: 00h (cho tt c 8 t (words) S trang mn hnh hin hnh BYTE Mc nh: 00h (trang u tin) Hng trn mn hnh tr 1 BYTE Gi tr mc nh: 13h (19+1=20 ct) Bng 2-4. Bn b nh, a ch ngt ca 8086

Khai bo kch thc stack: Khai bo stack dng dnh ra mt vng nh dng lm stack (ch yu phc v cho chng trnh con), thng thng ta chn khong 256 byte l s dng (nu khng khai bo th chng trnh dch t ng cho kch thc stack l 1 KB): .STACK 256 60B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Khai bo on d liu: on d liu dng cha cc bin v hng s dng trong chng trnh. Khai bo on m: on m dng cha cc m lnh ca chng trnh. on m bt u bng mt chng trnh chnh v c th c cc lnh gi chng trnh con (CALL). Mt chng trnh chnh hay chng trnh con bt u bng lnh PROC v kt thc bng lnh ENDP (y l cc lnh gi ca chng trnh dch). Trong chng trnh con, ta s dng thm lnh RET tr v a ch lnh trc khi gi chng trnh con. Chng trnh c kt thc bng lnh END trong tn chng trnh pha sau lnh END s xc nh l chng trnh chnh. Nu sau lnh END khng ch ra chng trnh no c th s ly chng trnh con u on m lm chng trnh chnh. V d: Chng trnh sau in ra mn hnh dng ch Hello !.model .stack .data s .code small 100h DB Hello !$ ; khai bo xu k t cn in

mov AX,@data ; ly a ch data segment ghi vo DS mov DS,AX ; V model small, y cng l a ch ; segment ca xu s. ; xut chui: mov DX, OFFSET s ; ly a ch offset ghi vo DX mov AH , 9 int 21h ; gi hm 9, ngt 21h in mov AH, 4Ch ; Thot khi chng trnh int 21h end

Lu : - Mi chng trnh u phi c on CODE thot khi chng trnh, nu khng chng trnh s khng dng khi ht chng trnh ca mnh. 2.4.3.2 Khung chng trnh dch ra .exe Cc tp tin .EXE v .COM DOS ch c th thi hnh c cc tp tin dng .COM v .EXE. Tp tin .COM thng dng xy dng cho cc chng trnh nh cn .EXE dng cho cc chng trnh ln. Tp tin .EXE - Nm trong nhiu on khc nhau, kch thc thng thng ln hn 64 KB. - C th gi c cc chng trnh con dng near hay far. - Tp tin .EXE cha mt header u tp tin cha cc thng tin iu khin cho tp tin.B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

61

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

data segment ; add your data here! pkey db "press any key to exit ...$" ends stack segment dw 128 dup(0) ends CODE segment start: ; set segment registers: MOV ax, data MOV ds, ax MOV es, ax ; add your CODE here lea dx, pkey MOV ah, 9 int 21h

; output string at ds:dx

; wait for any key.... MOV ah, 1 int 21h MOV ax, 4c00h ; exit to operating system. int 21h ends END start ; set entry point and stop the assembler.

2.4.3.3 Khung chng trnh dch ra .com - Tp tin .COM ch c mt on nn kch thc ti a ca mt tp tin loi ny l 64 KB. - Tp tin .COM c np vo b nh v thc thi nhanh hn tp tin .EXE nhng ch p dng c cho cc chng trnh nh. - Ch c th gi cc chng trnh con dng near. Khi thc hin tp tin .COM, DOS nh v b nh v to vng nh di 256 byte v tr 0000h, vng ny gi l PSP (Program Segment Prefix), n s cha cc thng tin cn thit cho DOS. Sau , cc m lnh trong tp tin s c np vo sau PSP v tr 100h v a gi tr 0 vo stack. Nh vy, kch thc ti a thc s ca tp tin .COM l 64 KB 256 byte PSP 2 byte stack. Tt c cc thanh ghi on u ch n PSP v thanh ghi con tr lnh IP ch n 100h, thanh ghi SP c gi tr 0FFFEh. 62B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

; You may customize this and other start-up templates; ; The location of this template is ;c:\emu8086\inc\0_com_template.txt CSEG SEGMENT ; code segment starts here. org 100h ; add your CODE here ret

Khai bo d liu Khi khai bo d liu trong chng trnh, nu s dng s nh phn, ta phi dng thm ch B cui, nu s dng s thp lc phn th phi dng ch H cui. Ch rng i vi s thp lc phn, nu bt u bng ch A..F th phi thm vo s 0 pha trc. V d:1011b ; S nh phn 1011 ; S thp phn 1011d ; S thp phn 1011h ; S thp lc phn

Khai bo hng, bin C php: D hoc D dup() Cc kiu d liu: B (1 byte), W (2 bytes), D (4 bytes) Nu khng khi to, dng du hi ? V d: Khai bo trong C Khai bo bin trong hp ng char ch; ch DB ? char ch = a; ch DB a char ch = 5; ch DB 5 Char s[]=\nhello world! s DB 10,13,hello world!$ int i=100; i DW 100 long L; L DD ? char a[] = {1,2,3}; a DB 1,2,3 char a[100]; a DB 100 dup(?) char a[100][50]; a DB 100 dup(50 dup(?))

B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

63

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

Hng s: Khai bo hng s trong chng trnh hp ng bng lnh EQU. V d:A1 A2 EQU EQU 02, 11 19, 81

Ton t trong hp ng Ton t s hc

Trong bt, bt1, bt2 l cc biu thc hng, n l s nguyn. Ton t logic: Bao gm cc ton t AND, OR, NOT, XOR Ton t quan h: Cc ton t quan h so snh 2 biu thc, cho gi tr true (1) nu iu kin tho v false (0) nu khng tho.

Ton t cung cp thng tin: - Ton t SEG: SEG bt ; Ton t SEG xc nh a ch on ca biu thc bt. bt c th l bin, nhn, hay cc ton hng b nh. - Ton t OFFSET: OFFSET bt ;Ton t OFFSET xc nh a ch offset ca biu thc bt. bt c th l bin, nhn, hay cc ton hng b nh. VD: MOV AX,SEG A ; Np a ch on v a ch offset MOV DS,AX ; ca bin A vo cp thanh ghi MOV AX,OFFSET A ; DS:AX - Ton t ch s [ ]: (index operator) Ton t ch s thng dng vi ton hng trc tip v gin tip. 64B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

- Ton t (:) (segment override operator) Segment:bt ; Ton t : quy nh cch tnh a ch i vi segment c ch. Segment l cc thanh ghi on CS, DS, ES, SS. Ch rng khi s dng ton t : kt hp vi ton t [ ] th segment: phi t ngoi ton t [ ]. VD: Cch vit [CS:BX] l sai, ta phi vit CS:[BX] - Ton t TYPE: TYPE bt ;Tr v gi tr biu th dng ca biu thc bt. Nu bt l bin th s tr v 1 nu bin c kiu byte, 2 nu bin c kiu word, 4 nu bin c kiu double word. Nu bt l nhn th tr v 0FFFFh nu bt l near v 0FFFEh nu bt l far. Nu bt l hng th tr v 0. - Ton t LENGTH: LENGTH bt ;Tr v s n v b nh cp cho bin bt - Ton t SIZE: SIZE bt ;Tr v tng s cc byte cung cp cho bin btVD: A DD 100 DUP(?) MOV AX,LENGTH A ; AX = 100 MOV AX,SIZE A ; AX = 400

Cc ton t thuc tnh: - Ton t PTR: Loai PTR bt ; Ton t ny cho php thay i dng ca biu thc bt. Nu bt l bin hay ton hng b nh th Loai l byte, word hay dword. Nu bt l nhn th Loai l near hay far.VD: A DW 100 DUP(?) B DD ?

MOV AH,BYTE PTR A ; a byte u tin trong mng A vo ;thanh ghi AH MOV AX,WORD PTR B ; a 2 byte thp trong bin B vo thanh ;ghi AX - Ton t HIGH, LOW: HIGH bt LOW bt Cho gi tr ca byte cao v thp ca biu thc bt, bt phi l mt hng.VD: A EQU 1234h MOV AH,HIGH A ; AH 12h MOV AH,LOW A ; AH 34h

Chng trnh con Chng trnh con (PROC) l mt phn ca m ngun m c th gi chng trong chng trnh ca bn lm mt vi nhim v nht nh no . Chng trnh con lm cho chng trnh c cu trc hn v d hiu hn. Thng thng, chng trnh con tr li ngay sau im gi n. Cu trc mt chng trnh con nh sau:B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

65

Bi ging Vi x l - Vi iu khin

Chng 2 H vi x l Intel 80x86

TN PROC ; y l m lnh ca chng trnh con RET TN ENDP

TN l tn ca chng trnh con, tn phi ging nhau trn v di ca chng trnh con, l cch kim tra im kt thc ca chng trnh con. Hu nh chc chn, bn bit rng lnh RET c s dng tr v h iu hnh. Lnh tng t cng c s dng tr v t chng trnh con (thc s, OS coi chng trnh ca chng ta nh mt chng trnh con c bit) PROC v ENDP l cc nh hng chng trnh dch, nn chng khng c dch ra m my. Chng trnh dch nh a ch ca chng trnh con. Lnh CALL c s dng gi chng trnh con y l mt v d:ORG 1