Microprocessor final ver1_part2
Transcript of 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ộ ử ự ế
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
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
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
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
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
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
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
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)ế ộ ự
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 ?
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
.............
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
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
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ở
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
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
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
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
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
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
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
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
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
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
25/Chapter2
© DHBK 2005
Intel 8086Intel 8086
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
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ộ ớ ự
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ươ ứ ụ
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)
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
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ệ ề ạ ươ ứ ụ
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
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
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ộ ộ ồ ư
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ố ậ ớ
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
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)
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
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
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
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
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
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
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ữ ệ ừ ở
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
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ụ ể ệ
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
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
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]
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ồ
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]
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ấ ộ ủ ờ ế
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
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ấ ừ ừ ỉ ế ồ ư ờ
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
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
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
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
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
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
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ố ấ
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ố ấ
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]
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ệ ị ố ủ ạ
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ậ ậ ờ
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
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
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
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
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ệ ị ạ ượ ạ
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ị ỉ ở ế ộ ả ệ ở ừ
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
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ả ế
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]
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ả
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ự ệ ộ ị
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ặ
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
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
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ụ ọ ủ
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ấ ờ ừ ế
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
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ả ạ ứ ề ị ỉ ắ ầ ủ ạ
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ớ ạ ướ ố ủ ạ
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ộ ớ