Microprocessor final ver1_part2

85
1/Chapte © DHBK 2005 N i dung môn h c N i dung môn h c 1. Gi i thi u chung v h vi x 2. B vi x lý Intel 8088/8086 3. L p trình h p ng cho 8086 4. T ch c vào ra d li u 5. Ng t và x lý ng t 6. Truy c p b nh tr c ti p DMA ế 7. Các b vi x lý trên th c t ế

Transcript of Microprocessor final ver1_part2

Page 1: Microprocessor final ver1_part2

1/Chapter2© DHBK 2005

N i dung môn h cộ ọN i dung môn h cộ ọ

1. Gi i thi u chung v h vi x lýớ ệ ề ệ ử2. B vi x lý Intel 8088/8086ộ ử3. L p trình h p ng cho 8086ậ ợ ữ4. T ch c vào ra d li uổ ứ ữ ệ5. Ng t và x lý ng tắ ử ắ6. Truy c p b nh tr c ti p DMAậ ộ ớ ự ế7. Các b vi x lý trên th c tộ ử ự ế

Page 2: Microprocessor final ver1_part2

2/Chapter2© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 3: Microprocessor final ver1_part2

3/Chapter2© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 4: Microprocessor final ver1_part2

4/Chapter2© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 5: Microprocessor final ver1_part2

5/Chapter2© DHBK 2005

S đ kh i 8088/8086ơ ồ ốS đ kh i 8088/8086ơ ồ ố

CSDS

ESIP

BXAX

CXDXSPBP

DISI SS

ALU

Khối điều khiển

của EU

Logic điều khiển

bus

∑Các thanh ghi đa năng

Các thanh ghicon trỏvà chỉ số

Các thanh ghiđoạn và con trỏlệnh

Các thanh ghi tạm thời

Thanh ghi cờ

Hàng đợi lệnh

Bus ngoài

Bus trong của CPU16 bit dữ liệu20 bit địa chỉ

bus địa chỉ 20 bitEU BIU

Bus dữ liệu ALU 16 bit

Page 6: Microprocessor final ver1_part2

6/Chapter2© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 7: Microprocessor final ver1_part2

7/Chapter2© DHBK 2005

Các thanh ghi đa năng c a 8088/8086ủCác thanh ghi đa năng c a 8088/8086ủ

• Thanh ghi ch a AX (accumulator): ch a k t qu c a các phép tính. ứ ứ ế ả ủK t qu 8 bit đ c ch a trong ALế ả ượ ứ

• Thanh ghi c s BX (base): ch a đ a ch c s , ví d c a b ng dùng ơ ở ứ ị ỉ ơ ở ụ ủ ảtrong l nh XLAT (Translate)ệ

• Thanh ghi đ m CX (count): dùng đ ch a s l n l p trong các l nh l p ế ể ứ ố ầ ặ ệ ặ(Loop). CL đ c dùng đ ch a s l n d ch ho c quay trong các l nh ượ ể ứ ố ầ ị ặ ệd ch và quay thanh ghiị

• Thanh ghi d li u DX (data): cùng AX ch a d li u trong các phép tính ữ ệ ứ ữ ệnhân chia s 16 bit. DX còn đ c dùng đ ch a đ a ch c ng trong các ố ượ ể ứ ị ỉ ổl nh vào ra d li u tr c ti p (IN/OUT)ệ ữ ệ ự ế

AX ALAH

BX BLBH

CX CLCH

DX DLDH

8 bit cao 8 bit th pấ

•8088/8086 đ n 80286 : 16 bitsế

•80386 tr lên: 32 bits EAX, EBX, ởECX, EDX

Page 8: Microprocessor final ver1_part2

8/Chapter2© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 9: Microprocessor final ver1_part2

9/Chapter2© DHBK 2005

Các thanh ghi đo nạCác thanh ghi đo nạ

• T ch c c a b nh 1 Mbytesổ ứ ủ ộ ớ Đo n b nh (segment)ạ ộ ớ

216 bytes =64 KBĐo n 1: đ a ch đ u 0000ạ ị ỉ ầ 0 HĐo n 2: đ a ch đ u 0001ạ ị ỉ ầ 0 HĐo n cu i cùng: FFFFạ ố 0 H

Ô nh trong đo n:ớ ạđ a ch l ch: offsetị ỉ ệÔ 1: offset: 0000Ô cu i cùng: offset: FFFFố

Đ a ch v t lý:ị ỉ ậSegment : offset

00000H

FFFFFH

1FFFFH

10000H

1F000H

1 0 0 0

Offset=F000

Thanh ghi đo nạĐ a ch v t lý=Segment*16 + offsetị ỉ ậ

Ch đ th c (real mode)ế ộ ự

Page 10: Microprocessor final ver1_part2

10/Chapter2

© DHBK 2005

Các thanh ghi đo nạCác thanh ghi đo nạ

• Ví d : Đ a ch v t lý 12345Hụ ị ỉ ậ

• Ví d : Cho đ a ch đ u c a đo n: 49000 H, xác đ nh đ a ch cu iụ ị ỉ ầ ủ ạ ị ị ỉ ố

Đ a ch đo nị ỉ ạ Đi ch l chạ ỉ ệ

1000 H 2345H

1200 H 0345H

1004 H ?

0300 H ?

Page 11: Microprocessor final ver1_part2

11/Chapter2

© DHBK 2005

Các thanh ghi đo nạCác thanh ghi đo nạ

• Các thanh ghi đo n: ch a đ a ch đo nạ ứ ị ỉ ạ

00000

FFFFF

Đoạn dữ liệuData segment

Đoạn mãCode segment

Đoạn ngăn xếpStack segment

Đoạn dữ liệu phụextra segment

10000

200001FFFF

300002FFFF

34000

43FFF49000

58FFF

1 0 0 0 DS

2 0 0 0 CS

3 4 0 0 SS

4 9 0 0 ES

.............

Page 12: Microprocessor final ver1_part2

12/Chapter2

© DHBK 2005

Các thanh ghi đo nạCác thanh ghi đo nạ

• Các đo n ch ng nhauạ ồ

00000

FFFFF

Data

Code

Stack

090F0

0A0F00A0EF

0A2800A27F

0 9 0 F CS

0 A 0 F DS

0 A 2 8 SS

0A4800A47Fc

ode

data

stack

Page 13: Microprocessor final ver1_part2

13/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 14: Microprocessor final ver1_part2

14/Chapter2

© DHBK 2005

Các thanh ghi con tr và ch sỏ ỉ ốCác thanh ghi con tr và ch sỏ ỉ ố

• Ch a đ a ch l ch (offset)ứ ị ỉ ệ Con tr l nh IP (instruction pointer): ch a đ a ch l nh ti p ỏ ệ ứ ị ỉ ệ ế

theo trong đo n mã l nh CS. ạ ệCS:IP

Con tr c s BP (Base Pointer): ch a đ a ch c a d li u ỏ ơ ở ứ ị ỉ ủ ữ ệtrong đo n ngăn x p SS ho c các đo n khácạ ế ặ ạ

SS:BP Con tr ngăn x p SP (Stack Pointer): ch a đ a ch hi n th i ỏ ế ứ ị ỉ ệ ờ

c a đ nh ngăn x pủ ỉ ếSS:SP

Ch s ngu n SI (Source Index): ch a đ a ch d li u ngu n ỉ ố ồ ứ ị ỉ ữ ệ ồtrong đo n d li u DS trong các l nh chu iạ ữ ệ ệ ỗ

DS:SI Ch s đích (Destination Index): ch a đ a ch d li u đích ỉ ố ứ ị ỉ ữ ệ

trong đo n d li u DS trong các l nh chu iạ ữ ệ ệ ỗDS:DI

SI và DI có th đ c s d ng nh thanh ghi đa năngể ượ ử ụ ư 80386 tr lên 32 bit: EIP, EBP, ESP, EDI, ESIở

Page 15: Microprocessor final ver1_part2

15/Chapter2

© DHBK 2005

Các thanh ghi con tr và ch sỏ ỉ ốCác thanh ghi con tr và ch sỏ ỉ ố

• Thanh ghi đo n và thanh ghi l ch ng m đ nhạ ệ ầ ị

Segment Offset Chú thích

CS IP Đ a ch l nhị ỉ ệ

SS SP ho c BPặ Đ a ch ngăn x pị ỉ ế

DS BX, DI, SI, s 8 bit ốho c s 16 bitặ ố

Đ a ch d li uị ỉ ữ ệ

ES DI Đ a ch chu i ị ỉ ỗđích

Page 16: Microprocessor final ver1_part2

16/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 17: Microprocessor final ver1_part2

17/Chapter2

© DHBK 2005

Thanh ghi c (Flag Register)ờThanh ghi c (Flag Register)ờ

• 9 bit đ c s d ng, 6 c tr ng thái:ượ ử ụ ờ ạ C hoăc CF (carry flag)): CF=1 khi có nh ho c m n t MSBớ ặ ượ ừ P ho c PF (parity flag): PF=1 (0) khi t ng s bít 1 trong k t ặ ổ ố ế

qu là ch n (l )ả ẵ ẻ A ho c AF (auxilary carry flag): c nh ph , AF=1 khi có nh ặ ờ ớ ụ ớ

ho c m n t m t s BCD th p sang BCD caoặ ượ ừ ộ ố ấ Z ho c ZF (zero flag): ZF=1 khi k t qu b ng 0ặ ế ả ằ S ho c SF (Sign flag): SF=1 khi k t qu âmặ ế ả O ho c OF (Overflow flag): c tràn OF=1 khi k t qu là m t ặ ờ ế ả ộ

s v t ra ngoài gi i h n bi u di n c a nó trong khi th c ố ượ ớ ạ ể ễ ủ ựhi n phép toán c ng tr s có d uệ ộ ừ ố ấ

1 0215 14

CPAZSTIDO

Page 18: Microprocessor final ver1_part2

18/Chapter2

© DHBK 2005

Thanh ghi c (Flag Register)ờThanh ghi c (Flag Register)ờ

• 3 c đi u khi nờ ề ể T hoăc TF (trap flag)): c b y, TF=1 khi CPU làm vi c ch ờ ẫ ệ ở ế

đ ch y t ng l nhộ ạ ừ ệ I ho c IF (Interrupt enable flag): c cho phép ng t, IF=1 thì ặ ờ ắ

CPU s cho phép các yêu c u ng t (ng t che đ c) đ c tác ẽ ầ ắ ắ ượ ượđ ng (Các l nh: STI, CLI)ộ ệ

D ho c DF (direction flag): c h ng, DF=1 khi CPU làm vi c ặ ờ ướ ệv i chu i ký t theo th t t ph i sang trái (l nh STD, CLD)ớ ỗ ự ứ ự ừ ả ệ

1 0215 14

CPAZSTIDO

Page 19: Microprocessor final ver1_part2

19/Chapter2

© DHBK 2005

Thanh ghi c (Flag Register)ờThanh ghi c (Flag Register)ờ

• Ví d : ụ

SF=0 vì msb trong k t qu =0ế ả PF=1 vì có 0 bít c a t ng b ng 1ủ ổ ằ ZF=1 vì k t q a thu đ c là 0ế ủ ượ CF=1 vì có nh t bít msb trong phép c ngớ ừ ộ OF=1 vì có tràn trong phép c ng 2 s âmộ ố

80h +

80h

100h

Page 20: Microprocessor final ver1_part2

20/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ S đ kh iơ ồ ố Các thanh ghi đa năng Các thanh ghi đo nạ Các thanh ghi con tr và ch sỏ ỉ ố Thanh ghi cờ Hàng đ i l nhợ ệ

• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 21: Microprocessor final ver1_part2

21/Chapter2

© DHBK 2005

Hàng đ i l nhợ ệHàng đ i l nhợ ệ

• 4 bytes đ i v i 8088 và 6 bytes đ i v i 8086ố ớ ố ớ• X lý pipelineử

F1 D1 E1 F2 D2 E2 F3 D3 E3

F1 D1F2

E1D2F3

E2D3 E3

Không có pipelining

Có pipelining

Page 22: Microprocessor final ver1_part2

22/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 23: Microprocessor final ver1_part2

23/Chapter2

© DHBK 2005

Intel 8088Intel 8088

• 16-bit processor• introduced in 1979• 3 µm, 5 to 8 MHz, 29

KTOR, 0.33 to 0.66 MIPS

Page 24: Microprocessor final ver1_part2

24/Chapter2

© DHBK 2005

Intel 8088Intel 8088

•Ch đ Min và ch đ Max:ế ộ ế ộ

MN/MX = 1 ch đ Minế ộ = 0 ch đ Max v i bus ế ộ ớcontroller 8288

Page 25: Microprocessor final ver1_part2

25/Chapter2

© DHBK 2005

Intel 8086Intel 8086

Page 26: Microprocessor final ver1_part2

26/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 27: Microprocessor final ver1_part2

27/Chapter2

© DHBK 2005

B n đ b nh c a máy tính IBM PCả ồ ộ ớ ủB n đ b nh c a máy tính IBM PCả ồ ộ ớ ủ

00000

A00009FFFF

FFFFF

Vùng nhớ chương trình640 Kbytes

Vùng nhớ hệ thống484 Kbytes

Vùng nhớ mở rộng

1 Mbytes b nh th cộ ớ ự

Page 28: Microprocessor final ver1_part2

28/Chapter2

© DHBK 2005

B n đ vùng nh ch ng trìnhả ồ ớ ươB n đ vùng nh ch ng trìnhả ồ ớ ươ

00000

02530

Các vector ng tắ00400005000070001160

08490

9FFF09FFFF

Vùng BIOSVùng DOSIO.SYSMSDOS

Device drivers (mouse.sys)COMMAND.COM

MSDOS

08E30

Vùng dành cho các ch ng trình ng d ngươ ứ ụ

Page 29: Microprocessor final ver1_part2

29/Chapter2

© DHBK 2005

B n đ vùng nh h th ngả ồ ớ ệ ốB n đ vùng nh h th ngả ồ ớ ệ ố

A0000Video RAM (đ ho )ồ ạ

B0000

F0000FFFFF

Video BIOS ROM

ROM BIOS

Vùng đ dànhể

E0000ROM BASIC

C0000C8000

Video RAM (text)

Page 30: Microprocessor final ver1_part2

30/Chapter2

© DHBK 2005

Các c ng vào raổCác c ng vào raổ

• Đ a ch : 0000H –FFFFH, M/IO =0ị ỉ

0000

0320

Đi u khi n DMAề ể00200040006002F8

0378

FFFF

Đi u khi n ng tề ể ắĐ nh th i (8253)ị ờ8255COM2

Đi u khi n c ngề ể ổ ứLPT103D0

Vùng m r ngở ộ

03F003F8

CGA adapterĐi u khi n đĩa m mề ể ề COM1

Page 31: Microprocessor final ver1_part2

31/Chapter2

© DHBK 2005

Trình t kh i đ ngự ở ộTrình t kh i đ ngự ở ộ

• Khi b t ngu n ho c nh n Resetậ ồ ặ ấ CS=FFFFh và IP=0000 => đ a ch FFFF0 ch a ch th chuy n ị ỉ ứ ỉ ị ể

đi u khi n đ n đi m kh i đ u c a các ch ng trình BIOSề ể ế ể ớ ầ ủ ươ Các ch ng trình BIOS ki m tra h th ng và b nhươ ể ệ ố ộ ớ Các ch ng trình BIOS kh i t o b ng vector ng t và vùng ươ ở ạ ả ắ

d li u BIOSữ ệ BIOS n p ch ng trình kh i đ ng (boot program) t đĩa vào ạ ươ ở ộ ừ

b nhộ ớ Ch ng trình kh i đ ng n p h đi u hành t đĩa vào b nhươ ở ộ ạ ệ ề ừ ộ ớ H đi u hành n p các ch ng trình ng d ngệ ề ạ ươ ứ ụ

Page 32: Microprocessor final ver1_part2

32/Chapter2

© DHBK 2005

Vùng nh dành riêng c a 8088/8086ớ ủVùng nh dành riêng c a 8088/8086ớ ủ

00000Các vector ng tắ

003FF

FFFF0Reset Bootstrapprogram jump

FFFFF

Page 33: Microprocessor final ver1_part2

33/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ

Ch đ đ a ch thanh ghiế ộ ị ỉ Ch đ đ a ch t c thìế ộ ị ỉ ứ Ch đ đ a ch tr c ti pế ộ ị ỉ ự ế Ch đ đ a ch gián ti p qua thanh ghiế ộ ị ỉ ế Ch đ đ a ch t ng đ i c sế ộ ị ỉ ươ ố ơ ở Ch đ đ a ch t ng đ i ch sế ộ ị ỉ ươ ố ỉ ố Ch đ đ a ch t ng đ i ch s c sế ộ ị ỉ ươ ố ỉ ố ơ ở

• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 34: Microprocessor final ver1_part2

34/Chapter2

© DHBK 2005

Ch đ đ a ch thanh ghiế ộ ị ỉCh đ đ a ch thanh ghiế ộ ị ỉ(Register Addressing Mode)(Register Addressing Mode)

• Dùng các thanh ghi nh là các toán h ngư ạ• T c đ th c hi n l nh caoố ộ ự ệ ệ

• Ví d :ụ MOV BX, DX ; Copy n i dung DX vào BXộ MOV AL, BL ; Copy n i dung BL vào ALộ MOV AL, BX ; không h p l vì các thanh ghi có kích th c ợ ệ ướ

khác nhau MOV ES, DS ; không h p l (segment to segment)ợ ệ MOV CS, AX ; không h p l vì CS không đ c dùng làm ợ ệ ượ

thanh ghi đích

ADD AL, DL ; C ng n i dung AL và DL r i đ a vào ALộ ộ ồ ư

Page 35: Microprocessor final ver1_part2

35/Chapter2

© DHBK 2005

Ch đ đ a ch t c thìế ộ ị ỉ ứCh đ đ a ch t c thìế ộ ị ỉ ứ(Immediate Addressing Mode)(Immediate Addressing Mode)

• Toán h ng đích là thanh ghi ho c ô nhạ ặ ớ• Toán h ng ngu n là ạ ồ h ng sằ ố• Dùng đ n p h ng s vào thanh thi (tr thanh ghi ể ạ ằ ố ừ

đo n và thanh c ) ho c vào ô nh trong đo n d li u ạ ờ ặ ớ ạ ữ ệDS

• Ví d :ụ MOV BL, 44 ; Copy s th p phân 44 vào thanh ghi BLố ậ MOV AX, 44H ; Copy 0044H vào thanh ghi AX MOV AL, ‘A’ ; Copy mã ASCII c a A vào thanh ghi ALủ MOV DS, 0FF0H ; không h p l ợ ệ MOV AX, 0FF0H ; MOV DS, AX ;

MOV [BX], 10 ; copy s th p phân 10 vào ô nh DS:BXố ậ ớ

Page 36: Microprocessor final ver1_part2

36/Chapter2

© DHBK 2005

Ch đ đ a ch tr c ti pế ộ ị ỉ ự ếCh đ đ a ch tr c ti pế ộ ị ỉ ự ế(Direct Addressing Mode)(Direct Addressing Mode)

• M t toán h ng là đ a ch ô nh ch a d li uộ ạ ị ỉ ớ ứ ữ ệ• Toán h ng kia ch có th là thanh ghiạ ỉ ể

• Ví d :ụ MOV AL, [1234H] ; Copy nội dung ô nhớ có địa chỉ DS:1234 vào AL MOV [ 4320H ], CX ; Copy nội dung của CX vào 2 ô nhớ liên tiếp DS:

4320 và DS: 4321

Page 37: Microprocessor final ver1_part2

37/Chapter2

© DHBK 2005

Ch đ đ a ch gián ti p qua thanh ghi ế ộ ị ỉ ếCh đ đ a ch gián ti p qua thanh ghi ế ộ ị ỉ ế(Register indirect Addressing Mode)(Register indirect Addressing Mode)

• M t toán h ng là thanh ghi ch a đ a ch c a 1 ô nh ộ ạ ứ ị ỉ ủ ớd li uữ ệ

• Toán h ng kia ch có th là thanh ghiạ ỉ ể

• Ví d :ụ MOV AL, [BX] ; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL MOV [ SI ], CL ; Copy nội dung của CL vào ô nhớ có địa chỉ DS:SI MOV [ DI ], AX ; copy nội dung của AX vào 2 ô nhớ liên tiếp DS: DI và

DS: (DI +1)

Page 38: Microprocessor final ver1_part2

38/Chapter2

© DHBK 2005

Ch đ đ a ch t ng đ i c s ế ộ ị ỉ ươ ố ơ ởCh đ đ a ch t ng đ i c s ế ộ ị ỉ ươ ố ơ ở(Based relative Addressing Mode)(Based relative Addressing Mode)

• M t toán h ng là thanh ghi c s BX, BP và các ộ ạ ơ ởh ng s bi u di n giá tr d ch chuy nằ ố ể ễ ị ị ể

• Toán h ng kia ch có th là thanh ghiạ ỉ ể

• Ví d :ụ MOV CX, [BX]+10 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ DS:BX+10

và DS:BX+11 vào CX MOV CX, [BX+10] ; Cách viết khác của lệnh trên MOV AL, [BP]+5 ; copy nội dung của ô nhớ SS:BP+5 vào thanh ghi AL

Page 39: Microprocessor final ver1_part2

39/Chapter2

© DHBK 2005

Ch đ đ a ch t ng đ i ch s ế ộ ị ỉ ươ ố ỉ ốCh đ đ a ch t ng đ i ch s ế ộ ị ỉ ươ ố ỉ ố(Indexed relative Addressing Mode)(Indexed relative Addressing Mode)

• M t toán h ng là thanh ghi ch s SI, DI và các h ng ộ ạ ỉ ố ằs bi u di n giá tr d ch chuy nố ể ễ ị ị ể

• Toán h ng kia ch có th là thanh ghiạ ỉ ể

• Ví d :ụ MOV AX, [SI]+10 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ DS:SI+10

và DS:SI+11 vào AX MOV AX, [SI+10] ; Cách viết khác của lệnh trên MOV AL, [DI]+5 ; copy nội dung của ô nhớ DS:DI+5 vào thanh ghi AL

Page 40: Microprocessor final ver1_part2

40/Chapter2

© DHBK 2005

Ch đ đ a ch t ng đ i ch s c sế ộ ị ỉ ươ ố ỉ ố ơ ởCh đ đ a ch t ng đ i ch s c sế ộ ị ỉ ươ ố ỉ ố ơ ở( ( Based Indexed relative Addressing ModeBased Indexed relative Addressing Mode))

• Ví d :ụ MOV AX, [BX] [SI]+8 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ

DS:BX+SI+8 và DS:BX+SI+9 vào AX MOV AX, [BX+SI+8] ; Cách viết khác của lệnh trên MOV CL, [BP+DI+5] ; copy nội dung của ô nhớ SS:BP+DI+5 vào thanh

ghi CL

Page 41: Microprocessor final ver1_part2

41/Chapter2

© DHBK 2005

Tóm t t các ch đ đ a chắ ế ộ ị ỉTóm t t các ch đ đ a chắ ế ộ ị ỉChế độ địa chỉ Toán hạng Thanh ghi đoạn ngầm định

Thanh ghi Thanh ghi

Tức thì Dữ liệu

Trực tiếp [offset] DS

Gián tiếp qua thanh ghi [BX][SI][DI]

DSDSDS

Tương đối cơ sở [BX] + dịch chuyển[BP] + dịch chuyển

DSSS

Tương đối chỉ số [DI] + dịch chuyển[SI] + dịch chuyển

DSDS

Tương đối chỉ số cơ sở [BX] + [DI]+ dịch chuyển[BX] + [SI]+ dịch chuyển[BP] + [DI]+ dịch chuyển[BP] + [SI]+ dịch chuyển

DSDSSSSS

Page 42: Microprocessor final ver1_part2

42/Chapter2

© DHBK 2005

B ch đ ng m đ nh thanh ghi đo nỏ ế ộ ầ ị ạB ch đ ng m đ nh thanh ghi đo nỏ ế ộ ầ ị ạ(Segment override)(Segment override)

• Ví d :ụ MOV AL, [BX]; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL MOV AL, ES:[BX] ; Copy nội dung ô nhớ có địa chỉ ES:BX vào AL

Page 43: Microprocessor final ver1_part2

43/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 44: Microprocessor final ver1_part2

44/Chapter2

© DHBK 2005

Cách mã hoá l nh c a 8086ệ ủCách mã hoá l nh c a 8086ệ ủ

• M t l nh có đ dài t 1 đ n 6 byteộ ệ ộ ừ ế

Opcode1-2 byte

MOD-REG-R/M0-1 byte

D ch chuy nị ể0-2 byte

T c thìứ0-2 byte

D W

Opcode W=0 d li u 1 byteữ ệ

W=1 d li u 2 byteữ ệ

D=1 d li u đi đ n thanh ghi cho b i 3 bit REGữ ệ ế ở

D=0 d li u đi t thanh ghi cho b i 3 bit REGữ ệ ừ ở

Page 45: Microprocessor final ver1_part2

45/Chapter2

© DHBK 2005

Cách mã hoá l nh c a 8086ệ ủCách mã hoá l nh c a 8086ệ ủ

MOD

00 không có d ch chuy nị ể01 d ch chuy n 8 bitị ể10 d ch chuy n 16 bitị ể11 R/M là thanh ghi

REG

Thanh ghi Mã

W=1 W=0AX AL 000BX BL 011CX CL 001DX DL 010SP AH 100DI BH 111BP CH 101SI DH 110

R/M

Mã Chế độ địa chỉ

000 DS:[BX+SI]001 DS:[BX+DI]010 SS:[BP+SI]011 SS:[BP+DI]100 DS:[SI]101 DS:[DI]110 SS:[BP]111 DS:[BX]

MOD <> 11

Page 46: Microprocessor final ver1_part2

46/Chapter2

© DHBK 2005

Cách mã hoá l nh c a 8086ệ ủCách mã hoá l nh c a 8086ệ ủ

• Ví d : chuy n l nh MOV CL, [BX] sang mã máyụ ể ệ opcode MOV: 100010 D li u là 1 byte: W=0ữ ệ Chuy n t i thanh ghi: D=1ể ớ Không có d ch chuy n: MOD=00ị ể [BX] nên R/M=111 CL nên REG=001

1 01 0 0 0 1 0 0 0 0 0 1 1 1 1

MOV D WMOD CL [BX]

Ví d 2: chuy n l nh MOV [SI+F3H], CL sang mã máyụ ể ệ

Page 47: Microprocessor final ver1_part2

47/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ

Các l nh di chuy n d li uệ ể ữ ệ Các l nh s h c và logicệ ố ọ Các l nh đi u khi n ch ng trìnhệ ề ể ươ

• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ80286

Page 48: Microprocessor final ver1_part2

48/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ

Các l nh di chuy n d li uệ ể ữ ệ Các l nh s h c và logicệ ố ọ Các l nh đi u khi n ch ng trìnhệ ề ể ươ

• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ80286

Page 49: Microprocessor final ver1_part2

49/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• MOV, XCHG, POP, PUSH, POPF, PUSHF, IN, OUT• Các l nh di chuy n chu i MOVS, MOVSB, MOVSWệ ể ỗ

• MOV Dùng đ chuy n gi a các thanh ghi, gi a 1 thanh ghi và 1 ô ể ể ữ ữ

nh ho c chuy n 1 s vào thanh ghi ho c ô nhớ ặ ể ố ặ ớ Cú pháp: MOV Đích, ngu nồ L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

MOV AX, BXMOV AH, ‘A’MOV AL, [1234H]

Page 50: Microprocessor final ver1_part2

50/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• Kh năng k t h p toán h ng c a l nh MOVả ế ợ ạ ủ ệ

Thanh ghi đa năng

Thanh ghi đo nạ

ô nhớ H ng sằ ố

Thanh ghi đa năng

YES YES YES NO

Thanh ghi đo nạ

YES NO YES NO

Ô nhớ YES YES NO NO

H ng sằ ố YES NO YES NO

Đích

Ngu nồ

Page 51: Microprocessor final ver1_part2

51/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• L nh XCHGệ Dùng đ hoán chuy n n i dung gi a hai thanh ghi, gi a 1 thanh ghi ể ể ộ ữ ữ

và 1 ô nh ớ Cú pháp: XCHG Đích, ngu nồ Gi i h n: toán h ng không đ c là thanh ghi đo nớ ạ ạ ượ ạ L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

XCHG AX, BXXCHG AX, [BX]

Page 52: Microprocessor final ver1_part2

52/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• L nh PUSHệ Dùng đ c t 1 t t thanh ghi ho c ô nh vào đ nh ngăn x p ể ấ ừ ừ ặ ớ ỉ ế Cú pháp: PUSH Ngu nồ Mô t : SP=SP-2, Ngu n => {SP}ả ồ Gi i h n: thanh ghi 16 bit ho c là 1 t nhớ ạ ặ ừ ớ L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

PUSH BXPUSH PTR[BX]

• L nh PUSHFệ C t n i dung c a thanh ghi c vào ngăn x pấ ộ ủ ờ ế

Page 53: Microprocessor final ver1_part2

53/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• Ví d v l nh PUSHụ ề ệ

130001300113002130031300413005130061300713008130091300A

1 3 0 0

0 0 0 A

1 2 3 4

SS

SP

AX

SP

130001300113002130031300413005130061300713008130091300A

1 3 0 0

0 0 0 8

1 2 3 4

SS

SP

AX

SP

PUSH AX

1234

130001300113002130031300413005130061300713008130091300A

1 3 0 0

0 0 0 6

7 8 5 6

SS

SP

BX

SP

PUSH BX

12347856

Page 54: Microprocessor final ver1_part2

54/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• L nh POPệ Dùng đ l y l i 1 t vào thanh ghi ho c ô nh t đ nh ngăn x p ể ấ ạ ừ ặ ớ ừ ỉ ế Cú pháp: POP Đích Mô t : {SP} => Đích, SP=SP+2ả Gi i h n: thanh ghi 16 bit (tr CS) ho c là 1 t nhớ ạ ừ ặ ừ ớ L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

POP BXPOP PTR[BX]

• L nh POPFệ L y 1 t t đ nh ngăn x p r i đ a vào thanh ghi cấ ừ ừ ỉ ế ồ ư ờ

Page 55: Microprocessor final ver1_part2

55/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• Ví d l nh POPụ ệ

130001300113002130031300413005130061300713008130091300A

1 3 0 0

0 0 0 6

3 2 5 4

SS

SP

DX

SP

12347856

130001300113002130031300413005130061300713008130091300A

1 3 0 0

0 0 0 8

7 8 5 6

SS

SP

DX

SP12347856

POP DX

Page 56: Microprocessor final ver1_part2

56/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• L nh INệ Dùng đ đ c 1 byte ho c 2 byte d li u t c ng vào thanh ghi AL ể ọ ặ ữ ệ ừ ổ

ho c AX ặ Cú pháp: IN Acc, Port L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

IN AX, 00H IN AL, F0H IN AX, DX

• L nh OUTệ Dùng đ đ a 1 byte ho c 2 byte d li u t thanh ghi AL ho c AX ra ể ư ặ ữ ệ ừ ặ

c ng ổ Cú pháp: OUT Port, Acc L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

OUT 00H, AXOUT F0H, ALOUT DX, AX

Page 57: Microprocessor final ver1_part2

57/Chapter2

© DHBK 2005

Các l nh di chuy n d li uệ ể ữ ệCác l nh di chuy n d li uệ ể ữ ệ

• Các l nh di chuy n chu i MOVS, MOVSB, MOVSWệ ể ỗ Dùng đ chuy n m t ph n t c a chu i này sang m t chu i ể ể ộ ầ ử ủ ỗ ộ ỗ

khác Cú pháp: MOVS chu i đích, chu i ngu nỗ ỗ ồ

MOVSB MOVSW

Th c hi n: ự ệDS:SI là đ a ch c a ph n t trong chu i ngu nị ỉ ủ ầ ử ỗ ồES:DI là đ a ch c a ph n t trong chu i đíchị ỉ ủ ầ ử ỗSau m i l n chuy n SI=SI +/- 1, DI=DI +/- 1 ho c SI=SI +/- 2, ỗ ầ ể ặ

DI=DI +/- 2 tuỳ thu c vào c h ng DF là 0/1 ộ ờ ướ L nh này không tác đ ng đ n cệ ộ ế ờ Ví d :ụ

MOVS byte1, byte2

Page 58: Microprocessor final ver1_part2

58/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ

Các l nh di chuy n d li uệ ể ữ ệ Các l nh s h c và logicệ ố ọ Các l nh đi u khi n ch ng trìnhệ ề ể ươ

• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ80286

Page 59: Microprocessor final ver1_part2

59/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• ADD, ADC, SUB, MUL, IMUL, DIV, IDIV, INC, DEC• AND, OR, NOT, NEG, XOR• L nh quay và d ch: RCL, RCR, SAL, SAR, SHL, SHRệ ị• L nh so sánh: CMP, CMPSệ

• L nh ADDệ L nh c ng hai toán h ng ệ ộ ạ Cú pháp: ADD Đích, ngu nồ Th c hi n: Đích=Đích + ngu nự ệ ồ Gi i h n: toán h ng không đ c là 2 ô nh và thanh ghi đo nớ ạ ạ ượ ớ ạ L nh này thay đ i c : AF, CF, OF, PF, SF, ZFệ ổ ờ Ví d :ụ

ADD AX, BXADD AX, 40H

Page 60: Microprocessor final ver1_part2

60/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh ADCệ L nh c ng có nh hai toán h ng ệ ộ ớ ạ Cú pháp: ADC Đích, ngu nồ Th c hi n: Đích=Đích + ngu n+CFự ệ ồ Gi i h n: toán h ng không đ c là 2 ô nh và thanh ghi đo nớ ạ ạ ượ ớ ạ L nh này thay đ i c : AF, CF, OF, PF, SF, ZFệ ổ ờ Ví d :ụ

ADC AL, 30H

• L nh SUBệ L nh tr ệ ừ Cú pháp: SUB Đích, ngu nồ Th c hi n: Đích=Đích - ngu nự ệ ồ Gi i h n: toán h ng không đ c là 2 ô nh và thanh ghi đo nớ ạ ạ ượ ớ ạ L nh này thay đ i c : AF, CF, OF, PF, SF, ZFệ ổ ờ Ví d :ụ

SUB AL, 30H

Page 61: Microprocessor final ver1_part2

61/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh MULệ L nh nhân s không d uệ ố ấ Cú pháp: MUL ngu nồ Th c hi n:ự ệ

AX=AL* ngu n8bitồDXAX=AX*ngu n16bitồ

L nh này thay đ i c : CF, OFệ ổ ờ Ví d :ụ

MUL BL

• L nh IMULệ nhân s có d uố ấ

Page 62: Microprocessor final ver1_part2

62/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh DIVệ L nh chia 2 s không d uệ ố ấ Cú pháp: DIV ngu nồ Th c hi n:ự ệ

AL = th ng (AX / ngu n8bit) ; AH=d (AX / ngu n8bit) ươ ồ ư ồAX = th ng (DXAX / ngu n16bit) ; DX=d (DXAX / ngu n16bit)ươ ồ ư ồ

L nh này không thay đ i cệ ổ ờ Ví d :ụ

DIV BL

• L nh IDIVệ chia 2 s có d uố ấ

Page 63: Microprocessor final ver1_part2

63/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh INCệ L nh c ng 1 vào toán h ng là thanh ghi ho c ô nhệ ộ ạ ặ ớ Cú pháp: INC Đích Th c hi n: Đích=Đích + 1ự ệ L nh này thay đ i c : AF, OF, PF, SF, ZFệ ổ ờ Ví d :ụ

INC AX

• L nh DECệ L nh tr 1 t n i dung m t thanh ghi ho c ô nhệ ừ ừ ộ ộ ặ ớ Cú pháp: DEC Đích Th c hi n: Đích=Đích - 1ự ệ L nh này thay đ i c : AF, OF, PF, SF, ZFệ ổ ờ Ví d :ụ

DEC [BX]

Page 64: Microprocessor final ver1_part2

64/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh ANDệ L nh AND logic 2 toán h ngệ ạ Cú pháp: AND Đích, ngu nồ Th c hi n: Đích=Đích And ngu nự ệ ồ Gi i h n: toán h ng không đ c là 2 ô nh ho c thanh ghi ớ ạ ạ ượ ớ ặ

đo nạ L nh này thay đ i c : PF, SF, ZF và xoá c CF, OFệ ổ ờ ờ Ví d :ụ

AND BL, 0FH

• L nh XOR, OR: t ng t nh l nh ANDệ ươ ự ư ệ

• L nh NOT: đ o t ng bit c a toán h ngệ ả ừ ủ ạ• L nh NEG: xác đ nh s bù 2 c a toán h ngệ ị ố ủ ạ

Page 65: Microprocessor final ver1_part2

65/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh CMPệ L nh so sánh 2 byte ho c 2 tệ ặ ừ Cú pháp: CMP Đích, ngu nồ Th c hi n:ự ệ

Đích = ngu n : CF=0 ZF=1ồĐích> ngu n : CF=0 ZF=0ồĐích < ngu n : CF=1 ZF=0ồ

Gi i h n: toán h ng ph i cùng đ dài và không đ c là 2 ô nhớ ạ ạ ả ộ ượ ớ• L nh CMPSệ

Dùng đ so sánh t ng ph n t c a 2 chu i có các ph n t cùng lo iể ừ ầ ử ủ ỗ ầ ử ạ Cú pháp: CMPS chu i đích, chu i ngu nỗ ỗ ồ

CMPSB CMPSW

Th c hi n: ự ệDS:SI là đ a ch c a ph n t trong chu i ngu nị ỉ ủ ầ ử ỗ ồES:DI là đ a ch c a ph n t trong chu i đíchị ỉ ủ ầ ử ỗSau m i l n so sánh SI=SI +/- 1, DI=DI +/- 1 ho c SI=SI +/- 2, DI=DI +/- 2 ỗ ầ ặ

tuỳ thu c vào c h ng DF là 0/1ộ ờ ướ C p nh t c AF, CF, OF, PF, SF, ZFậ ậ ờ

Page 66: Microprocessor final ver1_part2

66/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh RCLệ L nh quay trái thông qua c nhệ ờ ớ Cú pháp: RCL Đích, CL (v i s l n quay l n h n 1)ớ ố ầ ớ ơ

RCLĐích, 1 RCL Đích, S l n quay ố ầ (80286 tr lên)ở

Th c hi n: quay trái đích CL l nự ệ ầ Đích là thanh ghi (tr thanh ghi đo n) ho c ô nhừ ạ ặ ớ L nh này thay đ i c : CF, OFệ ổ ờ

• L nh RCRệ L nh quay ph i thông qua c nhệ ả ờ ớ

CF MSB LSB

Page 67: Microprocessor final ver1_part2

67/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh ROLệ L nh quay tráiệ Cú pháp: ROL Đích, CL (v i s l n quay l n h n 1)ớ ố ầ ớ ơ

ROL Đích, 1 ROL Đích, S l n quay ố ầ (80286 tr lên)ở

Th c hi n: quay trái đích CL l nự ệ ầ Đích là thanh ghi (tr thanh ghi đo n) ho c ô nhừ ạ ặ ớ L nh này thay đ i c : CF, OFệ ổ ờ

• L nh RORệ L nh quay ph iệ ả

CF MSB LSB

Page 68: Microprocessor final ver1_part2

68/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh SALệ L nh d ch trái s h cệ ị ố ọ Cú pháp: SAL Đích, CL (v i s l n d ch l n h n 1)ớ ố ầ ị ớ ơ

SAL Đích, 1 SAL Đích, s l n d ch ố ầ ị (80286 tr lên)ở

Th c hi n: d ch trái đích CL bit t ng đ ng v i ự ệ ị ươ ươ ớĐích=Đích*2CL

L nh này thay đ i c SF, ZF, PFệ ổ ờ

• L nh SHLệ L nh d ch trái logic t ng t nh SALệ ị ươ ự ư

CF MSB LSB

0

Page 69: Microprocessor final ver1_part2

69/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh SARệ L nh d ch ph i s h cệ ị ả ố ọ Cú pháp: SAR Đích, CL (v i s l n d ch l n h n 1)ớ ố ầ ị ớ ơ

SAR Đích, 1 ho c ặ SAR Đích, s l n d ch ố ầ ị (80286 tr lên)ở

Th c hi n: d ch ph i đích CL bit ự ệ ị ả L nh này thay đ i c SF, ZF, PF, CF mang giá tr c a MSBệ ổ ờ ị ủ

CFMSB LSB

Page 70: Microprocessor final ver1_part2

70/Chapter2

© DHBK 2005

Các l nh s h c và logicệ ố ọCác l nh s h c và logicệ ố ọ

• L nh SHRệ L nh d ch ph i logicệ ị ả Cú pháp: SHR Đích, CL (v i s l n d ch l n h n 1)ớ ố ầ ị ớ ơ

SHR Đích, 1 ho c ặ SHR Đích, s l n d ch ố ầ ị (80286 tr lên)ở

Th c hi n: d ch ph i đích CL bit ự ệ ị ả L nh này thay đ i c SF, ZF, PF, CF mang giá tr c a LSBệ ổ ờ ị ủ

CFMSB LSB

0

Chú ý: Trong các l nh d ch và quay, toán h ng không đ c là thanh ghi đo nệ ị ạ ượ ạ

Page 71: Microprocessor final ver1_part2

71/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ

Các l nh di chuy n d li uệ ể ữ ệ Các l nh s h c và logicệ ố ọ Các l nh đi u khi n ch ng trìnhệ ề ể ươ

L nh nh y không đi u ki n: JMPệ ả ề ệL nh nh y có đi u ki n JE, JG, JGE, JL, JLE...ệ ả ề ệL nh l p LOOPệ ặL nh g i ch ng trình con CALLệ ọ ươL nh g i ch ng trình con ph c v ng t INT và IRETệ ọ ươ ụ ụ ắ

• Cách đánh đ a ch ch đ b o v các máy tính t 80286ị ỉ ở ế ộ ả ệ ở ừ

Page 72: Microprocessor final ver1_part2

72/Chapter2

© DHBK 2005

L nh nh y không đi u ki n JMPệ ả ề ệL nh nh y không đi u ki n JMPệ ả ề ệ

• Dùng đ nh y t i m t đ a ch trong b nhể ả ớ ộ ị ỉ ộ ớ• 3 lo i: nh y ng n, g n và xaạ ả ắ ầ

L nh nh y ng n (short jump)ệ ả ắĐ dài l nh 2 bytes:ộ ệ

Ph m vi nh y: -128 đ n 127 bytes so v i l nh ti p theo l nh ạ ả ế ớ ệ ế ệJMP

Th c hi n: IP=IP + đ l chự ệ ộ ệ

Ví d :ụ

E B Đ l chộ ệ

XOR BX, BX

Nhan: MOV AX, 1

ADD AX, BX

JMP SHORT Nhan

Page 73: Microprocessor final ver1_part2

73/Chapter2

© DHBK 2005

L nh nh y không đi u ki n JMPệ ả ề ệL nh nh y không đi u ki n JMPệ ả ề ệ

L nh nh y g n (near jump)ệ ả ầPh m vi nh y: ± 32 Kbytes so v i l nh ti p theo l nh JMP ạ ả ớ ệ ế ệVí d :ụ

E 9 Độ lệchLo

XOR BX, BX

Nhan: MOV AX, 1

ADD AX, BX

JMP NEAR Nhan

Độ lệchHi

XOR CX, CX

MOV AX, 1

ADD AX, BX

JMP NEAR PTR BX

XOR CX, CX

MOV AX, 1

ADD AX, BX

JMP WORD PTR [BX]

Th c hi n: IP=IP+ đ l chự ệ ộ ệ IP=BX IP=[BX+1] [BX]

Nh y gián ti pả ế

Page 74: Microprocessor final ver1_part2

74/Chapter2

© DHBK 2005

L nh nh y không đi u ki n JMPệ ả ề ệL nh nh y không đi u ki n JMPệ ả ề ệ

L nh nh y xa (far jump)ệ ảĐ dài l nh 5 bytes đ i v i nh y t i nhãn:ộ ệ ố ớ ả ớ

Ph m vi nh y: nh y trong 1 đo n mã ho c nh y sang đo n mã ạ ả ả ạ ặ ả ạkhác

Ví d :ụ

E A IP Lo

EXTRN Nhan: FAR

Next: MOV AX, 1

ADD AX, BX

JMP FAR PTR Next

........

JMP FAR Nhan

IP Hi

Th c hi n: IP=IP c a nhãnự ệ ủ CS=CS c a nhãnủ

CS Lo CS Hi

XOR CX, CX

MOV AX, 1

ADD AX, BX

JMP DWORD PTR [BX]

IP = [BX+1][BX]CS= [BX+3][BX+2]

Page 75: Microprocessor final ver1_part2

75/Chapter2

© DHBK 2005

Tóm t t l nh JMPắ ệTóm t t l nh JMPắ ệ

JMP

00000H

FFFFFH

+127

-128

Đo n mã 2ạ

Đo n mã 1ạ

Nh y ng nả ắ Nh y g nả ầ

Nh y xaả

Page 76: Microprocessor final ver1_part2

76/Chapter2

© DHBK 2005

L nh nh y có đi u ki nệ ả ề ệL nh nh y có đi u ki nệ ả ề ệ

• JE or JZ, JNE or JNZ, JG, JGE, JL, JLE (dùng cho s có d u) và JA, JB, JAE, JBE (dùng cho s không ố ấ ốd u) ...ấ

• Nh y đ c th c hi n ph thu c vào các cả ượ ự ệ ụ ộ ờ• Là các l nh ệ nh y ng nả ắ• Ví d :ụ

Nhan1: XOR BX, BX

Nhan2: MOV AX, 1

CMP AL, 10H

JNE Nhan1

JE Nhan2

Th c hi n: IP=IP + đ d chự ệ ộ ị

Page 77: Microprocessor final ver1_part2

77/Chapter2

© DHBK 2005

L nh l p LOOPệ ặL nh l p LOOPệ ặ

• LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ• Là l nh ph i h p gi a DEC CX và JNZệ ố ợ ữ

XOR AL, AL

MOV CX, 16

Lap: INC AL

LOOP Lap

L p đ n khí CX=0ặ ế

XOR AL, AL

MOV CX, 16

Lap: INC AL

CMP AL, 10

LOOPE Lap

L p đ n khí CX=0ặ ếho c AL<>10ặ

XOR AL, AL

MOV CX, 16

Lap: INC AL

CMP AL, 10

LOOPNE Lap

L p đ n khí CX=0ặ ếho c AL=10ặ

Page 78: Microprocessor final ver1_part2

78/Chapter2

© DHBK 2005

L nh CALLệL nh CALLệ

• Dùng đ g i ch ng trình conể ọ ươ• Có 2 lo i: CALL g n và CALL xaạ ầ

CALL g n (near call): t ng t nh nh y g nầ ươ ự ư ả ầG i ch ng trình con trong cùng m t đo n mãọ ươ ở ộ ạ

Tong PROC NEAR

ADD AX, BX

ADD AX, CX

RET

Tong ENDP

...

CALL Tong

Tong PROC NEARADD AX, BXADD AX, CX

RET Tong ENDP ...MOV BX, OFFSET Tong CALL BX

CALL WORD PTR [BX]

Cất IP vào ngăn xếpIP=IP + dịch chuyểnRET: lấy IP từ ngăn xếp

Cất IP vào ngăn xếpIP= BXRET: lấy IP từ ngăn xếp

Cất IP vào ngăn xếpIP= [BX+1] [BX]RET: lấy IP từ ngăn xếp

Page 79: Microprocessor final ver1_part2

79/Chapter2

© DHBK 2005

L nh CALLệL nh CALLệ

CALL xa (far call): t ng t nh nh y xaươ ự ư ảG i ch ng trình con ngoài đo n mãọ ươ ở ạ

Tong PROC FAR

ADD AX, BX

ADD AX, CX

RET

Tong ENDP

...

CALL Tong

CALL DWORD PTR [BX]

Cất CS vào ngăn xếpCất IP vào ngăn xếpIP=IP của TongCS =CS của TongRET: lấy IP từ ngăn xếplấy CS từ ngăn xếp

Cất CS vào ngăn xếpCất IP vào ngăn xếpIP = [BX+1][BX]CS= [BX+3][BX+2]RET: lấy IP từ ngăn xếplấy CS từ ngăn xếp

Page 80: Microprocessor final ver1_part2

80/Chapter2

© DHBK 2005

L nh ng t INT và IRETệ ắL nh ng t INT và IRETệ ắ

• INT g i ch ng trình con ph c v ng t (CTCPVN)ọ ươ ụ ụ ắ• B ng vector ng t: 1 Kbytes 00000H đ n 003FF Hả ắ ế

256 vector ng tắ 1 vector 4 bytes, ch a IP và CS c a CTCPVNứ ủ 32 vector đ u dành riêng cho Intelầ 224 vector sau dành cho ng i dùngườ

• Cú pháp: INT Number• Ví d : INT 21H g i CTCPVN c a DOSụ ọ ủ

Page 81: Microprocessor final ver1_part2

81/Chapter2

© DHBK 2005

L nh ng t INT và IRETệ ắL nh ng t INT và IRETệ ắ

• Th c hi n INT:ự ệ C t thanh ghi c vào ngăn x pấ ờ ế IF=0 (c m các ng t khác tác đ ng), TF=0 (ch y su t)ấ ắ ộ ạ ố C t CS vào ngăn x pấ ế C t IP vào ngăn x pấ ế IP=[N*4], CS=[N*4+2]

• G p IRET:ặ L y IP t ngăn x pấ ừ ế L y CS t ngăn x pấ ừ ế L y thanh ghi c t ngăn x pấ ờ ừ ế

Page 82: Microprocessor final ver1_part2

82/Chapter2

© DHBK 2005

Ch ng 2: B vi x lý Intel 8088/8086ươ ộ ửCh ng 2: B vi x lý Intel 8088/8086ươ ộ ử

• C u trúc bên trongấ• S đ chânơ ồ• B n đ b nh c a máy tính IBM-PCả ồ ộ ớ ủ• Các ch đ đ a ch c a 8086ế ộ ị ỉ ủ• Cách mã hoá l nh c a 8086ệ ủ• Mô t t p l nh c a 8086ả ậ ệ ủ• Cách đánh đ a ch ch đ b o v các máy tính t ị ỉ ở ế ộ ả ệ ở ừ

80286

Page 83: Microprocessor final ver1_part2

83/Chapter2

© DHBK 2005

Đánh đ a ch b nh ch đ b o vị ỉ ộ ớ ở ế ộ ả ệĐánh đ a ch b nh ch đ b o vị ỉ ộ ớ ở ế ộ ả ệ

• Cho phép truy c p d li u và ch ng trình vùng ậ ữ ệ ươ ởnh trên 1Mớ

• Thanh ghi l ch ch a đ a ch l chệ ứ ị ỉ ệ• Thanh ghi đo n ch a t ch n đo n (segment ạ ứ ừ ọ ạ

selector) t ch n đo n ch n 1 ph n t trong 1 trong 2 b ng mô t ừ ọ ạ ọ ầ ử ả ả

đo n (descriptor table), m i b ng có kích th c 64 KBạ ồ ả ướB ng mô t đo n toàn c c (Global DT): ch a thông tin v các ả ả ạ ụ ứ ề

đo n c a b nh mà t t c các ch ng trình có th truy nh pạ ủ ộ ớ ấ ả ươ ể ậB ng mô t đo n c c b (Local DT): ch a thông tin v các đo n ả ả ạ ụ ộ ứ ề ạ

c a 1 ch ng trìnhủ ươ Mô t đo n ch a thông tin v đ a ch b t đ u c a đo nả ạ ứ ề ị ỉ ắ ầ ủ ạ

Page 84: Microprocessor final ver1_part2

84/Chapter2

© DHBK 2005

Đánh đ a ch b nh ch đ b o vị ỉ ộ ớ ở ế ộ ả ệĐánh đ a ch b nh ch đ b o vị ỉ ộ ớ ở ế ộ ả ệ

01215

Index TI RPL

RPL: mức ưu tiên yêu cầu, 00 cao nhất, 11 thấp nhấtTI=0, sử dụng bảng toàn cục, TI=1 sử dụng bảng cục bộIndex: 13 bit chỉ số để chọn 1 trong 8K mô tả đoạn trong bảng mô tả đoạn

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Access rights Base(B23-B16)

Base(B15-B0)

Limit(L15-L0) 01

3

5

7

2

46 Base(B31-B24)

G D O A Limit V (L19-L16)

Access rights Base(B23-B16)

Base(B15-B0)

Limit(L15-L0) 01

3

5

7

2

46

mô t đo n c a 80286ả ạ ủ mô t đo n t 80386ả ạ ừ

Base: xác đ nh đ a ch b t đ u c a đo nị ị ỉ ắ ầ ủ ạLimit: gi i h n kích th c t i đa c a đo nớ ạ ướ ố ủ ạ

Page 85: Microprocessor final ver1_part2

85/Chapter2

© DHBK 2005

Đánh đ a ch b nh ch đ b o vị ỉ ộ ớ ở ế ộ ả ệĐánh đ a ch b nh ch đ b o vị ỉ ộ ớ ở ế ộ ả ệ

• 80286 Base 24 bit: 000000H đ n FFFFFFH (16 MB)ế Limit 16 bit: kích th c đo n: t 1 đ n 64 KBướ ạ ừ ế Đ a ch v t lý= Base + đ l chị ỉ ậ ộ ệ 1 ch ng trình có th s d ng t i đa: 2*8K*64 K= 1GB b ươ ế ử ụ ố ộ

nh => b nh o (virtual memory)ớ ộ ớ ả

• 80386/486/Pentium Base 32 bit: 00000000H đ n FFFFFFFFH (4 GB)ế Limit 20 bit:

G=0: kích th c đo n: t 1 đ n 1MBướ ạ ừ ế G=1: kích th c đo n t 4K đ n 4 GB ướ ạ ừ ế

Đ a ch v t lý= Base + đ l chị ỉ ậ ộ ệ 1 ch ng trình có th s d ng t i đa: 2*8K*4 GB= 64 ươ ế ử ụ ố

Terabytes b nhộ ớ