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 ca
Trang 1Nguyên tắ c lá m viế c cú a
CS DS SS ES IO Internal Communications Registers
SUMMATION Address Bus 20 bits
Data Bus
Bus Control
Instruction Queue
8088 Bus
Cá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ớ
Khố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ớ s ắp vào hàng đợi lệnh sẵn sàng cho EU giải mã thực hiện Nhờ hà ng đợi lệnh (Queue) 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
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 2Khối thực hiện lệnh (EU)
Chức năng của EU:
EU giải mã cá c lệnh từ hà ng đợi lệnh bằng khối EU
control.
Thực hiện các phép tính số họ c và logic bằng ALU.
Tính toán các địa chỉ tá c động (EA – Effective Address )
cho quá trì nh truy cập bộ nhớ.
Chỉ thị đoạn bộ nhớ sẽ sử dụ ng bằng cách chọn các
thanh ghi đoạn.
Các khối chức năng của EU bao gồm:
Bộ điều khiển (EU Control)
Khối thực hiện các phép toán số học logic (ALU)
Các cờ trạ ng thái (Flags).
Các thanh ghi (Registers)
Khối điều khiển EU
Lệnh được BIU lấy vào hàng đợi, trong khi EU control lấy lệnh đã lấy trước đó giải mã và cung cấp các tín hiệu điều khiển để thực hiện lệnh.
Với chức năng giải mã lệnh, các lệnh ngoài bộ nhớ có thể mã hoá ngắn nhất có thể, EU control 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
Bằng cách sử dụng bộ giải mã lệnh, dung lượng 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.
Khối số họ c và logic (ALU)
Thực hiện các phép toán số họ c và logic.
Có hai ngõ và o cho nhiều nhất hai toán hạng,
một ngõ ra cho kết quả.
Hai toán hạng vào có thể được lấy từ hai
thanh ghi, một từ thanh ghi một từ bộ nhớ.
Trạng thái của kết quả được cung cấp tới các
cờ (Flags).
Các thanh ghi của 8088/8086
CX, DX, DI, SI, BP, SP.
SS.
Các thanh ghi đa năng (16 bit)
Đều có thể sử dụ ng chứa dữ liệu 16 bit.
AX, BX, CX và DX có thể chia thanh hai phần
8 bit.
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
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ỉ.
MOV AH,[DI]
MOV BH,[DI+7]
MOVSB
SI (Source Index): thanh ghi chỉ số nguồn – giữ địa chỉ nguồn dữ
liệu trong các lệnh về chuỗi Làm thanh ghi địa chỉ.
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 3Chứ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).
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.
Đị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.
lastval ue
Địa chỉ cao
Địa chỉ thấp
SP
Trước
lastval ue bx cx
Địa chỉ thấp
Đọ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.
FF65 23AB
Địa chỉ cao
Địa chỉ thấp
SP
Trước POP AX
FF65 23AB
Nếu liên tục cất dữ liệu vào ngăn xếp mà không lấy dữ liệu ra thì 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).
Nếu lấy dữ liệu ra khỏi ngăn xếp nhiều hơn các giá trị đã cất vào 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).
Để ngăn xếp được sử dụ ng tốt cần phải lấy dữ liệu ra khỏi ngăn xếp bằng đúng số dữ liệu đã cất vào ngăn xếp.
Trang 4Tố 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 First Out)
SP : Giữ địa chỉ đỉnh ngăn xếp
Sau lệnh PUSH con trỏ SP sẽ giả m.
Cá c thanh ghi đoá n (16 BIT)
CS: Code Segment – Đoạn mã lệnh.
DS: Data Segment – Đoạn dữ liệu.
SS: Stack Segment – Đoạn ngăn xếp.
ES:Extra Segment – Đoạn mở rộng.
Chế độ địa chỉ thực:
Physical address = Segment * 10H +offset
16-bit Offset Address
20-bit Physical Address
Trang 5Thanh ghi cờ
*
* PA
*ZST
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.
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á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).
CÁ C TÍ N HIẾ U CÚ A 8088/ 8086
MAXIMUM MODE
MINIMUM MODE
/RQ,/GT0 /LOCK /S2 /S1 /S0 QS0 QS1
/TEST READY RESET
/RQ,/GT1
HOLD /WR IO/M DT/R /DEN ALE /INTA HLDA
MAXIMUM MODE
MINIMUM MODE
8088
GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK
Vcc A15 A16,S3 A17,S4 A18,S5 A19,S6 MN,/MX /RD
/RQ,/GT0 /LOCK /S2 /S1 /S0 QS0 QS1
/TEST READY
/RQ,/GT1
HOLD /WR IO/M DT/R /DEN ALE /INTA HLDA high /SS0
Trang 6KẾ T NỐ I HẾ THỐ NG 8086/ 8
Vi xử lý 8086/8 cần các mạch hỗ trợ trong để kết
nối mạch hệ thống.
8086/8 ghép (multiplex) các đường địa chỉ và dữ
liệu chung với nhau.
Việc ghép BUS làm giảm số chân của vi xử lý ,
tuy nhiên cần các mạch để tá ch (demultiplex)
các tín hiệu địa chỉ và dữ liệu để kết nối tới các
bộ nhớ và và o ra.
Các bộ tá ch này còn làm nhiệm vụ tương thích
giao tiếp giữa VXL và cá c chip nhớ và và o ra
bên ngoài.
KẾ T NỐ I BUS HẾ THỐ NG 8086 TRONG MIN MODE
8284RES
DATA BUS :D0-D15
MN/MXIO/MCLK INTARESET RDREADY WRALEAD0-AD15A16 -A 19
DT/RDEN
8086
CLK
DIRG
WR RD
WE OEADDRESS BUS:A0-19
Cho phép giải mã bộ nhớ Cho phép giải mã và o ra
I/OMEMORY
VccVcc
Latch
Transceiver
Hình 5.3: Sơ đồ hoạ t động trong Min Mode của 8086/8088
KẾ T NỐ I BUS HẾ THỐ NG 8086 TRONG MAX MODE
74LS245x2
CLKREADYRESET
MN/MX#
S0#
S2#
8288 Bus Controller
MRDC#MWTC#AMWC#IORC#IOWC#AIOWC#INTA#CLK
74LS373x3ADDR/DATA
LEOE#
ALE
DENDT/R#
BHE#
AD15:AD0A19:A16
74LS245x2
EN#DIR
D15:D0
A19:A0, BHE#INTR
i8086 Circuit - Maximum Mode
Trang 7KẾ T NỐ I MÁ CH TRONG HẾ THỐ NG 8086/ 8
Với BUS địa chỉ có thể sử dụ ng các mạch
chốt (ví dụ 74LS373).
BUS dữ liệu cần sử dụ ng các bộ đệ m hai
chiều (ví dụ 74LS245).
Hệ thống cần chip tạo Clock và đồng bộ tí n
hiệu RESET.
Trong Max mode hệ thống cần thêm bộ điều
khiển BUS để tạ o ra các tín hiệu điều khiển
bộ nhớ và và o ra.
BỐ TÁ O CLOCK 8284
BỐ CHỐ T ĐÍ A CHÍ
Trang 8CHỐ T ĐÍ A CHÍ TRONG HẾ THỐ NG 8086
Demultiplex bus đí a chí trong hế thố ng 8088
Trang 9BỐ ĐẾ M HAI CHIẾ U CHO BUS DỮ LIẾ U
ĐẾ M DỮ LIẾ U HAI CHIẾ U TRONG HẾ THỐ NG 8086
Trang 10ĐẾ M BUS TRONG HẾ THỐ NG 8086
Cá c tí n hiế u cơ bá n trong cá c chu ký đoćghi
ĐÓ 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 11Address Access Time (TAVDV)
ALE CLOCK
AD7 - AD0 A15 - A8 A19/S6 - A16/S3
DT/R
IO/M
RD DEN
A19 - A0 from 74LS373 to memory
A15 - A8
A19 - A0 from 74LS373
D7 - D0 from memory to 74LS245 D7 - D0 (from memory)
A7 - A0 D7 - D0 from
74LS245 garbage
TAVDV 3TCLCL
TCLAV
TDVCL
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ớ.
Memory Setup Time
(TDVWH)
ALE
T1 CLOCK
T2 T3 T4
AD7 - AD0 A15 - A8 A19/S6 - A16/S3
TCVCTX
Trang 12Kế t nố i BUS hế thố ng
8284
RES
DATA BUS
MWTC MRDC
INTA AIOWC IOWC IORC AMWC MN/MX
CLK DENDT/RRESET
READY ALE
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
Latch
Transceiver8288
Hình 5.4: Sơ đồ hoạ t động của 8086/8088 trong chế độ max
Kế t nố i hế thố ng có bố điế u khiế n ngắ t
mode
Trang 13Tí n hiế u điế u khiế n Max mode
Trang 14Bank Write Control Logic Bank Read Control Logic
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
Thực hiện việc lưu trữ dữ liệu
;Giả sử khi bắt đầu chương trình.
Sẽ được thực hiện như thế nà o?
Bộ vi xử lý sẽ hoạ t động như thế nà o?
How does the P works?
Increment Program Counter (CS:IP) by 1
Execute (if necessary)
Trang 1510000 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 :
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 :
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 1610000 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 :
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
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
HIGH
FETCH
Trang 17: : 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 :
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 :
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 1810000 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 :
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 :
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 1910000 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
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 :
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