BIU tạo ra địa chỉ vật lý cung cấp ra bên ngoài, bằng quá trình tính toán từ các địa chỉ logic quản lý trong chương trình.. Dữ liệu truyền với CPU sẽ được chuyển qua các c
Trang 1Nguyên tắc làm việc
của Intel 8088/8086
Phạm Thế Duy (ptduy@yahoo.com)
Trang 2SƠ ĐỒ KHỐI 8088/8086
BUS Interface
IPSSDSCSES
6 bytequeue
Execution Unit Control System
ALU
FlagsSP
+
EUBIU
EUExternal BUS
Hình 2.14: Sơ đồ khối vi xử lý 8086/8088
Trang 3Các khối chức năng
Sơ đồ khối của 8088/8086 bao gồm hai khối chính:
BIU (Bus Interface Unit): Thực hiện tất cả các giao tiếp với thế giới bên ngoài
EU (Execution Unit): Giải mã và thực hiện các
lệnh được lấy vào từ bộ nhớ
Trang 4Khối giao tiếp BUS (BIU)
BU cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển để truy cập các bộ nhớ và vào ra Khối này cũng cho phép giao tiếp với bộ đồng xử lý hoặc các bộ vi xử lý khác
Chức năng quan trọng nhất của BU là tự động kích hoạt quá trình lấy lệnh từ bộ nhớ bằng bộ tiền truy cập lệnh (Prefetch)
BU còn có chức năng cho phép quá trình lấy lệnh từ bộ nhớ thực hiện song song với các quá trình khác nhớ hàng đợi lệnh
6 byte (Queue)
BIU tạo ra địa chỉ vật lý cung cấp ra bên ngoài, bằng quá trình tính toán từ các địa chỉ logic quản lý trong chương trình Các địa chỉ mà BIU tạo ra cung cấp tới các bộ cài (Address Latch) và sẽ được định thời cung cấp ra bên ngoài tại các thời điểm thích hợp Dữ liệu truyền với CPU sẽ được chuyển qua các cổng đệm hai chiều (Data Transceivers).
Trang 5Khối giải mã lệnh (IU)
lệnh đã lấy trước đó giải mã và chuyển tới hàng đợi lệnh đã giải mã (Decoded Istruction queue) để
EU thực hiện.
có thể mã hoá ngắn nhất có thể, IU sẽ tạo ra các tín hiệu điều khiển cần thiết từ các mã lệnh này
nhớ của hệ thống sẽ yều cầu ít hơn, thời gian lấy lệnh sẽ được giảm ngắn.
Trang 6Khối thực hiện lệnh (EU)
Trước hết EU giải mã các lệnh từ hàng đợi lệnh bằng khối control system, sau đó khối này cung cấp các tín hiệu cần thiết điều khiển các khối khác trong CPU để thực hiện lệnh Với các lệnh cần giao tiếp với bên ngoài nó sẽ thực hiện thông qua BIU.
Các khối chức năng của EU bao gồm:
- Bộ điều khiển (Control System) thực hiện việc điều khiển việc thực hiện các lệnh.
- ALU là khối thực hiện các phép toán số học logic, cấu trúc của ALU thông thường có hai ngõ vào nhận hai toán hạng và một ngõ
ra cung cấp kết quả
Các thanh ghi sử dụng làm nơi lưu trữ dữ liệu sử dụng trong các phép tính và các giá trị địa chỉ cho phép EU lấy các toán hạng từ bên ngoài.
Trang 7Các thanh ghi của 8088/8086
CX, DX, DI, SI, BP, SP.
SS.
Trang 8Các thanh ghi đa năng (16 bit)
Trang 9Các thanh ghi đa năng
AX (Accumulator) thanh chứa cho lệnh nhân và chia.
MUL BL ; AX = AL * BL
BX (Base): Sử dụng làm thanh ghi địa chỉ cơ sở.
MOV AL,[BX] ; chép nội dung ô nhớ BX giữ địa chỉ.
MOV AH,[BX+03] ; chép nội dung ô nhớ có địa chỉ [BX+3] vào AH.
MOV CH,[BX+DI+9]
CX (Counter): Sử dụng làm bộ đếm số vòng lặp.
LOOP N ;trừ CX đi 1, lặp lại nhãn N khi CX ≠0.
DX (Data): Làm thanh ghi chứa dữ liệu trong các lệnh nhân chia
16 bit Làm thanh ghi giữ địa chỉ cổng vào ra.
OUT DX,BL ; chuyển BL ra cổng có địa chỉ DX
Trang 10Các thanh ghi đa năng (tiếp)
DI (Destination Index): thanh ghi chỉ số đích – giữ địa chỉ đích dữ liệu trong các lệnh về chuỗi Làm thanh ghi địa chỉ.
Trang 11 Một số lệnh tác động tới vùng nhớ ngăn xếp như:
push, pop, call, ret, và nhiều lệnh khác nữa.
Ngăn xếp là nơi tốt nhất để lưu trữ các giá trị tạm thời vào bộ nhớ.
Trang 12Chứa dữ liệu vào ngăn xếp
Từ ‘stack-ngăn xếp’ được sử dụng là do cách lưu trữ và lấy lại
dữ liệu trong vùng nhớ ngăn xếp cũng giống như việc sử dụng một ngăn xếp trong thực tế.
Có thể thực hiện ngăn xếp bằng các hộp Để tạo thành ngăn xếp trước hết đặt hộp A, sau đó tới B và cuối cùng là C.
B
A B C
Chú ý rằng chúng ta chỉ có thể lấy được hộp xếp vào ngăn xếp cuối cùng (Đỉnh ngăn xếp - Top of Stack – TOS) Như vậy trình tự phục hồi lại dữ liệu theo trình tự ngược lại khi xếp vào ngăn xếp (C tới B và cuối cùng là A).
Trang 13Chứa dữ liệu vào ngăn xếp
bằng lệnh PUSH
Thanh ghi con trỏ ngăn xếp SP (Stack Pointer) được sử dụng để truy cập ngăn xếp SP luôn trỏ tới giá trị cuối cùng được cất vào ngăn xếp.
Lệnh PUSH chứa dữ liệu vào đỉnh ngăn xếp.
PUSH AX ; SP= SP-1, M[SP] AX
Lệnh “push AX” tương ứng với:
SUB SP, 1 ; giảm SP đi 1
MOV [SP], AX ; ghi giá trị của AX vào đỉnh ngăn xếp
Các lệnh truy cập ngăn xếp có thể thực hiện với 16
hoặc 32 bit.
Trang 14Quan sát hoạt động lệnh
Địa chỉ cao
Địa chỉ thấp
SP
Trước lệnh PUSH AX
lastval ue ahal
Địa chỉ cao
Địa chỉ thấp
SP (SP mới =
SP cũ -1)
Sau lệnh PUSH AX
Mỗi ô nhớ 16 bit, ngăn xếp được truy cập 16 hoặc 32 bit.
Trang 15Nhiều lệnh PUSH liên tiếp
lastval ue
Địa chỉ cao
Địa chỉ thấp
SP
Trước
lastval ue ax bx cx
Địa chỉ thấp
Trang 16Đọc dữ liệu trong ngăn xếp bằng lệnh POP
Lệnh POP phục hồi một giá trị từ ngăn xếp:
POP AX ; AX M[SP] , SP= SP+1
Lệnh “pop AX” tương đương với các lệnh:
mov AX, [SP] ; đọc giá trị từ đỉnh ngăn xếp add sp, 1 ; tăng SP lên 1.
Trang 17Hoạt động của lệnh POP
FF65 23AB
Địa chỉ cao
Địa chỉ thấp
SP
Trước POP AX
FF65 23AB
Trang 18Hoạt động nhiều lệnh POP liên tiếp
FF65 23AB 357F D21B 38AC 23F4
Trang 19Ngăn xếp Overflow,
Underflow
ngăn xếp cuối cùng sẽ lớn hơn khoảng dung lượng dành cho nó.
Có thể dữ liệu ngăn xếp sẽ ghi tràn qua vùng nhớ chứa
mã lệnh hoặc vùng nhớ chứa dữ liệu khác (không phải
ngăn xếp).
Việc này gọi là tràn trên ngăn xếp (OVERFLOW).
ngăn xếp, con trỏ ngăn xếp có thể tăng lớn hơn giá trị điểm khởi động ngăn xếp Điều này được gọi là tràn dưới (UNDERFLOW).
xếp bằng đúng số dữ liệu đã cất vào ngăn xếp.
Trang 20Tổng kết về ngăn xếp
Là nơi chứa dữ liệu tạm thời.
Đoạn và con trỏ ngăn xếp SS:SP
Push và Pop (LIFO-Last In Fist Out)
SP : Giữ địa chỉ đỉnh ngăn xếp
Sau lệnh PUSH con trỏ SP sẽ giảm.
Trang 21Các thanh ghi đoạn (16 BIT)
Chế độ địa chỉ thực:
Physical address = Segment * 10H +offset
Trang 22Phân đoạn bộ nhơ
CS ES SS DS
Data Segment
Stack Segment
Extra Segment
Code Segment
System Memory
00000h FFFFFh
Trang 23Thanh ghi cờ
*
* PA
*ZS
T
DOPL
* NT IO
Cờ nhớ CF (Carry Flag).
CF=1 khi cộng tràn, trừ mượn.
Cờ chẵn lẻ PF (Parity Flag).
PF = 1 khi số bit 1 là một số chẵn.
Cờ dấu SF ( Sign Flag).
SF =1 khi kết quả có bit cao nhất là 1
Cờ tràn OF (Overflow Flag)
OF = 1 khi tràn bit 1 từ MSB-1 qua MSB.
Cờ ZERO ZF (Zero Flag).
ZF = 1 khi kết quả bằng 0.
Cờ nhớ phụ AF (Auxiliary Carry Flag ).
AF=1 khi tràn bit 1 từ D3 qua D4.
Trang 24Các cờ điều khiển trong thanh ghi cờ.
Cờ định hướng DF (Direction Flag).
Xác định hướng địa chỉ của các lệnh xử lý chuỗi
Cờ ngắt IF : (Interrupt Flag).
IF=1 cho phép ngắt.
Cờ bẫy TF: (Trap Flag).
Sử dụng chạy từng bước để sửa sai chương trình.
Cờ nhiệm vụ lồng nhau NT (Nested Tast).
Cho phép tiến triển hoặc chuyển nhiệm vụ.
Cờ chỉ thị mức đặc quyền vào ra (IOPL).
Chỉ thị mức đặc quyền của nhiệm vụ đang thực hiện.
Trang 25Các thanh ghi đặc biệt.
Thanh ghi con trỏ lệnh: (IP - Instruction Pointer).
Giữ địa chỉ độ dời của vùng nhớ chứa mã lệnh.
Tự động tăng lên 1 khi đọc xong một ô nhớ lệnh.
Khi điều khiển chương trình IP được thay đổi giá trị mới, (các lệnh CALL giá trị hiện hành sẽ được cất vào đỉnh ngăn xếp trước khi nạp giá trị mới Lệnh RET phục hồi giá trị của IP).
Thanh ghi trạng thái máy: (MSW – Machine Status Word)
TS (Task Set): là bit chuyển nhiệm vụ TS=1 1 xảy ra việc chuyển nhiệm vụ
EM (Emulate Processor Extention): Cho phép mô phỏng bộ đồng xử
lý toán học.
MP (Monitor Coprocesor Extention): Cho biết hệ thống có bộ đồng
xử lý toán học đang làm việc.
PE (Protect Mode Enable): Cho phép chế độ bảo vệ, khi bit này
được lập 80286 chuyển qua hoạc động ở chế độ bảo vệ Khi đã thiết lập, chỉ khi RESET bit này mới được xoá.
MP
TS EM PE
Trang 26Nguyên tắc làm việc của 8086
Trang 27Kết nối BUS hệ thống
8284
RES
DATA BUS :D0-D15
MN/MX IO/M
RESET RD READY WR
ALE
AD0-AD15 A16 -A 19
DT/R DEN
8086
CLK
DIR G
WR RD
WE OE ADDRESS BUS:A0-19
Cho phép giải
mã bộ nhớ Cho phép giải mã vào ra
I/O MEMORY
Vcc Vcc
Latch
Transceiver
Hình 5.3: Sơ đồ hoạt động trong Min Mode của 8086/8088
Trang 28ĐỌC BỘ NHƠ
Đọc bộ nhớ: Memory read.
Cấp địa chỉ A0 – 19, cấp ALE – Địa chỉ qua bộ chốt (Latch) tới bộ nhớ.
RD\ =0 , dữ liệu từ bộ nhớ đưa tới Transceiver.
DEN\=0, DT/R=0, dữ liệu qua Transceiver vào CPU.
Trang 29Address Access Time (TAVDV)
ALE
T1 CLOCK
AD7 - AD0 A15 - A8 A19/S6 - A16/S3
TCLAV
TDVCL
Trang 30GHI BỘ NHƠ
Ghi bộ nhớ: Memory write.
Cấp địa chỉ A0 – 19, cấp ALE =1 – Địa chỉ qua bộ chốt (Latch) tới bộ nhớ.
Cấp dữ liệu (ALE=0 , Không ảnh hưởng tới địa
chỉ) DEN\=0, DT/R=1, dữ liệu qua Transceiver tới bộ nhớ.
WR\ =0 , dữ liệu được ghi vào bộ nhớ.
Trang 31Memory Setup Time
(TDVWH)
ALE
T1 CLOCK
AD7 - AD0 A15 - A8 A19/S6 - A16/S3
Trang 32Kết nối BUS hệ thống
8284 RES
DATA BUS
MWTC MRDC
INTA AIOWC IOWC IORC AMWC MN/MX
RESET
AD0-AD15 A16 -A 19
8086
CLK
DIR G
WR RD
WE OE
S1 S0 S2
ADDRESS BUS
Cho phép giải mã bộ nhớ Cho phép giải mã vào ra
I/O MEMORY
S0 S2
Trang 33Các mạch đệm cài BUS
74LS373
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7OELE
Trang 34HOẠT ĐỘNG CỦA VI XỬ LY
Chu kỳ máy - Machine cycle
Lấy lệnh - Fetch, Giải mã lệnh - decode, Thực hiện lệnh - execute
Định thời vi xử lý - Processor timing
Chu kỳ BUS - Bus cycles
Đọc bộ nhớ/vào ra - Memory / IO read
Ghi bộ nhớ/ vào ra - Memory / IO write
Trang 35Thực hiện việc lưu trữ dữ liệu
;Giả sử khi bắt đầu chương trình.
Trang 36Bộ vi xử lý sẽ hoạt động như thế nào? How does the P works?
Lấy lệnh - Fetch
Tăng bộ đếm chương trình PC lên 1
Increment Program Counter (CS:IP) by 1
Giải mã lệnh - Decode
Thực hiện lệnh nếu cần.
Execute (if necessary)
Trang 37A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
CS:IP
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 38A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
1000:0005
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 39A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
10005
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 40A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
10005
LOW
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WRHIGH
FETCH
Trang 41A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WRHIGH
FETCH
Trang 42A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WRHIGH
FETCH
Trang 43A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0005+1 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
INC PC
Trang 44A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
INC PC
Trang 45A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
DECODE
mov [bx], ?
Trang 46A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
88
CS:IP
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 47A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
88
1000:0006
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 48A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
88
10006
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 49A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WRHIGH
FETCH
Trang 50A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WRHIGH
FETCH
Trang 51A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C
FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue 8807
10006
07
LOW
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WRHIGH
FETCH