bai giang vxl-vdk (08-2011) (150p)word2010

Upload: ngohongthai225

Post on 11-Jul-2015

5.540 views

Category:

Documents


20 download

TRANSCRIPT

COMPUTER ENGINEERINGK THUT MY TNH

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

2011

TRNG 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 Khi nim .................................................................................................................. 10 1.1.2 Phn bit vi x l v vi iu khin ............................................................................ 11 1.1.3 Lch s pht trin ca vi x l ................................................................................... 13 1.1.4 ng dng ca Vi x l/Vi iu khin ....................................................................... 14 1.2 Cu trc chung ca h Vi x l/Vi iu khin .......................................................... 15 1.3 nh dng d liu v biu din thng tin trong h vi x l vi iu khin ........... 16 1.3.1 Cc h m v m BCD ............................................................................................ 16 1.3.2 M k t - Alphanumeric CODE (ASCII, EBCDIC)................................................ 17

CHNG 2. VI X L INTEL 8086/8088 ....................................................... 192.1 Tng quan v vi x l Intel 8086/8088 ....................................................................... 20 2.1.1 Cc thnh phn c bn ca CPU ............................................................................... 20 2.1.2 Cu trc ca 8086/8088 ............................................................................................. 20

Hnh 2-2. S khi 8086/8088 .......................................................................... 212.1.3 M t chc nng cc chn ......................................................................................... 26 2.2 Ch a ch............................................................................................................... 30 2.2.1 M ho lnh trong vi x l 8086/8088 ...................................................................... 30 2.2.2 Cc ch a ch ...................................................................................................... 32 2.3 Tp lnh Assembly ...................................................................................................... 35 2.3.1 Gii thiu chung ........................................................................................................ 35 2.3.2 Cc nhm lnh ........................................................................................................... 36 2.4 Lp trnh hp ng (Assembly) cho vi x l 80x86 [12] ............................................ 52 2.4.1 Gii thiu chung v hp ng ..................................................................................... 52 2.4.2 Cc bc khi lp trnh ............................................................................................... 53 2.4.3 Cu trc chung ca chng trnh hp ng ................................................................ 55 2.4.4 Cc cu trc iu khin c bn .................................................................................. 65 2.4.5 Ngt trong Assembly ................................................................................................. 67 2.4.6 Cc v d .................................................................................................................... 70 2.5 Ghp ni b nh v thit bi ngoi vi .......................................................................... 76 2.5.1 Ghp ni b nh ........................................................................................................ 76 2.5.2 Ghp ni thit b ngoi vi .......................................................................................... 79 2.5.3 Cc mch cng n gin ........................................................................................... 80 Vi mch cht 74LS373: ......................................................................................................... 81 2.6 Cu hi v bi tp ........................................................................................................ 81

CHNG 3. H VI IU KHIN 8051 ........................................................... 833.1 Gii thiu chung .......................................................................................................... 84 3.1.1 ng dng ca vi iu khin ....................................................................................... 84 3.1.2 Hot ng ca vi iu khin. ..................................................................................... 84 3.1.3 Cu trc chung ca vi iu khin .............................................................................. 85 3.2 Kin trc vi iu khin 8051 ....................................................................................... 91 3.2.1 Chun 8051 ................................................................................................................ 91 3.2.2 Cc chn vi iu khin 8051...................................................................................... 92 3.2.4 Cng vo/ra ............................................................................................................... 93 3.2.5 T chc b nh 8051 ................................................................................................. 97 3.2.6 Cc thanh ghi chc nng c bit (SFRs - Special Function Registers) ................ 102 3.2.7 B m v b nh thi ........................................................................................... 106 3.2.8 Truyn thng ni tip .............................................................................................. 106 3.2.9 Ngt vi iu khin 8051 .......................................................................................... 107 3.3 Lp trnh hp ng cho 8051 ..................................................................................... 107

3.3.1 Cc ch a ch ................................................................................................... 107 3.3.2 Tp lnh trong 8051 ................................................................................................ 109 3.3.3 Cu trc chung chng trnh hp ng cho 8051 ..................................................... 116 3.4 B m v b nh thi ............................................................................................. 119 3.5 Truyn thng ni tip................................................................................................ 126 3.6 X l ngt ................................................................................................................... 133 3.7 Cu hi v bi tp cui chng................................................................................ 139

CHNG 4. NG DNG ................................................................................. 1414.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 Vo/ra s..................................................................................................................... 142 Timer .......................................................................................................................... 145 Lp trnh ngt ngoi. ................................................................................................ 147 iu khin LED 7 thanh ........................................................................................... 147 Nhn d liu qua UART ........................................................................................... 149 Truyn d liu qua UART........................................................................................ 151 Ghp ni 8051 vi ADC0804 .................................................................................... 152 Ghp ni bn phm s ............................................................................................... 154 Ghp ni ng c bc ............................................................................................. 157

CHNG 5. CC H VI IU KHIN TIN TIN ................................... 1595.1 Atmel AVR ................................................................................................................. 160 5.1.1 Lch s h AVR ...................................................................................................... 160 5.1.2 Tng quan v thit b ............................................................................................... 160 5.1.3 Kin trc thit b ...................................................................................................... 161 5.1.4 Program Memory (Flash) ........................................................................................ 161 5.1.5 EEPROM ................................................................................................................. 161 5.1.6 Chng trnh thc thi .............................................................................................. 162 5.1.7 Tp lnh ................................................................................................................... 162 5.1.8 Tc MCU............................................................................................................ 163 5.1.9 Nhng c tnh ........................................................................................................ 163 5.2 Vi iu khin PIC ...................................................................................................... 165 5.2.1 Lp trnh cho PIC .................................................................................................... 165 5.2.2 Cc c tnh chnh ................................................................................................... 166 5.2.3 H vi iu khin PIC 8/16-bit ................................................................................. 167 5.3 ARM ........................................................................................................................... 168 5.3.1 Cu trc ARM ......................................................................................................... 168 5.3.2 Lch s pht trin ..................................................................................................... 168 5.3.3 Cc dng li ............................................................................................................. 170 5.3.4 Cc lu v thit k ................................................................................................ 172

Ti liu tham kho .............................................................................................. 173 Danh mc hnh nh............................................................................................. 174 Danh mc m ngun ........................................................................................... 176 Danh mc bng ................................................................................................... 176 Ch mc 177

I HC THI NGUYN TR H TRNG I HC THU NGHI K THUT CNG NGHIP

CNG HO X HI CH NGHA VIT NAM l 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: B mn K thut My tnh, Bi ging Vi x l vi iu khin - Sch tham kho: Vn Th Minh, K thut vi x l, NXB KHKT, 1997. Tng Vn On, H vi iu khin 8051, NXB KH&KT, 2005. Nguyn Tng Cng, Phan Quc Thng, Cu trc v lp trnh h vi iu khin 8051, NXB KH&KT, 2004. Michael Hordeski, Personal Computer Interfaces, Mc. Graw Hill, 1995. 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 tho lun: 10% + im chuyn cn: 10% + im thi kt thc hc phn: 60 %.

12. Ni dung chi tit hc phn v lch trnh ging dy Nhm bin son: ThS. Nguyn Tun Anh ThS. Nguyn Tun Linh ThS. Nguyn Vn Huy ThS. Nguyn Tin Duy Th.S Tng Cm Nhung Th.S Phng Th Thu Hin

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

Ti liu hc tp, tham kho

Hnh thc hc

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.2. Cu trc ca chng trnh hp ng 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 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 vi x l vi iu khin; khi nim, 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 Khi nim Phn bit vi x l v vi iu khin Lch s pht trin ca cc b x l ng dng ca vi x l v vi iu khin Cu trc chung ca h vi x l/vi iu khin nh dng d liu v biu din thng tin trong vi x l vi iu khin Cc h m Biu din s v k t

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 Khi nimVi x l: hay cn gi l b vi x l(vit tt l P hay uP) l mt vi mch tch hp a nng lp trnh c, thc hin vic x l d liu nh phn theo cc cu lnh lu trong b nh. Vi x l lm vic da trn xung clock v cc thanh ghi, n tch hp tt c (hoc gn nh tt c) cc chc nng ca mt CPU. Vi x l thng c s dng trong my tnh hoc cc ng dng a mc ch, yu cu tc tnh ton cao trn khi lng d liu ln.

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

D liu vo dng nh phn

Vi x l

D liu ra hoc cc lnh iu khin

Lnh trong b nh

Hnh 1-2. Minh ho chc nng ca vi x l

-

-

Tnh a nng(multipurpose): tc l vi x l c th c s dng thc hin nhiu chc nng hoc nhim v tnh ton phc tp khc nhau(nh gii m cc file mp3, mp4, wmv, tm kim mt hng trong c s d liu hay thng k thu chi trong bi ton qun l bn hng cho siu th, tnh ton xc nh v tr ca bn trong googlemap, tnh ton xc nh qu o hay lc y cho tu khng gian,). Tnh lp trnh c(programable): tc l vi x c th c ch dn thc hin cc nhim v khc nhau trong kh nng ca n. Cc ch dn y c gi l chng trnh(program) v c lu trong b nh(memmory).B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

10

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

Vi iu khin: (vit tt C, uC hoc MCU) l mt my tnh tch hp trn mt chip duy nht bao gm c CPU, b nh (ROM+RAM) v cc ngoi vi lp trnh c. Vi iu khin c thit k vi mc tiu ch yu cho cc h thng nhng(embedded system), nhm gii quyt cc bi ton chuyn bit. N c ng dng rng di trong cc thit b hoc cc sn phm t ng ho nh robot, thit b t, thit b cm tay, chi, Cc ng dng ny ch yu cu tc tnh ton v d liu x l mc nh hoc va phi, nhng li yu cu cao v kh nng kt ni, xut/nhp d liu linh hoc v thi gian thc vi mi trng bn ngoi. 1.1.2 Phn bit vi x l v vi iu khin Cu hi t ra l vi x l(microprocessor) v vi iu khin(microcontroller) c ging nhau khng? Ta khng nh cu tr li l Khng, bi v vi x l nm trong(l CPU) vi iu khin. Chc nng chnh ca vi x l l x l d liu (nh cng, tr, nhn, chia, so snh,...), n khng c kh nng giao tip trc tip vi cc thit b ngoi vi(nh my in, bn phm,...). Vi x l vt tri hn so vi vi iu khin v kh nng v tc tnh ton, c th 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, chuyn bit, khng i hi kh nng tnh ton ln th vic ng dng vi x l cn cn nhc. Vi h thng d ln hay nh, nu dng vi x l th cng i hi cc khi mch in giao tip phc tp. Cc khi ny bao gm b nh cha d liu, chng trnh thc hin, cc mch in giao tip ngoi vi xut nhp v iu khin. kt ni cc khi ny i hi ngi thit k phi hiu bit r v cc thnh phn vi x l, b nh, cc thit b ngoi vi. Cui cng h thng c to ra kh phc tp, chim nhiu khng gian, gi thnh cao, khng ph hp p dng cho cc h thng nh v chuyn bit, V mt s nhc im trn nn cc nh ch to tch hp mt s thnh phn c bn nh vi x l, b nh v mt s mch giao tip ngoi vi vo mt IC duy nht c gi l Vi iu khin. Vi iu khin c kh nng tng t nh 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 v vi mch nh ngi dng vi x l, kt cu mch in cng trB 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

nn n gin hn nhiu v c bit vi iu khin c kh nng giao tip trc tip vi cc thit b ngoi vi. Kh nng v tc x l d liu ca vi iu khin b gii hn, nhng li c gi thnh r, s dng n gin, do n c ng dng rng ri vo nhiu ng dng chuyn bit, khng i hi tnh ton phc tp. Bng 1-1. Tng kt so snh gia Vi x l v Vi iu khin Microprocessor CPU, timers, I/O ports, memmory (ROM/RAM) l cc IC ring bit. Thng c s dng cho cc ng dng a nng (VD nh my tnh). C th ti v thc thi cc phn mn mt cch linh hot theo ngi s dng (My tnh c th ci v chy nhiu loi phn mm). Kch thc b nh, s lng cng vo ra ln, c th c cu hnh li nng cp. Kch thc IC ln, tiu hao nng lng ln, v chi ph t. Tc rt ln thng tnh bng GHz Tp lnh ln, phc tp. Microcontroller CPU, timers, I/O ports, memmory (ROM/RAM) c tch hp trong mt IC duy nht. Thng c s dng cho cc ng dng chuyn dng(nh my nh, in thoi, my git,...). Phn mm thng c np sn trong ROM v ch phc v cho ng dng ca h thng(phn mm my nh khng th dung cho in thoi). Kch thc b nh v s cng vo ra b hn ch tu thuc vo loi vi iu khin c dng.

Kch thc nh (cng nh cng tt), tiu hao nng lng t, chi ph ti thiu. Tc hn ch thng tnh bng MHz Tp lnh nh gn, n gian.

12

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.3 Lch s pht trin ca vi x l

Hnh 1-3. 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 choit 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

13

Bi ging Vi x l - Vi iu khin

Chng 1 Tng quan v vi x l vi iu khin

1.1.4 ng dng ca Vi x l/Vi iu khin Vi x l chnh l CPU ca cc loi my tnh ngy nay, nn tt c cc ng dng c s dng my tnh chnh l mt trong nhng ng dng ca vi x l. y ch a ra cc ng dng tiu biu ca vi iu khin. Vi iu khin c s dng thit cc sn phm nh: 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 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,... o 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,...) o ... Cc sn phm cng nghip: o o o o o o iu khin ng c o lng (o in p, o dng in, p sut, nhit ,...) Cn bng ti, cn toa xe, cn t,... iu khin cc dy truyn sn xut cng nghip Lm b iu khin trung tm cho Robot ...

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 l/Vi iu khinChng ta bit vi x l mun hot ng phi c ghp ni vi mt s thnh phn c bn khc cng lm vic, ngi ta gi h vi x l. Cn vi iu khin li chnh l mt h vi x l n gin thu nh. V vy mt s khi tng qut cho mt h vi x l hay mt vi iu khin c a ra Hnh 1-3.Memmory CPU (Microprocessor) Input/Output

Address Bus Data Bus Control Bus

Hnh 1-4. S tng qut ca h vi x l

-

-

-

-

Memory (b nh): l ROM/RAM lu tr chng trnh hay cc kt qu trung gian. Input/Output: b iu khin xut nhp d liu giao tip vi cc thit b ngoi vi. CPU-Central Processing Unit(n v x l trung tm): 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). Address bus(Bus a ch): L cc ng tn hiu song song 1 chiu ni t CPU n b nh, CPU gi gi tr a ch ca nh cn truy nhp (c/ghi) trn cc ng tn hiu ny. rng ca bus a ch l n (l s cc ng tn hiu, vi n c th l 8, 18, 20, 24, 32 hay 64), khi s nh m CPU c th a ch ho c s l 2n. Data bus(Bus d liu): 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. rng Bus d liu l m(vi m c th l 4, 8, 16, 32 hay 64), khi s bit m mi mt chu k c/ghi c th truyn trn trn bus l m bits. Control bus(Bus iu khin): CPU gi tn hiu thng qua bus ny iu khin mi hot ng ca h thng. Cc tn hiu iu khin thng l: c/ ghi b nh, c/ ghi cng vo/ra,

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

1.3 nh dng d liu v biu din thng tin trong h vi x l vi iu khin1.3.1 Cc h m v m BCD H thp phn Decimal: S dng 10 k t {0,1,2,3,4,5,6,7,8,9} t hp to nn cc s. Gi tr ca 1 s D trong h thp php tng qut l: = 10

VD: Vi D=123 ta c n=3 vy D=1*102+2*101+3*100=123 H nh phn Binary: S dng 2 k t {0,1} t hp to nn cc s. Gi tr ca 1 s B trong h nh php tng qut l: = 2

VD: Vi B=101 ta c n=3 vy B=1*22+0*21+1*20=5 H thp lc phn Hexadecimal: S dng 16 k t {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} t hp to nn cc s. Gi tr ca 1 s H trong h thp lc php tng qut l: = 16

VD: Vi H=123 ta c n=3 vy H=1*162+2*161+3*160=291 Bng gi tr cc k t s trong h thp lc phn:H thp lc phn 0 1 2 3 4 5 6 7 8 9 A B C D E F H thp phn 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

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

M BCD: Trong cc h thng in t v my tnh m BCD l phng thc m ho nh phn cho mi k t s h thp phn. M BCD c 2 loi: o M BCD khng nn (unpacked): mi mt s thp phn t 0 n 9 c m ho bng 8 bit nh phn. o M BCD nn (packed): mi mt s thp phn t 0 n 9 c m ho bng 4 bit nh phn. M BCD c s dng rng ri trong lnh vc in t, khi cn hin th cc gi tr s trn cc h thng quang bo (nh LED 7 on) m khng cn n s h tr ca mt vi x l. Tuy nhin cn c cc IC chuyn dng trong vic gii m/m ho BCD. V d nh ta cn hin th s 1 ln 1 LED 7 on nh Hnh 1-5, chc hn ta s tm cch cp ngun cho 2 led f v e (hoc b v c), v cch lm tng t vi cc s khc t 0 n 9. Ta gi l gii m th cng, nhng nh c m BCD vi s h tr ca cc IC chuyn dng (nh IC gii m BCD 74xx47), ngi s dng ch cn gi cho IC m 4 bit hoc 8 bit ca s 1, cng vic cn li c th hin th c s 1 trn LED l ca IC.

Hnh 1-5.LED 7 on

S thp phn 0 1 2 3 4 5 6 7 8 9

M BCD (4 bit) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

Bng 1-2. M BCD ca 10 s thp 0..9

1.3.2 M k t - Alphanumeric CODE (ASCII, EBCDIC) ASCII (American Standard Code for Information Interchange - Chun m trao i thng tin Hoa K), thng c pht m l t-x-ki, l b k t v b m k t da trn bng ch ci La Tinh c dng trong ting Anh hin i v cc ngn ng Ty u khc. N thng c dng hin th vn bn trong my tnh v cc thit b thng tin khc. N cng c dng bi cc thit b iu khin lm vic vi vn bn. Vi m ASCII chun s dng 7 bit m ho cho 128 k t nh Hnh 1-6.

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

Hnh 1-6. Bng m ASCII

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 2 H vi x l Intel 80x86

CHNG 2. VI X L INTEL 8086/8088Mc 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 vi x l 8086/8088. Tm tt chng: Cu trc phn cng ca b vi x l 8086/8088 Ch a ch Tp lnh Cc mch ph tr Biu thi gian ghi/c Lp trnh hp ng (Assembly) cho vi x l 8086/8088

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 2 Vi x l Intel 8086/8088

2.1 Tng quan v vi x l Intel 8086/80882.1.1 Cc thnh phn c bn ca CPU

Hnh 2-1.Cu trc tng qut ca CPU

Mt cch tng qut CPU gm c 3 thnh phn: Control Unit (CU): Khi iu khin, to ra tt c cc tn hiu iu khin trong CPU. N khi to cc thanh ghi khi m ngun, thc hin vic np v gii m lnh. Nhn v gi li cc tn hiu iu khin qua h thng Bus gip CPU ca th giao tip vi cc thit b bn ngoi. 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 trnh) 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: Tp cc thanh ghi, l cc b nh c kch thc nh (thng l 8, 16, 32, 64, 128 bit) c tc cao. c s dng lu d liu hoc a ch lnh trong qu trnh thc thi cu CPU. ALU: Khi ton hc v logic, thc hin cc php ton s hc v logic (nh +,-,*,/,and,or,xor,). 2.1.2 Cu trc ca 8086/8088 Vi x l 8088/8086 thc thi mt chng trnh bng cch lp i lp li 3 thao tc chnh l ly lnh (fetch), gii m lnh (decode) v thc hin (execute). S khi ca b vi x l 8088/8086 gm 2 n v chnh(Hnh 2-2): EU (Execution Unit): n v (khi) thc hin lnh. BIU (Bus Interface Unit): n v giao tip bus (khi tng thch bus) iu khin bus hiu qu hn.

2.1.2.1. EU Khi thc thi n v EU ca 8088 v 8086 ging nhau, bao gm ALU, thanh ghi c, cc thanh ghi m v cc thanh ghi a nng. Cc bus d liu bn trong ca EU u l 20B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

16 bit. EU khng kt ni trc tip vi bn ngoi, n nhn lnh t hng i lnh bn trong BIU. Nu l lnh cn truy nhp b nh hoc cng vo/ra (I/O port - thit b ngoi vi) th EU yu cu BIU ly hoc gi d liu. Tt c cc a ch m EU thao tc u l 16 bit, khi gi sang BIU th BIU s thc hin tnh ton to a ch vt l 20 bit v pht ra cc chn a ch ca chip.AX BX CX DX SP BP SI DI

EU

Bus a ch (20 bit)

BIU

cc thanh ghi a nng

cc thanh ghi con tr v ch s

cc thanh ghi on v con tr lnh

CS DS SS ES IP

Bus d liu (8 bit) Bus trong 8 bit d liu 20 bit a ch

Bus d liu ALU(16bit)

cc thanh ghi tm

Logic iu khin BUSKhi iu khin ca EUm lnh (hng i lnh) (6 byte cho 8086)

BUS ngoi

thanh ghi c

Hnh 2-2. S khi 8086/8088

a) Cc thanh ghi a nng C 4 thanh ghi, bao gm cc thanh ghi 16 bit Ax, Bx, Cx, Dx. Mi thanh ghi ny c th c phn chia thnh 2 thanh ghi 8 bit lm vic c lp nhau. AX (Accumulator, Acc): Thanh cha, cha tm thi d liu (ton hng, kt qu php ton nh nhn, chia v c coi l Acc). AX c th c phn chia thnh AH (Phn cao) v AL (Phn thp). BX (Base): Thanh ghi c s, thng c dng cha a ch c s cn truy nhp trong lnh XLAT. BX c th c phn chia thnh BH (Phn cao) v BL (Phn thp).

CX (Count): B m, thng c dng m s ln lp ca cng vic (s ln lp trong cc vng lp). CX c th c phn chia thnh CH (Phn cao) v CL (Phn thp). CX thng c dng cha s ln lp B mn K thut my tnh Khoa in t 21Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

trong cc lnh LOOP, cn CL thng cha s ln dch hoc quay trong cc lnh dch quay thanh ghi. DX (Data): Thanh ghi liu, s dng cha ton hng, kt qu. DX cng AX dng cha ton hng hoc kt qu ca cc php nhn, chia s 16 bit. DX cn cha a ch cng trong cc lnh vo ra trc tip (IN, OUT). DX c th c phn chia thnh DH (Phn cao) v DL (Phn thp).

b) Cc thanh ghi con tr Cc thanh ghi SP, BP l cc thanh ghi con tr khng tch ri. SP (Stack Pointer): Thanh ghi con tr ngn xp, tr vo nh hin thi ca ngn xp nm trong on ngn xp SS (N lun kt hp vi thanh ghi SS). Ta c a ch logic SS: SP. Sau mi thao tc ct mt word vo stack (thao tc Push) th SP t ng gim 2 n v, cn sau thao tc ly mt word ra khi stack (thao tc Pop), SP c t ng tng 2 n v. BP (Base stack Pointer): Con tr c s, lun tr vo mt d liu c th nm trong on ngn xp SS. Ta c a ch logic SS: BP. SI (Source Index): Thanh ghi ch s ngun (hay ngun), ch vo d liu nm trong on DS. Ta c a ch logic DS: SI. DI (Destination Index): Thanh ghi ch s ch, ch d liu trong on DS. Ta c a ch logic DS: DI.

c) Khi ALU Lm nhim v thc hin cc lnh s hc v logic. S hc: +, -, *, /, so snh, o du. Logic: NOT, AND, OR, XOR.

d) Thanh ghi c: y l thanh ghi 16 bit, mi bit c s dng th hin mt trng thi ca b vi x l ti mt thi im nht nh trong qu trnh thc hin chng trnh (dy cc cu lnh), nhng ch dng 9 bit i vi b vi x l 8088/8086. Mi bit c gi l mt c (flag). Gi tr ca mi c c biu din bng cc k hiu gi nh nh cch biu din ca chng trnh Debug ca DOS.OF DF IF TF SF ZF AF PF CF

CF (Carry Flag): C nh (c trn).

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 Vi x l Intel 8086/8088

CF = 1 khi kt qu php ton trn (tc c nh hoc mn ti bit MSB), CF = 0 trong trng hp ngc li. C ny thng c s dng khi thc hin cc php cng, tr cc s nhiu byte. V d: 1011 0001 + 0110 1001 10001 1010 => CF=1 v c nh ti bit th 8 PF (Parity Flag): C chn l.

PF = 1 (PE - Parity Even) khi s bit 1 trong kt qu php ton (hay cc php vn chuyn d liu) l chn, PF = 0 (PO - Parity Old) trong trng hp ngc li. AF (Carry Flag): C nh ph (trn ph - c b tr).

C ny c ngha khi ta lm vic vi s BCD. AF = 1 (AC - Auxiliary Carry) khi c nh hoc mn t mt s BCD thp (4 bit thp) sang mt s BCD cao (4 bit cao) v AF = 0 (NA - No Auxiliary carry) trong trng hp ngc li. SF (Sign Flag): C du. Trong b vi x l 8088/8086 cc s m c biu din di dng s b 2, nn phi dng c SF ch th du ca kt qu.

SF = 1 (NG - NeGative), khi kt qu php ton l mt s m, SF = 0 (PL- PLus) trong trng hp ngc li. ZF (Zero Flag): C rng.

ZF = 1 (ZR - ZeRo) khi kt qu php ton = 0, ZF = 0 (NZ-Non Zero) trong trng hp ngc li. OF (Overflow Flag): C trn.

OF = 1 (OV-OVerflow) khi kt qu l s b 2 vt khun kh biu din (trn s hc, hay ni cch khc: khi cng hai s cng du m kt qu l mt s tri du th OF = 1), OF = 0 (NV-Non oVerflow) trong trng hp ngc li (c ny lm vic vi s c du). C iu khin

C trng thi ph thuc kt qu php ton, cn vi c iu khin ta c th thit lp nh lnh. IF (Interrupt Flag): C ngt.

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 Vi x l Intel 8086/8088

IF = 1 (EI-Enable Interrup), CPU cho php ngt, IF = 0 (DI-Disable Interrup) CPU khng cho php ngt (cm) cc loi ngt che c (Maskable).. TF (Trap Flag): C by.

TF = 1 CPU lm vic trong ch chy tng lnh, thng dng g ri chng trnh (debug). Sau khi thc hin xong mi lnh, b vi x l s pht ra mt lnh ngt (INT) c kim tra chng trnh. DF (Direction Flag): C hng.

iu khin hng x l i vi thao tc chui. DF = 1 (DN-DowN) th cc lnh vn chuyn d liu hay x l chui s thao tc li t phi n tri (a ch cao n a ch thp). DF=0 (UP) trong trng hp ngc li (thao tc cc phn t t a ch thp n a ch cao). 2.1.2.2. BIU - n v giao tip Bus Chc nng chnh BIU l thc hin vic trao i d liu gia CPU vi cc thit b bn ngoi. BIU thc hin cc thao tc np lnh, ghi/c d liu vi b nh hoc cc cng vo ra. a) Hng i lnh: L tp cc thanh ghi Vi 8086 hng i lnh l 6 byte, 8088 hng i lnh l 4 byte. Nh hng i lnh m CPU c th np mt ln nhiu lnh, hoc np lnh khi 1 lnh khc ang c thc thi nhm tng tc x l. b) IP-Thanh ghi con tr lnh Thanh ghi con tr lnh, tr vo lnh tip theo chun b c thc hin nm trong on CS (CS: IP). Sau khi c 1 byte, IP t ng tng thm 1. Nh vy thc t th cp CS:IP mi l con tr lnh v n cha a ch y ca mt lnh trong b nh. c) Cc thanh ghi on CS (Code Segment): Thanh ghi on m, l thanh ghi a ch on m lnh, cha a ch c s (a ch on) ca chng trnh ang thc hin. DS (Data Segment): Thanh ghi on d liu, l thanh ghi a ch on d liu, cha a ch on ca vng d liu m chng trnh ang thc hin s dng. Vng ny thng cha cc bin ca chng trnh. SS (Stack Segment): Thanh ghi on ngn xp, l thanh ghi a ch on b nh ngn xp (stack) ca chng trnh ang chy.

24

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 Vi x l Intel 8086/8088

ES (Extra Segment): Thanh ghi on d liu ph, l thanh ghi a ch on d liu b sung m chng trnh ang thc hin s dng. Vng ny cng thng cha cc bin ca chng trnh. 2.1.2.3. Khng gian a ch 8088 c 20 bit a ch, trong khi cc thanh ghi qun l b nh l 16 bit. V vy xc nh mt ngn nh c a ch 20 bit, n dng 2 thanh ghi 16 bit xc nh a ch. Mt thanh ghi lu a ch on. Mt thanh ghi lu a ch lch (offset)

Mt a ch yu cu trong mt lnh no l a ch logic c dng (Segment:offset) c to ra t vic kt hp cc thanh ghi nh sau: DS:SI DS:DI DS:XX a vt l (phi l s 20 bit) c xc nh nh sau: a vt l = a ch on*16 + a ch lch V d: DS = 4000h, SI = 3F4Dh a ch logic ca ngn nh: 4000:3F4D a ch vt l ca ngn nh: DS * 16 + SI = 40000 + 3F4D = 43F4Dh Ti mt thi im CPU qun l c 4 on nh (DS, SS, CS, ES) , n c th ng thi truy nhp 4 on . B nh c chia thnh nhiu on, mi on c kch thc ti a l 64KB (=216 trong 16 l kch thc ca offset). Vy ta c 16 on tch ri(=220/216 trong 20 l kch thc bus a ch 8086/8088) v a ch lch thay i t 0000 H n FFFFh. Nu a ch on thay i t 0000h n FFFFh th c 64 Kon, khi cc on bao trm ln nhau, 2 on k nhau s cch nhau 16 Byte (Paragraph). Khi khi ng my (hoc Reset) CS c np gi tr F000h, IP c np gi tr FFF0h. a ch ny ch n chng trnh khi ng trong ROM (a ch vt l = F000h*16 + FFF0h = F0000h + FFF0h = FFFF0h).

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 Vi x l Intel 8086/8088

2.1.3 M t chc nng cc chn

Hnh 2-3. S chn 8086/8088

8088 v 8086 gn tng t nh nhau, ch khc rng bus d liu (8088 c 8 cn 8086 c 16 ng 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. 2 ch hot ng (maximum v minimum mode): Ch min 8088 to ra cc tn hiu iu khin cn thit truy xut b nh hay cc cng vo/ra. Ch max cc chp h tr bn ngoi to ra cc tn hiu iu khin. Cng 1 tp lnh[I, O] Address/Data bus. Cc chn ghp knh cc tn hiu phn thp ca bus a ch v bus d liu. Cc chn ny mang 8 bit phn thp ca a ch khi tn hiu ALE = 1, mang 8 bit phn thp ca d liu khi tn hiu ALE = 0. Cc chn ny trng thi tr khng cao khi CPU chp nhn treo. [O] Address buss. Cc bit phn cao ca bus a ch. Cc chn ny trng thi tr khng cao khi CPU chp nhn treo. [O] Address/Status bus. Cc chn ghp knh cc tn hiu phn cao ca bus a ch v tn hiu trng thi. Cc bit a ch A16 B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

-

Chi tit chc nng cc chn ca 8086/8088

AD7 - AD0

A15 - A8 A19/S6-A16/S3

26

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

A19 s c mt ti cc chn ny khi ALE = 1, cn khi ALE = 0 th trn cc chn ny c cc tn hiu trng thi S3 - S6. Cc chn ny trng thi tr khng cao khi CPU chp nhn treo. Bit S6 lun bng 0, bit S5 phn nh gi tr bit IF ca thanh ghi c. Hai bit S3 v S4 phi hp vi nhau ch vic truy nhp cc thanh ghi on. - S4 S3 Truy cp n - 0 0 on d liu ph - 0 1 on ngn xp - 1 0 on m hoc khng on no c - 1 1 on d liu [O] Read signal. Xung cho php c. Khi RD = 0 th bus d liu nhn d liu t b nh hoc thit b ngoi vi. Chn ny trng thi tr khng cao khi CPU chp nhn treo. [I] Tn hiu bo cho CPU bit tnh trng sn sng ca thit b ngoi vi hay b nh. Khi READY = 1 th CPU thc hin c/ghi READY d liu m khng phi chn thm cc chu k i. Khi cc thit b ngoi vi hay b nh c tc chm, chng c th a tin hiu READY = 0 bo cho CPU bit m ch chng. Lc ny CPU t ko di thi gian thc hin c/ghi bng cch chn thm cc chu k i. [I] Interrupt request. Tn hiu yu cu ngt che c. Khi c yu cu ngt (INTR = 1) m c cho php ngt IF = 1 th CPU kt thc lnh ang lm d, sau i vo chu k chp nhn ngt v a ra bn ngoi tn hiu TEST = 0. = 1 th n s [I] Tn hiu ti chn ny c kim tra bi lnh WAIT. Khi CPU thc hin lnh WAIT m lc tn hiu ch cho n khi tn hiu theo. [I] None-Maskable Interrupt. Tn hiu yu cu ngt khng che c. Tn hiu ny khng b khng ch bi c IF v n s c CPU nhn bit bng tc ng ca sn ln ca xung yu cu ngt. Nhn c yu cu ngt ny (NMI = 1) CPU kt thc lnh ng lm d,sau chuyn sang thc hin chng trnh phc v ngt kiu INT2. [I] Tn hiu khi ng li 8088. Khi RESET = 1 ko di t nht 4 chu k ng h th 8088 b buc phi khi ng li; n xa cc thanh ghi DS, ES, SS, IP v FR v 0 v bt u thc hin chng trnh ti a ch CS:IP = FFFF:0000H (c IF = 0 cm = 0 th mi thc hin lnh tip

INTR

NMI

RESET

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 Vi x l Intel 8086/8088

cc yu cu ngt khc tc ng vo CPU v c TF = 0 b vi x l khng b t trong ch chy tng lnh). CLK Vcc GND [I] Clock pin. Tn hiu ng h (xung nhp). Xung nhp c rng l 70% v cung cp nhp lm vic cho CPU. [I] Chn ngun. Ti y CPU c cung cp +5V 10%, 340 mA [O] Gound. 2 chn ngun ni vi im 0V ca ngun [I] Chn iu khin hot ng ca CPU theo ch MIN/MAX. Ch MIN c chn khi chn ny ni trc tip vo ngun +5V khng qua in tr. Ch MAX c chn khi chn ny ni t.

MN/

Do 8088 lm vic hai ch khc nhau nn c mt s chn tn hiu c chc nng ph thuc vo tng ch c th Ch MIN [O] IO/ IO/ cho 8088 (cn M/ cho 8086). Chn b nh (= 0) hoc thit b vo/ra (= 1) lm vic vi CPU. Khi trn bus a ch s c a ch tng ng ca cc thit b . Chn ny trng thi tr khng cao khi CPU chp nhn treo. [O] Write. Xung cho php ghi. Khi CPU a ra WR = 0 th trn bus d liu cc d liu n nh v chng s c ghi vo b nh ti thi im t bin WR = 1. Chn ny trng thi tr khng cao khi CPU chp nhn treo. [O] Interrupt Acknowledge. Tn hiu bo cho cc mch bn ngoi bit CPU chp nhn treo. CPU a ra INTA= 0 bo l n ang ch mch ngoi a vo s hiu ngt trn bus d liu. [I] Address Latch Enable. Xung cho php cht a ch. Khi ALE = 1 c ngha l trn cc chn ghp knh AD c a ch ca thit b vo/ra hoc nh. Khi CPU chp nhn treo chn ny khng trng thi tr khng cao m ALE = 0. [O] Data Transmit/Receive. Tn hiu ny cho bit bus d liu ang vn chuyn d liu vo CPU hay ra khi CPU. Tn hiu ny cng dng iu khin cc b m 2 chiu ca bus d liu. [O] Data bus Enable. Kch hot cc b m bus d liu. [I] Tn hiu yu cu treo CPU mch ngoi thc hin vic trao i d liu vi b nh bng cch truy nhp trc tip. Khi HOLD = 1, CPU dng thc hin chng trnh t cc bus a ch, bus d liu v bus iu khin trng thi tr khng cao. HOLD = 0 th CPU li thc hin chng trnh bnh thng. [O] Hold Acknowledge. Tn hiu bo cho bn ngoi bit yu cuB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

ALE

DT/

HOLD

HLDA

28

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

treo CPU c chp nhn [O] Status. Tn hiu trng thi. Tn hiu ny tng ng vi tn hiu 0 trong ch MAX v c dng kt hp vi IO/ DT/ gii m chu k hot ng ca bus. IO/ 0 0 0 0 0 1 1 1 1 DT/ 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 Chu k iu khin bus c m lnh c b nh Ghi b nh Bus ri (ngh) Chp nhn yu cu ngt c thit b ngoi vi Ghi thit b ngoi vi Dng v

Ch MAX Trong ch MAX mt s tn hiu iu khin cn thit c to ra trn c s cc tn hiu trng thi nh dng thm bn ngoi mt mch iu khin bus 8288. Ch MAX c s dng khi trong h thng c mt b ng x l ton hc 8087. [O] Status bits. Cc chn ny c dng ghp ni vi mch iu khin bus 8288. 8288 s dng cc tn hiu ny to ra cc tn hiu iu khin trong chu k bus. IO/ 0 S2 , S1, S0 0 0 0 1 1 1 1 0 DT/ 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 Chu k iu khin bus Chp nhn yu cu ngt c thit b ngoi vi Ghi thit b ngoi vi Dng c m lnh c b nh Ghi b nh Bus ri (ngh)

RQ/

1, RQ/

[I/O] Request/Grant. Yu cu v chp nhn vic truy nhp trc tip b nh. [O] Tn hiu do CPU a ra kha cc thit b ngoi vi. Chn ny c kch hot bng cch dng tip u ng LOCK: trc cc lnh. [O] Queue Status. i lnh. QS1 QS0 0 0 0 0 Cc tn hiu ny cho bit trng thi ca hng Chu k iu khin bus Khng hot ng c byte m lnh u tin t hng i lnh

QS1, QS0

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

29

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

0

1

Hng i lnh rng

0 1 c byte tip theo t hng i lnh Trong b h vi x vi s c mt ca b ng x l ton hc 8087, cc tn hiu QS1 v QS0 c 8087 s dng ng b qu trnh hot ng ca n vi 8088.

2.2 Ch a ch2.2.1 M ho lnh trong vi x l 8086/8088 Mi lnh trong vi x l 8086/8088 l mt t nh phn c kch thc t 1 n 6 byte tu thuc vo lnh c th. Tuy nhin tt c cc lnh u c cu trc chung nh Hnh 2-4.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

Hnh 2-4. Cch m ho lnh trong 8086/8088 vi lnh MOV Hnh 2-4 cho ta mt v d v m ho lnh mt lnh MOV, t y ta thy m ho lnh MOV cn t nht 2 byte. Trong 6 bit u dng cha m lnh(opcode), opcode ca lnh MOV ny l 100010. Bit W dng ch ra rng mt byte (W=0) hoc 2byte (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. 30B 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 Vi x l Intel 8086/8088 00 01 10 W=0 11 W=1

000 001 010 011 100 101 110 111

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

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

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

AL CL DL BL AH CH DH BH

AX CX DX BX SP BP SI DI

D16(/c trc tip)[BX]

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

V d 1: MOV

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

1

0 0 0 1 Opcode

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:B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

31

Bi ging Vi x l - Vi iu khinByte 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

Chng 2 Vi x l Intel 8086/8088Byte 4 0 0 0 0 1 0Bh 0 1 1

D W MOD

M lnh MOV: 100010 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. 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

Byte 2 10001000 88h

Byte 3 11111111 FFh

Byte 4 00001011 0Bh

CH A CH TC TH 32B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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. 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

ng.

Quan st trn ta thy: 10 v 5 l cc dch chuyn ca cc ton hng tng 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.

B 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 Vi x l Intel 8086/8088

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 dMOV 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 n i 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-2. 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 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 Vi x l Intel 8086/8088

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.V d : Gi MOVSB s : DS=1000h, ES=2000h, SI=10h, DI=20h) ;Sao chp chu i 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 c ng sao chp n i dung t i ;c ng c a ch 40h v thanh ghi AL OUT 80h, AL ;Ghi c ng g i d li u trong thanh ;ghi AL t i c ng 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 c ng c a ch l n i dung c a ;thanh ghi DX OUT DX, AX ;Ghi m t word trong AX t i c ng c a ;ch l n i dung c a thanh ghi DX.

2.3 Tp lnh Assembly2.3.1 Gii thiu chung Tp lnh ca h vi x l 8086/8088 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. 35

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 Vi x l Intel 8086/8088

-

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). 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 Vn chuyn mt byte hay t(2 byte) 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 Vn chuyn 1 byte hay 1 t(2byte) d liu Acc ra cng(port) Dng lnh: OUT M t: Acc{Port} Trong port l a ch ca cng cn a d liu ra, c kch thc 1byte v c quy nh trc trong vng gi tr t 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 45H, AL ;dua du lieu tu AL ra cong 45H DX, 0 ;xoa DX DX, 00FFH ;nap dia chi cong vao DXB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

36

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

OUT

DX, AX

;dua du lieu tu AX ra 00FFH

3. IN c d liu t cng vo thanh ghi Acc. Dng lnh: IN Acc, Port Lnh IN truyn mt byte hoc mt t(2byte) t mt cng c a ch port thanh ghi AL hoc AX. a ch ca cng c th c xc nh l mt hng s 8bit c gi tr trong min t 00..FFh, nu s dng thanh ghi DX lu a ch cng th ta c th truy cp vo cc cng t 065535, khi dng thc ca lnh s l : IN Acc,DX 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 Ly 1 t(2byte) t nh ngn xp Dng lnh: POP M t: ch{SP} SPSP+2 (do cch t chc ca stack, y ngn xp li vng nh cao, nh ngn xp vng nh thp) 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 Ct 1 t vo ngn xp Dng lnh: PUSH M t: SPSP-2 Ngun{SP} Ton hng 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 raB mn K thut my tnh Khoa in t Trng H K thut Cng nghip

ch

Ngun

37

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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

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 Cng khng nh Dng lnh : ADD ch, Ngun M t, Ngun 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 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: 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 Vi x l Intel 8086/8088

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: M t: INC ch 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)B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

39

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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. 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. 40B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

V d:OR OR AX, BX CL, 30H ;AXAXBX theo tung bit ;lap bit b4 va b5 cua CL len 1

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.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 Vi x l Intel 8086/8088

Cc c b thay i: CF, OF, SF, ZF, PF. V d:MOV RCR CL, 2 ;so lan quay la 2 AL, CL

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

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 Vi x l Intel 8086/8088

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 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:B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

AL = 00110000, CF = 1

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

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

0

MSB

LSB

CF

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: 44 CMP ch, Ngun

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

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 Vi x l Intel 8086/8088

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 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 chuynB 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 Vi x l Intel 8086/8088

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 -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: 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 Vi x l Intel 8086/8088

CMP AL, 10H JBE THOI ;bang 10H

;so sanh AL voi 10H ;nhay den THOI neu AL thap hon hoac

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 B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

47

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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 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 48B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

tip theo sau lnh JNE/JNZ. Chng trnh dch s cn c vo v tr NHAN xc nh dch chuyn. 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

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 Vi x l Intel 8086/8088

LOOPE LAP

;lap lai cho den khi AL16 hoac CX=0

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:

50

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 Vi x l Intel 8086/8088

+ Ni dung thanh ghi SP gim i 2 byte, SPSP 2 v CS c lu vo ngn xp. + 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).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 Vi x l Intel 8086/8088

38. NOP No Operation (CPU khng lm g) Dng lnh: NOP 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 80x86 [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. Ngn ng lp trnh Assembly s dng cc cu lnh, t kha d nh, gn gi vi ngi lp trnh thay th cc ngn ng my. 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 dng trong mt s lnh vc hp, ch yu giao 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 Vi x l Intel 8086/8088

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 trnhLp 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

53

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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

54

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 Vi x l Intel 8086/8088

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

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 ; 2.4.3.2TITLE .MODEL .STACK

Cu trc chng trnh hp ngTn chng trnh Ki u kch th c b nh ; Khai bo quy m s d ng b nh Kch th c ; Khai bo dung l ng o n stack

Cu trc thng thng ca mt chng trnh hp ng dng file *.exe nh sau:

B 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 Vi x l Intel 8086/8088

.DATA msg DB 'Hello$' .CODE CALL Subname main ENDP Subname PROC RET Subname ENDP END main

; Khai bo o n d

li u

; Khai bo o n m main PROC ; G i chng trnh con

; nh ngha chng trnh con

MODEL - Quy m s dng b nh: Tham s ca th model l 1 trong cc gi tr cho bng di, khai bo ny khai bo kch thc ti a ca chng trnh v cc thc t chc b nh trong chng trnh.

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. VD .MODEL SMALL STACK - Khai bo kch thc stack: Khai bo stack dng dnh ra mt vng nh 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): VD .STACK 256 DATA - Khai bo on d liu: on d liu dng cha cc bin v hng s dng trong chng trnh. CODE - Khai bo on m: on m 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. 56B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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 c n in

mov AX,@data ; l y a ch data segment ghi vo DS mov DS,AX ; V model small, y cng l a ch ; segment c a xu s. ; xu t chu i: mov DX, OFFSET s ; l y a ch offset ghi vo DX mov AH , 9 int 21h ; g i hm 9, ng t 21h in mov AH, 4Ch ; Thot kh i 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.3 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.data segment ; add your data here! pkey db "press any key to exit ...$" ends stack segment dw 128 dup(0) ends CODE segment start: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 Vi x l Intel 8086/8088

; 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.4 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.; 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 58B mn K thut my tnh Khoa in t Trng H K thut Cng nghip

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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 th p phn 1011d ; S th p phn 1011h ; S th p l c 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

59

Bi ging Vi x l - Vi iu khin

Chng 2 Vi x l Intel 8086/8088

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. - 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. 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 Vi x l Intel 8086/8088

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:TN PROC ; y l m l nh c a chng trnh con

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 Vi x l Intel 8086/8088

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 100h CALL ta MOV AX, 2 RET ; Tr v OS ta PROC MOV BX, 5 RET ; Tr v sau i m g i. ta ENDP END

V d trn gi chng trnh con ta, thc hin lnh MOV BX, 5 , v tr v sau lnh gi n MOV AX, 2 C vi cch truyn tham s cho chng trnh con, cch n gin nht l s dng cc thanh ghi, di y l mt v d khc v cch gi chng trnh con v cch truyn tham s cho n qua thanh ghi AL v BL, nhn hai tham s vi nhau v tr kt qu v trong thanh ghi AX:ORG MOV MOV 100h AL, 1 BL, 2 CALL m2 CALL m2 CALL m2 CALL m2 ; Tr PROC MUL BL RET ENDP v HH ; AX = AL * BL. ; Tr v sau i m g i n.

RET m2

m2 END

Trong v d trn, gi tr ca thnh ghi AL c cp nht mi ln chng trnh con c gi, thanh ghi BL khng thay i, nn thut ton trn l tnh 24, kt qu lu trong AX l 16 (hay 10h) Di y l mt v d khc, s dng chng trnh con in xu PICAT.dieukhien.net : 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 Vi x l Intel 8086/8088

ORG 100h LEA SI, tbao_tw ; L y a ch c a msg vo SI. CALL In_Xau RET ; tr v h i u hnh. ;================================================= ; Chng trnh ny in 1 xu, xu ph i k t thc ; b ng k t null (ph i c 0 cu i xu) ; a ch c a xu ph i c t trong thanh ghi SI: In_Xau PROC next_char: CMP b.[SI], 0 ; ki m tra n u = 0 th d ng JE stop ; MOV AL, [SI] ; l y k t ti p theo. MOV AH, 0Eh ; s hi u in k t . INT 10h ; s d ng ng t in k t trong AL. ADD SI, 1 ; Tng con tr c n in ln 1. JMP next_char ; tr l i, in k t ti p. stop: RET ; tr v sau i m g i. print_me ENDP ; =================================================== tbao_tw DB 'PICAT.dieukhien.net',0; xu k t thc: null. END

Tip u ng b. trc [SI] ngha l so snh byte, khng phi t. Nu bn cn so snh t, bn dng tip u ng w. thay th vo. Khi mt ton hng nm trong thanh ghi, n khng yu cu na. Lnh b (Macro) Macro tng t nh chng trnh con nhng khng thc s l chng trnh con. Macro nhn c v nh chng trnh con, nhng chng ch tn ti cho n khi chng trnh c dch, sau khi chng trnh c dch tt c cc macro c thay th bng lnh thc s. Nu bn khai bo mt macro v khng bao gi s dng chng trong m ngun, chng trnh dch s b qua n. Khai bo:name MACRO [tham s ,...]

ENDM

Khng nh chng trnh con, macro phi khai bo bn trn on m ngun gi n, v d:MyMacro MACRO MOV AX, p1 MOV BX, p2 p1, p2, p3

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 Vi x l Intel 8086/8088

MOV CX, p3 ENDM ORG 100h MyMacro 1, 2, 3 MyMacro 4, 5, DX RET

on m ngun trn s c m rng thnh:MOV MOV MOV MOV MOV MOV AX, BX, CX, AX, BX, CX, 0001h 0002h 0003h 0004h 0005h DX

Vi iu thc s quan trng v Macro v chng trnh con: Khi mun s dng mt chng trnh con, bn phi s dng t kha CALL, v d:Call TA_Proc

Khi bn s dng mt Macro, bn ch cn g tn ca chng, v d:Ta_Macr

Chng trnh con c nh v ti mt a ch c th trong b nh, v nu bn s dng 100 ln chng trnh con , CPU ch chuyn iu khin n vng nh ca chng trnh con thi. iu khin s tr li chng trnh khi gp lnh RET. Stack c s dng gi a ch tr v. Lnh CALL ch tn ht 3 byte, nn kch thc ca chng trnh thc thi nh, khng quan trng vic gi chng trnh con bao nhiu ln. Macro m rng trc tip cc lnh ca n vo m ngun, nu macro m rng 100 ln (gi 100 ln) s lm cho chng trnh thc thi ln hn rt nhiu, cng ln khi macro c gi cng nhiu. Bn phi s dng Stack hoc bt k thanh ghi no truyn tham s cho chng trnh co